• 作业 十


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

    #include<stdio.h> #define N 5 #define M 5 void readScore(int score[N][M]); void printScore(int score[N][M]); void sumScore(int score[N][M],int sum[M]); void aveScore1(int score[N][M],double ave[N]); void aveScore2(int score[N][M],double ave[M]); int main() { int score[N][M]={0},j; double ave[M]; readScore(score); printf(" 语文 数学 英语 总分 平均分 "); printScore(score); printf("平均分 "); aveScore2(score,ave); for(j=0;j<3;j++) { printf("%.2f ",ave[j]); } return 0; } void readScore(int score[N][M]) { int i,j; for(i=0;i<N;i++) { printf("请输入第%d个人成绩 ",i+1); for(j=0;j<3;j++) { scanf("%d",&score[i][j]); } } } void printScore(int score[N][M]) { int i,j,sum[N]={0}; double ave[N]={0}; sumScore(score,sum); aveScore1(score,ave); for(i=0;i<N;i++) { for(j=0;j<3;j++) { printf(" %d",score[i][j]); } printf(" %d",sum[i]); printf(" %.2f",ave[i]); printf(" "); } } void sumScore(int score[N][M], int sum[M]) { int i,j,he; for(i=0;i<N;i++) { he=0; for(j=0;j<3;j++) { he+=score[i][j]; } sum[i]=he; } } void aveScore1(int score[N][M],double ave[N]) { int i,j,he; for(i=0;i<N;i++) { he=0; for(j=0;j<3;j++) { he+=score[i][j]; } ave[i]=(double)he/3; } } void aveScore2(int score[N][M],double ave[M]) { int i,j,he; for(j=0;j<3;j++) { he=0; for(i=0;i<N;i++) { he+=score[i][j]; } ave[j]=(double)he/N; } }

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

    #include<stdio.h>
    #define N 4
    #define M 4
    void readNum(int num[N][M]);
    void sumHeng(int num[N][M]);
    void sumShu(int num[N][M]);
    void sumXie1(int num[N][M]);
    void sumXie2(int num[N][M]);
    int main()
    {
        int num[N][M]={{1,2,3,4},{5,6,7,8},{9,0,2,1},{4,3,6,2}};
        int a,b;
        readNum(num);
        sumHeng(num);
        printf("
    ");
        sumShu(num);
        printf("
    ");
        sumXie1(num);
        printf("
    ");
        sumXie2(num);
        printf("
    ");
        return 0;
    }
    void readNum(int num[N][M])
    {
        int i,j;
        for(i=0;i<N;i++)
            {
                for(j=0;j<M;j++)
                {
                    printf("%2d",num[i][j]);
                }
                printf("
    ");
            }
    }
    void sumHeng(int num[N][M])
    {
        int i,j,sum;
        for(i=0;i<N;i++)
        {
            sum=0;
            for(j=0;j<M;j++)
            {
                sum+=num[i][j];
            }
            printf("第%d行元素之和为%d
    ",i+1,sum);
        }
        
    }
    void sumShu(int num[N][M])
    {
        int i,j,sum;
        for(j=0;j<M;j++)
        {
            sum=0;
            for(i=0;i<N;i++)
            {
                sum+=num[i][j];
            }
        printf("第%d列元素之和为%d
    ",j+1,sum);
        }    
    }
    void sumXie1(int num[N][M])
    {
        int i,j,sum;
        sum=0;
            for(i=0;i<N;i++)
            {
                for(j=0;j<M;j++)
                {
                    if(i==j)
                    {
                        sum+=num[i][j];
                    }
                }    
            }
            printf("左上到右下的对角线的和为%d",sum);
    }
    void sumXie2(int num[N][M])
    {
        int i,j,sum;
        sum=0;
            for(i=0;i<N;i++)
            {
                for(j=0;j<M;j++)
                {
                    if(i==M-1)
                    {
                        sum+=num[i][j];
                    }
                }    
            }
            printf("右上到左下的对角线的和为%d",sum);
    }

    二、实验总结

    1、写程序要一个一个的写,别一下子都写完,到时候不好检查。

    2、for语句中的表达式要用;分开‘

    3、二维数组要用两个[][]分别代表行和列。

    4二维数组用到了两层循环,内外层循环的循环变量由题决定,根据题决定先循环行还是先循环列。

  • 相关阅读:
    正则表达式中/i,/g,/ig,/gi,/m的区别和含义
    Git 使用中显示“Another git process seems to be running in this repository...”问题解决
    MySQL数据库中varchar与char类型的区别
    上传本地代码到gitHub过程详解
    PHP实现四种基本排序算法
    最优秀的5个Linux文本编辑器 狼人:
    11款有用的Web开发在线工具 狼人:
    Java.net网站新改版上线 狼人:
    WebMatrix进阶教程(3):如何实现某种样式 狼人:
    新界面新功能Firefox 4.0 RC重磅登场 狼人:
  • 原文地址:https://www.cnblogs.com/1998li/p/6158626.html
Copyright © 2020-2023  润新知