第十次作业

 1.有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。  

#include<stdio.h>
#define N 5
#define M 6
#define L 3
int main()
{
    int i,j,sumi,sumii,flag;
    double score[N][M]={{1,90,80,70},{2,82,75,95},{3,66,78,90},{4,68,95,88},{5,64,82,96}},average[L]={0};
    printf("       语文  数学  英语  总 分  平均分
");
    for(i=0;i<5;i++)
    {
        sumi=0;
        for(j=1;j<6;j++)
        {     
            sumi+=score[i][j];

        }
        score[i][4]=sumi;
        score[i][5]=(double)sumi/3;
    }
    for(i=0;i<5;i++)
    {    
        for(j=0;j<6;j++)
        {
            printf("  % .lf ",score[i][j]);
        }
        printf("
");
    }
    flag=0;
    for(j=1;j<4;j++)
    {
        sumii=0;

        for(i=0;i<5;i++)
        {
            sumii+=score[i][j];
        }
        average[flag]=(double)sumii/5;
        flag++;
    }
    printf("平均分 ");
    for(i=0;i<3;i++)
    {
        printf("%  .lf   ",average[i]);
    }
    return 0;
} 

 2.求任意方阵每行、每列、两对角线上元素之和。

#include<stdio.h>
#define N 10
#define M 10
int main()
{
    int series[N][M]={{1,2,3},{4,5,6},{7,8,9}},i,j,sum1,sum2,sum3=0,sum4=0;
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            printf("%5d",series[i][j]);
        }
        printf("
");
    }
    for(i=0;i<3;i++)
    {
        sum1=0;
        for(j=0;j<3;j++)
        {
            sum1+=series[i][j];
        
        }
        printf("第%d行的和是%d
",i+1,sum1);
    }
    for(j=0;j<3;j++)
    {
        sum2=0;
        for(i=0;i<3;i++)
        {
            sum2+=series[i][j];
        
        }
        printf("第%d列的和是%d
",j+1,sum2);
    }

    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            if(j==i)
            {
                sum3+=series[i][j];
            }
        }
    
    }
    printf("由左至右的对角线之和是:%d
",sum3);
    for(j=2;j>=0;j--)
    {
        for(i=0;i<3;i++)
        {
            if(i+j==2)
            sum4+=series[i][j];
        }
    
    }
    printf("由右至左的对角线的和为:%d
",sum4);
    return 0;
}

实验总结:开始的时候,我想把数组的平均分还有总分直接存好,最后直接输出二维数组即可,可是后来考虑到每学科

的平均分需要有汉字提示,所以就又用了一个一维数组,格式对齐挺烦的,我没有做万年历的那个附加题,所以有些没

头绪,然后为了看起来更清楚,我把平均分没有保留小数位,呃呃呃,还算整齐。不过,有一个事情挺搞笑,我以为二

维数组输出的时候就是表格形式,结果,是我想多了······

知识点总结:1.二维数组的赋值和一维数组有相似的地方,但应注意,定义二维数组时,第一维的长度可以不指定,但

第二维的长度不能省。

2.C语言中二维数组是按行存储的。

3.a[6][7]——>第一个方括号表示行,第二个表示列。

原文地址:https://www.cnblogs.com/lmlmlm/p/6159275.html