解题思路:

1、矩阵选择使用二维数组 a[x][y] 来存储。

2、使用二维数据存储数据时,需要2个for循环来获取数据

3、主对角线的数据特征是 x=y, 副对角线的数据特征是x+y=2

注意事项:

参考代码:

#include<stdio.h>
int main()
{
    int x, y, sum1 = 0, sum2 = 0, a[3][3];
    for(x=0; x<3; x++)
    {
        for(y=0; y<3; y++) 
        {
            scanf("%d", &a[x][y]);
            if(x == y)
                sum1+=a[x][y];
            if(x+y == 2)
                sum2+=a[x][y];
        }
    }
    printf("%d %d", sum1, sum2);
    return 0;
}


点赞(51)
 

0.0分

90 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 71 条评论

舞星散落 5年前 回复TA
@不明所以 你数组定义错了 你定义成了  字符型
舞星散落 5年前 回复TA
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a[3][3],i,j,s159=0,s357=0;
    
    for(i=0,j=0;i<3;){
        scanf("%d",&a[i][j]);
    
        if(i==j)    {  s159+= a[i][j]; }        //00 11 22
        if((i+j)==2){  s357+= a[i][j]; }        //02 11 20
        
        if(j++==2)  { j=0; ++i; }
    }
    printf("%d %d",s159,s357);
    
    return 0;
}
不明所以 5年前 回复TA
int main()
{

	char array[3][3] = { 0 };
	
	int i, j;
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			scanf("%d", &array[i][j]);
		}
	}

	int sum1, sum2;
	sum1 = array[0][0] + array[2][2] + array[1][1];
	sum2 = array[0][2] + array[2][2] + array[2][0];

	printf("%d %d", sum1, sum2);
	return 0;
}

求教一下为什么是50%正确呢?
暮光 5年前 回复TA
@暮光 嗯嗯,谢谢
Aerial 5年前 回复TA
@陈恩泽 哦,谢谢大佬
编程cxk 5年前 回复TA
@暮光 遍历的第二个for循环,应该是j++   而不是i++
暮光 5年前 回复TA
#include<stdio.h>
#define N 3
int main()
{
	int i,j;
	int sum1 = 0,sum2 = 0;
	int array[N][N];
	
	for(i = 0; i < N; i++){
		for(j = 0; j < N; i++){
			scanf("%d",&array[i][j]);
		}
	} 
	for(i = 0; i < N; i++){
		sum1 += array[i][i];
		sum2 += array[i][N-1-i];
	}
	printf("%d %d\n",sum1,sum2);
	return 0;
}
可以指点一下我怎么为啥出不了结果啊
暮光 5年前 回复TA
#include<stdio.h>
#define N 3
int main()
{
	int i,j;
	int sum1 = 0,sum2 = 0;
	int array[N][N];
	
	for(i = 0; i < N; i++){
		for(j = 0; j < N; i++){
			scanf("%d",&array[i][j]);
		}
	} 
	for(i = 0; i < N; i++){
		sum1 += array[i][i];
		sum2 += array[i][N-1-i];
	}
	printf("%d %d\n",sum1,sum2);
	return 0;
}
可以指点一下我怎么为啥出不了结果啊
中神通 5年前 回复TA
@夜雨听秋风 a[1][2]应该是a[1][1],
ppblq 5年前 回复TA
@夜雨听秋风 #include <stdio.h> int main() { 	 	int a[3][3]; 	int i; 	int j; 	int z; 	int f; 	for(i=0;i<3;i++) 	{ 		 		for(j=0;j<3;j++) 		{ 			scanf("%d",&a[i][j]); 			  		} 		//printf("%d ",a[i][j]); 		//printf("\n"); 	} 	z=a[0][0]+a[1][2]+a[2][2]; 	f=a[0][2]+a[1][2]+a[2][0]; 	printf("%d %d",z,f);	 	 	return 0;                我的代码为什么提交报错