趣味矩阵

使左对角线和右对角线上的元素为0,它们上方的元素为1,左方的元素为2,下方元素为3,右方元素为4,下图是一个符合条件的5阶矩阵。
在这里插入图片描述
这里采用二维矩阵来进行问题的求解

1)当对二维表按行进行操作时,应该“外层循环控制行; 内层循环控制列”;反之若要对二维表按列进行操作时,应该“外层循环控制列;内层循环控制行”。
2)二维表和二维数组的显示输出,只能按行从上到下连续进行,每行各列则只能从左到右连续输出。所以,只能用“外层循环控制行;内层循环控制列”。

分析:
五种情况(i为行 j为列 都从0起标 阶数为n)

  1. i+j=n-1 || i=j value=0
  2. i<j || i+j<n-1 value=1
  3. i>j || i+j<n-1 value=2
  4. i>j || i+j>n-1 value=3
  5. 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");//某行最后一列打印后,要换行,打印下一行。 
	} 
}

猜你喜欢

转载自blog.csdn.net/weixin_44916213/article/details/112344169