#include<stdio.h> #define ROW 21 #define COL 21 int main(void) { int i,j,m,n,a=1,b,c=1; //w[*][*]代表数组的主体棋盘和字母坐标,y[*]代表棋盘的数字坐标 int w[ROW][COL]; char ch; for(i=0;i<20;i++) { for(j=0;j<21;j++) { if(i==0) { if(j==0) { ch=0; w[0][0]=ch; printf("%c ",w[0][0]); } else { ch=0; w[0][j]=ch; printf("%c ",w[0][j]); } } if(j==0&&i>0) { ch=97; w[i][j]=ch; printf("%c ",w[i][j]); ch=ch+i; } if(i>=1) { ch=46; w[i][j]=ch; if(j<10) { printf(" %c ",w[i][j]); } if(j>10) { printf(" %c",w[i][j]); } } } printf("\n"); }ch=ch+1; }这个棋盘代码有什么错误吗,希望帮忙进行改进
时间: 2023-07-15 22:12:10 浏览: 77
这个代码有几个问题:
1. 在主函数中,变量m和n没有用到,直接删除即可。
2. 在行列循环中,当i=0且j=0时,应该将w[0][0]的值设为' ',而不是0。
3. 在行列循环中,当i=0且j>0时,应该将w[0][j]的值设为字母表中对应的字母(例如j=1时为'a'),而不是0。
4. 在行列循环中,当i>0时,应该将w[i][j]的值设为'.',而不是0。
5. 在行列循环中,当j<10时,应该在输出语句中加上一个空格,以保持棋盘上数字坐标的对齐。
下面是改进后的代码:
```
#include <stdio.h>
#define ROW 21
#define COL 21
int main(void) {
int i, j;
char ch;
int w[ROW][COL];
for (i = 0; i < 20; i++) {
for (j = 0; j < 21; j++) {
if (i == 0) {
if (j == 0) {
ch = ' ';
w[0][0] = ch;
printf("%c ", w[0][0]);
} else {
ch = 'a' + j - 1;
w[0][j] = ch;
printf("%c ", w[0][j]);
}
} else {
if (j == 0) {
ch = 'a' + i - 1;
w[i][j] = ch;
printf("%c ", w[i][j]);
} else {
ch = '.';
w[i][j] = ch;
if (j < 10) {
printf(" %c ", w[i][j]);
} else {
printf(" %c", w[i][j]);
}
}
}
}
printf("\n");
}
return 0;
}
```
阅读全文