矩阵操作后正确输出问题:C语言代码错误排查求助
修复矩阵操作的C代码问题
问题背景
给定一个N行M列的矩阵,需要对每个元素执行以下操作:
- 若元素值等于当前行号和当前列号,则该值加3;
- 若元素值仅等于当前行号,则该值加2;
- 若元素值仅等于当前列号,则该值加1;
- 其他情况保持元素值不变。
输入格式:
- 第一行输入矩阵行数N和列数M;
- 后续N行输入矩阵的元素。
约束条件:
- 1 ≤ N, M ≤ 10;
- 0 ≤ Arr[i][j] ≤ 100。
输出要求:打印执行操作后的完整矩阵。
样例输入
3 3 1 1 1 1 1 1 1 1 1
样例输出
4 3 3 2 1 1 2 1 1
错误代码
#include <stdio.h> int main(){ //here taking the row and column from the users int row; int column, temp; printf("enter row and column\n"); scanf("%d%d", &row, &column); int arr[row][column]; //here taking the matrix input through the users for(int i = 0; i < row; i++){ for(int j = 0; j < column; j++){ scanf("%d", &arr[i][j]); } for (int i=0; i<row; i++){ for(int j=0; j<column; j++ ){ if (arr[i][j] == arr[i+1] && arr[i][j]== arr[j+1]){ temp= arr[i][j]+3; printf("%d", temp); } else if (arr[i][j] == arr[i+1]){ temp= arr[i][j]+ 2; printf("%d", temp); } else if (arr[i][j]== arr[j+1]){ temp= arr[i][j]+ 1; printf("%d", temp); } else{ temp= arr[i][j]; printf("%d", temp); } } } } return 0; }
问题分析
这段代码存在三个核心问题:
- 循环嵌套逻辑错误:输入矩阵的外层
for循环内部直接嵌套了处理打印的循环,导致输入第一行后就立刻开始处理,后续行的输入会被跳过,矩阵数据读取不完整。 - 行号列号判断完全错误:代码用
arr[i+1]、arr[j+1]来匹配行号列号,这和需求完全不符——需求中的行号是当前元素的行索引+1(比如第一行对应行号1),列号是列索引+1,而非数组中其他元素的值。 - 输出格式不规范:打印时没有处理元素间的空格和行末换行,输出格式和样例要求不符。
修复后的代码
#include <stdio.h> int main() { int row, column; scanf("%d%d", &row, &column); int arr[row][column]; // 完整读取矩阵所有元素 for (int i = 0; i < row; i++) { for (int j = 0; j < column; j++) { scanf("%d", &arr[i][j]); } } // 处理并打印矩阵 for (int i = 0; i < row; i++) { for (int j = 0; j < column; j++) { int val = arr[i][j]; int current_row = i + 1; // 行号从1开始计数 int current_col = j + 1; // 列号从1开始计数 if (val == current_row && val == current_col) { val += 3; } else if (val == current_row) { val += 2; } else if (val == current_col) { val += 1; } // 每个元素后加空格,保证格式 printf("%d ", val); } // 每行结束后换行 printf("\n"); } return 0; }
代码说明
- 修正循环结构:把输入矩阵的循环和处理打印的循环完全分离,确保先完整读取所有数据再处理。
- 正确匹配行号列号:用
i+1和j+1表示当前元素的行号和列号,符合题目样例的计数逻辑。 - 规范输出格式:每个元素后打印空格,每行结束后换行,输出格式和样例一致。
- 移除多余提示:去掉了不必要的输入提示语句,避免干扰输入流程。
内容的提问来源于stack exchange,提问作者ZABIA HOSSAIN
相关产品推荐
相关产品推荐

