zoukankan      html  css  js  c++  java
  • 第十次作业

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

    #include <stdio.h>
    #define M 5
    #define N 3
    void inscore(int score[M][N]);
    //void outscore(int score[M][N]);
    void insum(int score[M][N],int sum[M]);
    void outsum(int sum[],int n);
    void inmus(int score[M][N],int mus[M]);
    double ave(int sum[M],double gerenaver[M]);
    double aver(int mus[M],double gekeaver[M]);
    int main()
    {
        int score[M][N],sum[M],mus[M];
        int i,g;
        double gerenaver[M],gekeaver[N];
        inscore(score);
    //    outscore(score);
        insum(score,sum);
    //    outsum(sum,M);
        ave(sum,gerenaver);
        inmus(score,mus);
        aver(mus,gekeaver); 
        printf("	数学	英语	语文	总分	平均分
    ");
        for(i=0;i<M;i++)
        {
            printf("学生%d",i+1);
            for(g=0;g<N;g++)
            {
                printf(" 	 %d ",score[i][g]);
            }
            printf("	  %d	  %.2f",sum[i],gerenaver[i]);
            printf("
    ");
        }
        printf("平均分");
        for(i=0;i<N;i++)
        {
            printf("	 %.2f",gekeaver[i]);
        }
        return 0;
    }
    
    void inscore(int score[M][N])   //???? 
    {
        int i,g;
        for(i=0;i<M;i++)
        {
            printf("请输入第%d个学生的成绩:
    ",i+1);
            for(g=0;g<N;g++)
            {
                scanf("%d",&score[i][g]);
            }
        }
    }/*
    void outscore(int score[M][N])
    {
        int i,g;
        for(i=0;i<M;i++)
        {
            for(g=0;g<N;g++)
            {
                printf("%4d",score[i][g]);
            }
        }
    }*/
    
    void insum(int score[M][N],int sum[M])    //?????? 
    {
        int i,g;
        for(i=0;i<M;i++)
        {
            sum[i]=0;
            for(g=0;g<N;g++)
            {
                sum[i]=sum[i]+score[i][g];
            }
        }
    }/*
    void outsum(int sum[],int n)
    {
        int i;
        for(i=0;i<n;i++)
        {
            printf("%d",sum[i]);
        }
    }*/
    double ave(int sum[M],double gerenaver[M])        //????? 
    {
        int i;
        for(i=0;i<M;i++)
        {
            gerenaver[i]=(double)sum[i]/3;
        }
    }
    void inmus(int score[M][N],int mus[M])    //?????? 
    {
        int i,g;
        for(i=0;i<N;i++)
        {
            mus[i]=0;
            for(g=0;g<M;g++)
            {
                mus[i]=mus[i]+score[g][i];
            }
        }
    }
    double aver(int mus[M],double gekeaver[M])        //????? 
    {
        int i,g;
        for(i=0;i<N;i++)
        {
            gekeaver[i]=0;
            gekeaver[i]=(double)mus[i]/5;    
        }
    }
    
    
    
    /* 
    double aver(int mus[M],double gekeaver[M])        //????? 
    {
        int i,g;
        for(i=0;i<N;i++)
        {
            gekeaver[i]=0;
            for(g=0;g<M;g++)
            {
                gekeaver[i]=(double)mus[i]/5;    
            } 
        }
    }*/

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

    #include <stdio.h>
    #define M 3
    #define N 3
    int main()
    {
        int i,g,square[M][N],sumM[M],sumN[N],sumz=0,sumy=0;
        printf("请输入九个数:
    ");
        for(i=0;i<M;i++)
        {
            for(g=0;g<N;g++)
            {
                scanf("%d",&square[i][g]);
            }
        }
        for(i=0;i<M;i++)
        {
            sumM[i]=0; 
            sumN[i]=0; 
            for(g=0;g<N;g++)
            {
                sumM[i]+=square[i][g];
                sumN[i]+=square[g][i];
            }
        }
        printf("
    "); 
        for(i=0;i<M;i++)
        {
            printf("方阵第%d行和为%d
    ",i+1,sumM[i]);
        }
        printf("
    "); 
        for(i=0;i<M;i++)
        {
            printf("方阵第%d列和为%d
    ",i+1,sumN[i]);
        }
        for(i=0,g=0;i<M,g<N;i++,g++)
        {
            sumz+=square[i][g];
        }
        printf("
    "); 
        printf("方阵左上到右下的对角线上的数和为%d
    ",sumz);
        for(i=0,g=N-1;i<M,g>=0;i++,g--)
        {
            sumy+=square[i][g];
        }
        printf("方阵右上到左下的对角线上的数和为%d
    ",sumy);
        return 0;
    }

    实验总结:

    1:二维数组,sum[i][g]进行行列运算时,注意i和g的位置。实验一在做各科平均分时就把i和g弄反了,结果各科平均分算出来是一个数。

    2:

      double ave(int sum[M],double gerenaver[M]);
      ave(sum,gerenaver);

    3:函数若无返回值,且在下次函数中要用到,则要将其带入新函数中
    4:矩阵两对角线和相等......
  • 相关阅读:
    js,JavaScript,a标签onclick传递参数不对,A标签调用js函数写法总结
    Java两大测试方法Junit和TestNG的比较
    java简单的测试方法执行了多少时间
    利用Chrome的Performance工具排查页面性能问题(原叫timeline)
    P3317 [SDOI2014]重建(Matrix-tree+期望)
    P2221 [HAOI2012]高速公路(线段树)
    P2473 [SCOI2008]奖励关(期望)
    P3302 [SDOI2013]森林(主席树+启发式合并)
    bzoj3932 / P3168 [CQOI2015]任务查询系统(主席树+差分)
    P2219 [HAOI2007]修筑绿化带(单调队列)
  • 原文地址:https://www.cnblogs.com/yanchao980817/p/6159043.html
Copyright © 2011-2022 走看看