请教同学们和老师们

来源:6-11 多维数组的遍历

你二爷爷的三哥哥

2017-01-16 10:55

我总觉得这么做有点麻烦,假如数组维数越大,这个方法肯定不行。

写回答 关注

1回答

  • 全栈港
    2017-01-17 15:36:17
    已采纳
    //题目给出的参考答案(只在行列都为3的矩阵下适用)
    #include <stdio.h>
    int main()
    {
        int arr[3][3] = {
            {1,2,3},
            {4,5,6},
            {7,8,9}};
        int i,j;
        int sum=0;
        for(i=0;i<3;i++)
        {
           for(j=0;j<3;j++){
               if(i%2==0 && j%2==0)
               sum=sum+arr[i][j];
           }
        }
        sum=sum+arr[1][1];
        printf("对角线元素之和是:%d\n",sum);
        return 0;    
    }

    偶数组:

    0     1       2         3    

    1     11     12       13            

    2     21      22       23         

    3     31      32       33                      

    奇数组

    0        1        2        3        4    

    1       11      12       13      14           

    2       21      22       23       24 

    3       31      32       33       34                  

    4       41       42      43       44                                

    #include <stdio.h>
    #define n 4  //在此随意修改数组的行列
    int main(void)
    {
    	int i, j, sum;
    	int a[n][n];
    	//构建数组,手动输入
    	printf("Please input a array\n");
    	for(i=0; i<n; i++) {
    		for(j=0; j<n; j++)  {
    			scanf("%d", &a[i][j]);
    		}
    	}
    	//打印构建数组
    	for(i=0; i<n; i++)  {
    		for(j=0; j<n; j++)   {
    			printf("%3d", a[i][j]);
    		}
    		printf("\n");
    	}
    	//求二维数组对角线上元素和
    	sum = 0;
    	for(i=0; i<n; i++)  {
    		for(j=0; j<n; j++)   {
    			if((i==j) || (i+j==n-1)) {
    				sum += a[i][j];
    			}
    		}
    	}
    	printf("主对角线和次对角线之和是:%d\n", sum);
    	return 0;
    }

    注意:矩阵数组对角线有两条,将编程问题转化成数学问题求解;

    主对角线上的元素是行列相等(i=j);副对角线上的元素数组行列下表相加为数组长度减1;



    你二爷爷的三...

    尽管没有完全理解,但是解决了我的矛盾~~~

    2017-02-06 08:36:10

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926210 学习 · 20797 问题

查看课程

相似问题