使左对角线和右对角线上的元素为0,它们上方的元素为1,左方的元素为2,下方元素为3,右方元素为4,下图是一个符合条件的5阶矩阵。
这里采用二维矩阵来进行问题的求解
1)当对二维表按行进行操作时,应该“外层循环控制行; 内层循环控制列”;反之若要对二维表按列进行操作时,应该“外层循环控制列;内层循环控制行”。
2)二维表和二维数组的显示输出,只能按行从上到下连续进行,每行各列则只能从左到右连续输出。所以,只能用“外层循环控制行;内层循环控制列”。
分析:
五种情况(i为行 j为列 都从0起标 阶数为n)
- i+j=n-1 || i=j value=0
- i<j || i+j<n-1 value=1
- i>j || i+j<n-1 value=2
- i>j || i+j>n-1 value=3
- i<j || i+j>n-1 value=4
answer:
#include<stdio.h>
int main()
{
int i,j,a[100][100],n;
printf("输入矩阵的大小:");
scanf("%d",&n);
//C语言中矩阵行、列的下标均从0开始。
for(i=0;i<=n-1;i=i+1){
for(j=0;j<=n-1;j=j+1){
if(i==j or i+j==n-1) a[i][j]=0;
if(i+j<n-1 and i<j) a[i][j]=1;
if(i+j<n-1 and i>j) a[i][j]=2;
if(i+j>n-1 and i>j) a[i][j]=3;
if(i+j>n-1 and i<j) a[i][j]=4;
}
}
for(i=0;i<=n-1;i=i+1){
for(j=0;j<=n-1;j=j+1){
printf("%d ",a[i][j]);
}
printf("\n");//某行最后一列打印后,要换行,打印下一行。
}
}