C语言编程题 从键盘输入9个数存入一个3*3的二维整型数组中:

从键盘输入9个数存入一个3*3的二维整型数组中:
(1)按3行3列输出这九个数
(2)输出主对角线与次对角线元素的和
(3)输出第二行元素的和
(4)输出第三行元素的平均值

#include "stdio.h"
int main(int argc,char *argv[]){
int a[3][3],s,i,j;
printf("Please enter data...\n");
for(i=0;i<3;i++)//输入3x3数组
for(j=0;j<3;scanf("%d",a[i]+j++));
printf("\n");
for(s=i=0;i<3;i++){//按3行3列输出并求对角线之和
for(j=0;j<3;printf("%10d",a[i][j++])){
if(i==j)//这两个if若写成if(i==j || i==2-j) s+=a[i][j];中间元素就只算一次
s+=a[i][j];
if(i==2-j)
s+=a[i][j];
}
printf("\n");
}
printf("The sum of the diagonal is %d\n",s);//对角线之和
printf("The second row sum total is %d\n",a[1][0]+a[1][1]+a[1][2]);//第二行总和
printf("The third line average is %g\n",(a[2][0]+a[2][1]+a[2][2])/3.0);//第三行平均值
return 0;
}

运行样例:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-05
#include <stdio.h>

/* X*Y的矩阵 */
#define X 3
#define Y 3

int main(int argc, char *argv[])
{
    int a[X][Y] = {{0}};
    int i = 0, j = 0, sum = 0, sum2 = 0, middle = 0;
    
    /* 输入矩阵 */
    for (i = 0; i < X; i++)
    {
        for (j = 0; j < Y; j++)
        {
            scanf("%d", &a[i][j]);
        }
    }
    
    for (i = 0, sum = 0; i < X; i++)
    {
        sum += a[i][i];
    }
    printf("主对角线元素的和:%d\n", sum);
    
    for (i = 0, j = Y-1, sum2 = 0; i < X; i++, j--)
    {
        sum2 += a[i][j];
        if (i == j)
        {
            middle = a[i][j];
        }
    }
    printf("次对角线元素的和:%d\n", sum2);
    
    printf("主+次对角线所有元素的和:%d\n", sum+sum2-middle);
    
    for (j = 0, sum = 0; j < Y; j++)
    {
        sum += a[1][j];
    }
    printf("第二行元素的和:%d\n", sum);
    
    for (j = 0, sum = 0; j < Y; j++)
    {
        sum += a[2][j];
    }
    printf("第三行元素的平均值:%d\n", sum/3);
      
    return 0;
}

第2个回答  2018-12-05
这个我不知道怎么弄