【发布时间】:2017-12-07 16:02:39
【问题描述】:
我有一个任务,我需要专业人士的帮助。
我的任务是:用户输入矩阵[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 - 3
User enters columns - 3
User enters elements : 1 2 3 4 5 6 7 8 9
Output :
1 2 3
4 5 6
7 8 9
在这里我需要做这样的事情:
X 2 X
4 X 6
X 8 X
如果用户输入的不是方阵,例如:
User enters rows: 3
User enters rows: 4
User enters elements: 1 2 3 4 5 6 7 8 9
Out matrix:
1 2 3 4
5 6 7 8
9 0 1 2
After replacing with X:
X 2 3 X
5 X X 8
9 X X 2
用大写 Xs 替换对角线和反对角线。
请帮忙?
【问题讨论】:
-
如果矩阵不是正方形,对角线是什么?
-
prntscr.com/hke7cm你可以看这里
-
根据定义,“反对角矩阵是除对角线上从左下角到右上角 (↗) 之外的所有元素都为零的矩阵,称为反对角矩阵。 -对角线”。你的例子正确吗?
-
我不知道你在说什么@klaus,但问题模式可以是任何东西,我已经为它编写了代码
-
不需要
<stdlib.h>才能使用exit()吗?