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:矩阵两对角线和相等......
  • 相关阅读:
    Redis源代码分析(十三)--- redis-benchmark性能測试
    kvm中运行kvm
    umount.nfs device busy day virsh extend diskSpace, attachDisk
    ultravnc
    openNebula dubug
    maintenance ShellScripts
    virsh VMI deploy data serial xml
    cloud computing platform,virtual authentication encryption
    基于C 的libvirt 接口调用
    storage theory
  • 原文地址:https://www.cnblogs.com/yanchao980817/p/6159043.html
Copyright © 2011-2022 走看看