我正在制作一個簡單的程式,要求用戶在 3x3 和 4x4 陣列之間進行選擇。當他們選擇他們想要的陣列時,它將初始化一個該大小的陣列,程式將要求用戶一個一個輸入值(先按列上升,然后按行上升)。在輸入陣列的所有值后,它將以“類似表格”的結構顯示陣列中的值,并顯示該陣列中所有值的總和。代碼非常重復,可能很難除錯。我還沒有為此使用回圈的邏輯,但我想要一個回圈,反復要求用戶將值輸入到 4x4 陣列中,從第 1 行第 1 列到第 4 行第 4 列(當它到達第 4第一行的列,然后要求用戶輸入第二行的第一列,
#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;
}
uj5u.com熱心網友回復:
由于您可以將 3x3 矩陣存盤在 4x4 矩陣中,因此您無需宣告 2 個矩陣。
int square[4][4];
宣告一個變數呼叫大小??來存盤正方形的大小。
int size;
if (choice == 1)
{
size = 3;
}
else
{
size = 4;
}
現在您可以遍歷陣列:
for (int row = 0; row < size; row )
{
for (int column = 0; column < size; column )
{
printf(“Square[%d][%d]=“);
scanf(“%d”, &square[row][column]);
}
}
使用類似的回圈進行列印
uj5u.com熱心網友回復:
如果您了解指標,它將使生活變得輕松。但是如果你不這樣做,一個簡單的方法就是將 n 作為輸入,然后遍歷它:
int main(){
int n, i, j;
scanf(“%d”, &n);
int arr[n][n];
for(i = 0; i < n; i ){
for(j = 0; j < n; j ){
printf(“Enter the value at [%d][%d]”, i, j);
scanf(“%d”, &arr[i][j]);
}
}
}
PS:請忽略縮進,因為我是從手機打字的。
此外,您不需要 switch case,因為您可以直接從用戶輸入分配大小,除非您特別希望 1 對應大小 3 和 2 對應大小 4。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/324528.html
上一篇:如何遍歷多列以生成多個交叉表
下一篇:將主要游戲回圈轉化為功能
