第十次作业

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

#include<stdio.h>
#define N 3
#define M 5
void readScore(int score[M][M]);
void aveforStud(int score[M][M],double ave[M][M]);
void aveforCourse(int score[M][M],double asd[4]);
int main()
{
    int  score[M][M],i,j;
    double ave[M][M],asd[4];
    readScore(score);
    aveforStud(score,ave);
    printf("        语文        数学        英语        总分    平均分
");
    for(i=0;i<M;i++)
    {
        for(j=0;j<4;j++)
        {
            printf("    %8d",score[i][j]);
        
        }
            
        
             printf("%  8.2f
",ave[i][4]);
            
            printf("
");
    }
    aveforCourse(score,asd);
    printf("平均分"); 
    for(i=0;i<4;i++)
    {
        printf("%7.2f     ",asd[i]);
    }


}
void  readScore(int score[M][M])
{
    int j,i,sum=0;
    printf("输入成绩");
    for(i=0;i<M;i++)
    {
        sum=0;
        printf("输入第%d个学生的成绩
",i+1);
        for(j=0;j<N;j++)
        {
                
            scanf("%d",&score[i][j]);
            sum+=score[i][j];
        }
        score[i][3]=sum;
    }
}
void aveforStud(int score[M][M],double ave[M][M])
{
    int i;
    for(i=0;i<M;i++)
    {
      ave[i][4]=score[i][3]/3.0;
    }
}
void aveforCourse(int score[M][M],double asd[4])
{
    int i,j,sum;
    for(i=0;i<4;i++)
    {
        sum=0;
        for(j=0;j<5;j++)
        {
            sum+=score[j][i];
        }
        asd[i]=sum/5.0;
    }
}

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

#include<stdio.h>
#define N 100
int main()
{
    int i,j,H,x=0,zhen[N][N],sum;
    printf("输入方阵行数");
    scanf("%d",&H);
    for(i=0;i<H;i++)
    {
        for(j=0;j<H;j++)
        {
            x++;
            zhen[i][j]=x;
            printf("%3d",x);
        }
    printf("
");
    }
        for(i=0;i<H;i++)
    {
            sum=0;
        for(j=0;j<H;j++)
        {
            sum+=zhen[i][j];
        }
        printf("第%d行元素和为%d
",i+1,sum);
    }
              for(i=0;i<H;i++)
    {
            sum=0;
        for(j=0;j<H;j++)
        {
            sum+=zhen[j][i];
        }
        printf("第%d列元素和为%d
",i+1,sum);
    }
            sum=0;
        for(i=0;i<H;i++)
    {
            sum+=zhen[i][i];
    
    }
    printf("左上到右下元素和为%d
",sum);
        sum=0;
        j=H-1;
     for(i=0;i<H;i++)
    {
        sum+=zhen[i][j];
        j--;
    }
    printf("右上到左下元素和为%d
",sum);

    return 0;
}

实验总结:1.如果是多次求和的话,每次重新求和时都要给sum赋初值。

2.注意函数类型。

3.下标值应在已定义的数组范围内。

原文地址:https://www.cnblogs.com/gangfeng/p/6160900.html