1. 题目
输出中国象棋棋盘。
2.分析
首先需要知道中国象棋棋盘布局。
|-------------------|
| 車馬象士将士象馬車 |
| 炮 炮 |
| 卒 卒 卒 卒 卒 |
|-------------------|
|-------------------|
| 兵 兵 兵 兵 兵 |
| 炮 炮 |
| 車馬象士帥士象馬車 |
|-------------------|
根据上述布局依次输出。
3. 实例代码
#include <stdio.h>
#include <windows.h>
int main() {
// 防止中文乱码
SetConsoleOutputCP(CP_UTF8);
const char* arr[8];
// 使用动态内存分配来初始化每个元素指向的字符串内容
arr[0] = (const char*)malloc(sizeof(char) * 24);
strcpy((char*)arr[0], " 車馬象士将士象馬車 ");
arr[1] = (const char*)malloc(sizeof(char) * 24);
strcpy((char*)arr[1], " 炮 炮 ");
arr[2] = (const char*)malloc(sizeof(char) * 36);
strcpy((char*)arr[2], " 卒 卒 卒 卒 卒 ");
arr[3] = (const char*)malloc(sizeof(char) * 36);
strcpy((char*)arr[3], "-------------------");
arr[4] = (const char*)malloc(sizeof(char) * 36);
strcpy((char*)arr[4], "-------------------");
arr[5] = (const char*)malloc(sizeof(char) * 36);
strcpy((char*)arr[5], " 兵 兵 兵 兵 兵 ");
arr[6] = (const char*)malloc(sizeof(char) * 36);
strcpy((char*)arr[6], " 炮 炮 ");
arr[7] = (const char*)malloc(sizeof(char) * 36);
strcpy((char*)arr[7], " 車馬象士帥士象馬車 ");
int nRow = 0;
printf("中国象棋棋盘:\n");
while(nRow < 8) {
printf(arr[nRow]);
nRow++;
// 每一行后换行
printf("\n");
}
// 释放动态分配的内存
for (int i = 0; i < 8; i++) {
if (arr[i] && ((char*)arr[i])!= NULL) {
free((void*)arr[i]);
}
}
return 0;
}