我查看不同的网站..但任何让我理解的问题是什么..我刚开始用C编程。任务是使用2维数组绘制棋盘并构建一个交替黑白的功能(使用适当的符号)。
#include <stdio.h>
char makeChessBoard(int length,int width, char board[width][length]) {
int i;
int j;
for (i = 0; i < width; i++) {
// printf("\n");
for (j = 0; j < length; j++) {
if((i+j)%2 == 0)
board[i][j] = "[#]";
else
board[i][j] = "[ ]";
}//for
}//for
//return 0;
}//makeChessBoard
int main()
{
int x = 9;
int y = 9;
char initialBoard[x][y];
char chessBoard[x][y];
makeChessBoard(initialBoard[x][y],x,y);
for (int i = 0; i < x; i++) {
printf("\n");
for (int j = 0; j < y; j++) {
printf("%s", chessBoard[i][j]);
}//for
}//for
}//main
答案 0 :(得分:1)
在
上发出警告makeChessBoard(initialBoard[x][y],x,y);
应该是
makeChessBoard(x, y, initialBoard);
board[i][j] = "[#]"; /* you can't assign a string, use a char e.g: '#' */
同样适用于
board[i][j] = "[ ]";
最后,您正在打印字符,请使用:
printf("%c", chessBoard[i][j]);
而不是
printf("%s", chessBoard[i][j]);
答案 1 :(得分:0)
您可以像这样致电makeChessboard
:
makeChessBoard(initialBoard[x][y],x,y);
但它的定义如下:
char makeChessBoard(int length,int width, char board[width][length])
请注意,您将数组传递到错误的参数位置。
此外,您传递的是特定的数组元素(在x,y),而不是整个数组。
答案 2 :(得分:0)
尝试运行启用了警告的代码(gcc -Wall ...)并检查编译器会告诉您什么。 segfault的直接原因可能是char而不是char *。
答案 3 :(得分:0)
1)您调用函数makeChessBoard(initialBoard[x][y],x,y);
和函数定义应该是不同的:(int length,int width, char board[width][length])
。
2)在函数makeChessBoard中将board[i][j] = "[#]";
更改为board[i][j] = '#';
。同样,将board[i][j] = "[ ]";
更改为board[i][j] = ' ';
。
3)打印时,您应该在填充此2D数组中的值时打印initialBoard
的值,因此将printf("%s", chessBoard[i][j]);
更改为printf("[%c]", initialBoard[i][j]);
。
4)数组索引从零开始,因此如果要打印棋盘x
,y
应设置为8
。
#include <stdio.h>
char makeChessBoard(int length,int width, char board[width][length])
{
int i;
int j;
for (i = 0; i < width; i++)
{
for (j = 0; j < length; j++)
{
if( ((i+j) % 2) == 0)
board[i][j] = '#';
else
board[i][j] = ' ';
}//for
}//for
}//makeChessBoard
int main()
{
int x = 8;
int y = 8;
int i,j;
char initialBoard[x][y];
//char chessBoard[x][y]; /* You are not using this 2-D array */
makeChessBoard(x,y,initialBoard);
for (i = 0; i < x; i++)
{
for (j = 0; j < y; j++)
{
printf("[%c]", initialBoard[i][j]);
}//for
printf("\n");
}//for
}//main
<强>输出强>:
[#][ ][#][ ][#][ ][#][ ]
[ ][#][ ][#][ ][#][ ][#]
[#][ ][#][ ][#][ ][#][ ]
[ ][#][ ][#][ ][#][ ][#]
[#][ ][#][ ][#][ ][#][ ]
[ ][#][ ][#][ ][#][ ][#]
[#][ ][#][ ][#][ ][#][ ]
[ ][#][ ][#][ ][#][ ][#]