C
C - 矩阵主和反对角线(替换)(C - Matrix Main and Anti Diagonals (Replace))我有一个任务,我需要专业人士的帮助。
我的任务是:用户输入矩阵[8] [8]的行数和列数,并禁止使用IF。 稍后用户输入该矩阵的所有元素,使用循环并输出该矩阵。
代码如下:
#include <stdio.h>int main () { int matrix[10][10]; int nrows, ncols, i, j; printf("Enter number of rows: "); //user enters number of rows scanf("%d", &nrows); if(nrows < 4){ printf("\n Out of range, please try again"); exit(5); } printf("Enter number of columns: "); //user enters number of columns scanf("%d", &ncols); if(ncols < 4){ printf("\n Out of range, please try again"); exit(5); } printf("Enter matrix elements: "); //user enters all the elements for Matrix for(i = 0; i < nrows; i++){ for(j = 0; j < ncols; j++){ scanf("%d",&matrix[i][j]); } printf("\n");} printf("This is your matrix: \n"); for(i = 0; i < nrows; i++){ for(j = 0; j < ncols; j++){ printf("%d \t",matrix[i][j]);} printf("\n");} return 0; }现在我需要添加一个东西,我想对这个矩阵采取对角线和反对角线,并用大写X替换那里的所有元素。我不知道,它将是什么样的矩阵,就像它可以是矩阵[4] [6]或矩阵[7] [4],所以我需要做一些与用户可以在这个程序中输入的任何矩阵一起工作的东西。
这个任务的例子(在这个程序中我不能输入小于[4] [4],但是对于这个例子我会这样做):
User enters rows - 3User enters columns - 3User enters elements : 1 2 3 4 5 6 7 8 9Output : 1 2 3 4 5 6 7 8 9在这里我需要做这样的事情:
X 2 X4 X 6X 8 X如果用户输入的不是方形矩阵,例如:
User enters rows: 3User enters rows: 4User enters elements: 1 2 3 4 5 6 7 8 9Out matrix: 1 2 3 45 6 7 89 0 1 2After replacing with X:X 2 3 X5 X X 89 X X 2用大写Xs替换对角线和反对角线。
请帮忙吗?
I have a task and i need help from pros.
My task is: User inputs number of rows and columns for matrix[8][8], with some prohibitions using IF. Later user enters all the elements for this matrix, using loops and outputting this matrix.
Here is the code :
#include <stdio.h>int main () { int matrix[10][10]; int nrows, ncols, i, j; printf("Enter number of rows: "); //user enters number of rows scanf("%d", &nrows); if(nrows < 4){ printf("\n Out of range, please try again"); exit(5); } printf("Enter number of columns: "); //user enters number of columns scanf("%d", &ncols); if(ncols < 4){ printf("\n Out of range, please try again"); exit(5); } printf("Enter matrix elements: "); //user enters all the elements for Matrix for(i = 0; i < nrows; i++){ for(j = 0; j < ncols; j++){ scanf("%d",&matrix[i][j]); } printf("\n");} printf("This is your matrix: \n"); for(i = 0; i < nrows; i++){ for(j = 0; j < ncols; j++){ printf("%d \t",matrix[i][j]);} printf("\n");} return 0; }Now i need to add one thing, i want to take diagonal and anti-diagonal of this matrix and replace all the elements there with capital X. As i don't know, what kind of matrix it will be, like it can be matrix[4][6] or matrix[7][4], so i need to do something that will work with any kind of matrix that user can enter in this program.
Example of this task (In this program i can't enter less than [4][4], but for the example i'll do it):
User enters rows - 3User enters columns - 3User enters elements : 1 2 3 4 5 6 7 8 9Output : 1 2 3 4 5 6 7 8 9Here i need to do something like this :
X 2 X4 X 6X 8 XIf user enters not square matrix, for example:
User enters rows: 3User enters rows: 4User enters elements: 1 2 3 4 5 6 7 8 9Out matrix: 1 2 3 45 6 7 89 0 1 2After replacing with X:X 2 3 X5 X X 89 X X 2Replaced diagonal and anti-diagonal with capital Xs.
Please any help ?
最满意答案你可以做这样的事情:
printf("This is your matrix: \n");for(i = 0; i < nrows; i++){ for(j = 0; j < ncols; j++){ if (i == j) printf("X \t"); else if (i == ncols - j - 1) printf("X \t"); else printf("%d \t", matrix[i][j]); } printf("\n");}例:
Enter number of rows: 4Enter number of columns: 5Enter matrix elements: 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4This is your matrix: X 1 1 1 X 2 X 2 X 2 3 3 X 3 3 4 X 4 X 4You can do something like this:
printf("This is your matrix: \n");for(i = 0; i < nrows; i++){ for(j = 0; j < ncols; j++){ if (i == j) printf("X \t"); else if (i == ncols - j - 1) printf("X \t"); else printf("%d \t", matrix[i][j]); } printf("\n");}Example:
Enter number of rows: 4Enter number of columns: 5Enter matrix elements: 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4This is your matrix: X 1 1 1 X 2 X 2 X 2 3 3 X 3 3 4 X 4 X 4