如何在C语言中为9×11二维数组的第一行和第一列赋值?
问题分析与修正代码
原代码的核心问题
- 数组定义错误:
int arr[i][j];中i和j未初始化,属于未定义行为。C语言里数组维度需是已知常量或已初始化变量,这里直接指定固定维度即可。 - 填充逻辑错误:原代码用
value++遍历填充所有元素,完全不符合“第一行、第一列单独填充,其余为0”的需求。 - 语法错误:
printf中的换行符应为\n,而非直接换行,否则编译会报错。
修正后的代码
假设你要创建9行11列的数组(即arr[9][11]),结合需求修正如下:
#include <stdio.h> int main() { // 定义9×11的二维数组,初始化为全0 int arr[9][11] = {0}; int i, j; // 填充第一行(第0行):0到9(对应列0到9) for (j = 0; j < 10; j++) { arr[0][j] = j; } // 第一行第10列保持0,符合空白位置填充0的要求 // 填充第一列(第0列):0到8(对应行0到8,因为数组只有9行) // 注:你提到的"填充0到11"与9行的数组维度矛盾,这里按实际行数填充0-8 for (i = 0; i < 9; i++) { arr[i][0] = i; } // 打印数组,用%2d让输出对齐更易读 for (i = 0; i < 9; i++) { for (j = 0; j < 11; j++) { printf("%2d ", arr[i][j]); } printf("\n"); } return 0; }
补充说明
如果你的实际需求是11行9列的数组(这样第一列可以填充0到10,更贴合你“0到11”的表述,可能是维度表述颠倒),可以调整数组定义和循环范围:
#include <stdio.h> int main() { int arr[11][9] = {0}; int i, j; // 第一行(0行)填充0到8(9列) for (j = 0; j < 9; j++) { arr[0][j] = j; } // 第一列(0列)填充0到10(11行) for (i = 0; i < 11; i++) { arr[i][0] = i; } // 打印数组 for (i = 0; i < 11; i++) { for (j = 0; j < 9; j++) { printf("%2d ", arr[i][j]); } printf("\n"); } return 0; }
内容的提问来源于stack exchange,提问作者issy
相关产品推荐
相关产品推荐

