• 第十次作业


     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.注意for循环的嵌套的先后顺序,用一个数走一遍程序

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

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

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

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

  • 相关阅读:
    Angle Beats Gym
    MUV LUV UNLIMITED Gym
    Balanced Diet Gym
    数位dp HDU
    数位dp CodeForces
    数位dp HDU
    有依赖的背包 洛谷P1064 金明的预算方案 (不是分组背包)
    多重背包+二进制拆分 POJ1014
    单调队列优化dp 入门 洛谷P2627 修剪草坪
    01背包 + 排序 (记忆化搜索) 骄傲的商人(HDU
  • 原文地址:https://www.cnblogs.com/wjm666/p/6141449.html
Copyright © 2020-2023  润新知