以下功能:
char **fill(char **array, int *size) {
int i,j;
for ( i = 0; i < *size; i++ ) {
for (j = 0; j < *size; j++ ) {
array[i][j] = '-';
}
}
return array;
}
输入:5
提供输出:
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
如何编辑代码以获得如下输出:
0 - - - - -
1 - - - - -
2 - - - - -
3 - - - - -
4 - - - - -
我的函数中的“数组”是给定大小为n的字符的二维数组。当我得到n的输入时,我试图为n + 1个字符分配每行而不是n,并使这样的函数成为:
char **fill(char **array, int *size) {
int i,j;
for ( i = 0; i < *size; i++ ) {
array[i][0] = 'i';
for (j = 1; j < ( *size + 1 ); j++ ) {
array[i][j] = '-';
}
}
return array;
}
但它不起作用。
输入:5
输出:
i - - - - -
i - - - - -
i - - - - -
i - - - - -
i - - - - -
答案 0 :(得分:1)
您正在打印字符'i',但您必须打印从'0'到'9'的字符:
for ( i = 0; i < *size; i++ ) {
array[i][0] = '0' + i; // <-
for (j = 1; j < ( *size + 1 ); j++ ) {
array[i][j] = '-';
}
}
从'0'到'9'的字符具有从48到57的ASCII代码。'0' + i
表示具有ASCII代码48+i
的字符。上面的代码从0到9工作。如果i==10
,则打印':',因为':'是ASCII码58(48 + 10)的字符。
请参阅ASCII table和问题Char - ASCII relation。
答案 1 :(得分:0)
我认为array[i][0] = 'i';
你打算写array[i][0] = '0'+i;
...
请记住,这是修改数组。如果你想打印数组而不修改它,我们需要看到那个代码。