【发布时间】:2021-12-04 14:04:37
【问题描述】:
我正在制作一个简单的程序,要求用户在 3x3 和 4x4 数组之间进行选择。当他们选择他们想要的数组时,它将初始化一个该大小的数组,程序将要求用户一个一个地输入值(先按列上升,然后按行上升)。在他们输入数组的所有值后,它将以“类似表格”的结构显示数组中的值,并显示该数组中所有值的总和。代码非常重复,可能很难调试。我还没有为此使用循环的逻辑,但我想要一个循环反复要求用户将值输入到 4x4 数组中,从第 1 行第 1 行到第 4 行第 4 列(当它到达第 4第 1 行的列,然后要求用户输入第 2 行的第 1 列,依此类推,直到数组结束。
#include <stdio.h>
int main(){
int choice;
while(choice != 1 && choice !=2){
printf("Choose Matrix Size:\n");
printf("1. 3x3\n");
printf("2. 4x4\n");
printf("Choice: ");
scanf("%d", &choice);
}
int sumRow1, sumRow2, sumRow3, sumRow4, sumMatrix3, sumMatrix4;
switch(choice){
case 1:
int square3[3][3];
printf("Enter value for row 1 column 1: ");
scanf("%d", &square3[1][1]);
printf("Enter value for row 1 column 2: ");
scanf("%d", &square3[1][2]);
printf("Enter value for row 1 column 3: ");
scanf("%d", &square3[1][3]);
printf("Enter value for row 2 column 1: ");
scanf("%d", &square3[2][1]);
printf("Enter value for row 2 column 2: ");
scanf("%d", &square3[2][2]);
printf("Enter value for row 2 column 3: ");
scanf("%d", &square3[2][3]);
printf("Enter value for row 3 column 1: ");
scanf("%d", &square3[3][1]);
printf("Enter value for row 3 column 2: ");
scanf("%d", &square3[3][2]);
printf("Enter value for row 3 column 3: ");
scanf("%d", &square3[3][3]);
printf("\n");
printf("Matrix Results:\n");
printf("| %d %d %d |\n", square3[1][1], square3[1][2], square3[1][3]);
printf("| %d %d %d |\n", square3[2][1], square3[2][2], square3[2][3]);
printf("| %d %d %d |\n", square3[3][1], square3[3][2], square3[3][3]);
sumRow1 = square3[1][1] + square3[1][2] + square3[1][3];
sumRow2 = square3[2][1] + square3[2][2] + square3[2][3];
sumRow3 = square3[3][1] + square3[3][2] + square3[3][3];
sumMatrix3 = sumRow1 + sumRow2 + sumRow3;
printf("Matrix Sum: %d", sumMatrix3);
break;
case 2:
int square4[4][4];
printf("Enter value for row 1 column 1: ");
scanf("%d", &square4[1][1]);
printf("Enter value for row 1 column 1: ");
scanf("%d", &square4[1][2]);
printf("Enter value for row 1 column 1: ");
scanf("%d", &square4[1][3]);
printf("Enter value for row 1 column 1: ");
scanf("%d", &square4[1][4]);
printf("Enter value for row 1 column 1: ");
scanf("%d", &square4[2][1]);
printf("Enter value for row 1 column 1: ");
scanf("%d", &square4[2][2]);
printf("Enter value for row 1 column 1: ");
scanf("%d", &square4[2][3]);
printf("Enter value for row 1 column 1: ");
scanf("%d", &square4[2][4]);
printf("Enter value for row 1 column 1: ");
scanf("%d", &square4[3][1]);
printf("Enter value for row 1 column 1: ");
scanf("%d", &square4[3][2]);
printf("Enter value for row 1 column 1: ");
scanf("%d", &square4[3][3]);
printf("Enter value for row 1 column 1: ");
scanf("%d", &square4[3][4]);
printf("Enter value for row 1 column 1: ");
scanf("%d", &square4[4][1]);
printf("Enter value for row 1 column 1: ");
scanf("%d", &square4[4][2]);
printf("Enter value for row 1 column 1: ");
scanf("%d", &square4[4][3]);
printf("Enter value for row 1 column 1: ");
scanf("%d", &square4[4][4]);
printf("\n");
printf("Matrix Result:\n");
printf("| %d %d %d %d |\n", square4[1][1], square4[1][2], square4[1][3], square4[1][4]);
printf("| %d %d %d %d |\n", square4[2][1], square4[2][2], square4[2][3], square4[2][4]);
printf("| %d %d %d %d |\n", square4[3][1], square4[3][2], square4[3][3], square4[3][4]);
printf("| %d %d %d %d |\n", square4[4][1], square4[4][2], square4[4][3], square4[4][4]);
sumRow1 = square4[1][1] + square4[1][2] + square4[1][3] + square4[1][4];
sumRow2 = square4[2][1] + square4[2][2] + square4[2][3] + square4[2][4];
sumRow3 = square4[3][1] + square4[3][2] + square4[3][3] + square4[3][4];
sumRow4 = square4[4][1] + square4[4][2] + square4[4][3] + square4[4][4];
sumMatrix4 = sumRow1 + sumRow2 + sumRow3 + sumRow4;
printf("Matrix Sum: %d", sumMatrix4);
break;
}
return 0;
}
【问题讨论】:
-
在 C 中,提醒数组从
0而不是1开始,因此请确保您使用0而不是1访问第一个索引