现在的位置: 首页 > 05 数组 > 正文

二维数组的声明、初始化和输出(计算方阵的主负对角线上的元素之和)

2012年12月27日 05 数组 ⁄ 共 224字 ⁄ 字号 暂无评论

二维数组的声明、初始化和输出(计算方阵的主负对角线上的元素之和)

编写程序,分别计算5*5方阵的主对角线上的元素之和与副对角线上的元素之和。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
int main()
{
    int a[5][5]= {
        {43,18,21,25,28},
        {12,61,52,23,35},
        {25,17,81,56,63},
        {26,60,53,31,65},
        {45,37,21,56,63}
    };  /* 数组的声明和初始化 */
    int i, j, s1=0, s2=0;
    for(i=0; i<5; i++) {
        for(j=0; j<5; j++)
            printf("%4d",a[i][j]);
        printf("\n");
    } /* 通过二重循环输出二维数组 */
    for(i=0; i<5; i++)
        for(j=0; j<5; j++) {
            if (i==j) s1=s1+a[i][j];
            if (i+j==4) s2=s2+a[i][j];
        }
    printf("s1=%d,s2=%d\n",s1,s2);
    return 0;
}

更简单的办法:

1
2
3
4
    for(i=0; i<5; i++) {
        s1=s1+a[i][i];
        s2=s2+a[i][4-i];
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
#define N  100
int main(int argc, char *argv[])
{
    int a[N][N];
    int n, i, j, sum_a=0, sum_b=0;    
    scanf("%d", &n);
    for (i=0; i<n; i++)
      for (j=0; j<n; j++)
        scanf("%d", &a[i][j]);        
    for (i=0; i<n; i++)
      sum_a = sum_a + a[i][i];
    for (i=0; i<n; i++)
      sum_b = sum_b + a[i][n-1-i];
    printf("%d %d\n", sum_a, sum_b);      
    return 0;
}
【上篇】
【下篇】

抱歉!评论已关闭.