首页 > 代码库 > 第十次作业

第十次作业

 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("        语文        数学        英语        总分    平均分\n");
    for(i=0;i<M;i++)
    {
        for(j=0;j<4;j++)
        {
            printf("    %8d",score[i][j]);
        
        }
            
        
             printf("%  8.2f\n",ave[i][4]);
            
            printf("\n");
    }
    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个学生的成绩\n",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("\n");
    }
        for(i=0;i<H;i++)
    {
            sum=0;
        for(j=0;j<H;j++)
        {
            sum+=zhen[i][j];
        }
        printf("第%d行元素和为%d\n",i+1,sum);
    }
              for(i=0;i<H;i++)
    {
            sum=0;
        for(j=0;j<H;j++)
        {
            sum+=zhen[j][i];
        }
        printf("第%d列元素和为%d\n",i+1,sum);
    }
            sum=0;
        for(i=0;i<H;i++)
    {
            sum+=zhen[i][i];
    
    }
    printf("左上到右下元素和为%d\n",sum);
        sum=0;
        j=H-1;
     for(i=0;i<H;i++)
    {
        sum+=zhen[i][j];
        j--;
    }
    printf("右上到左下元素和为%d\n",sum);

    return 0;
}

 技术分享

 

 

实验总结:1.注意for循环的嵌套的先后顺序,用一个数走一遍程序

     2.注意运用代表行列的变量,每行相加,外循环表示行,内循环表示列,每列相加,外循环表示列,内循环表示行

     3.多次求和,注意每次重新求和时给sum赋初值

     4.在输出表格形式的数据时灵活使用二维数组。

     5.注意数组越界问题,score[3]是从score[0]到score[2]

第十次作业