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;
}