美文网首页
WarMj:二维数组数据处理练习

WarMj:二维数组数据处理练习

作者: WarMj | 来源:发表于2017-07-09 09:21 被阅读0次

    编写一段程序,使用二维数组操作5名学生3个科目(语文,数学,英语)的分数,完成如下处理。
    例1:计算每科的最高分。
    例2:计算每名学生3个科目的平均分。
    ——《明解C语言》练习6-11

    成绩表样例(程序支持手动录入)

    语文 数学 英语
    学生1 99 98 97
    学生2 99 98 97
    学生3 99 98 97
    学生4 99 98 97
    学生5 99 98 97

    代码分析

    #include<stdio.h>
    #include<stdlib.h>
    
    //函数声明。 
    void Scan_Score(const int score[5][3]);
    void Max_Score(const int score[5][3]);
    void Ave_Score(const int score[5][3]);
    
    int main()
    {
        int score[5][3] = {0};
    //  int score[5][3] = {{99, 98, 97}, {99, 98, 97}, {99, 98, 97}};
        
        Scan_Score(score);
        Max_Score(score);
        Ave_Score(score);
        
        system("pause");
        return 0;
     } 
    
    //成绩录入函数 
    void Scan_Score(const int score[5][3])
    {
        for(int i = 0; i < 5; i++)
        {
            printf("Please enter the score of the NO.%d student:\n", i+1);
            for(int j = 0; j < 3; j++)
            {
                switch(j)
                {
                    case 0: puts("Chinese score:"); break;
                    case 1: puts("Math score:");       break;
                    case 2: puts("English score:"); break;
                }
                scanf("%d", &score[i][j]);
            }
        }
    }
    
    //各科成绩最高分函数 
    void Max_Score(const int score[5][3])
    {
        int Max_Ch = score[0][0], Max_Math = score[0][1], Max_Eng = score[0][2];
        for(int j = 0; j < 3; j++)
        {
            for(int i = 0; i < 5; i++)
            {
                switch(j)
                {
                    case 0: if(Max_Ch < score[i][j])
                        {
                            Max_Ch = score[i][j];
                        }
                    break;
                
                    case 1: if(Max_Math < score[i][j])
                        {
                            Max_Math = score[i][j];
                        }
                    break;
                    
                    case 2: if(Max_Eng < score[i][j])
                        {
                            Max_Eng = score[i][j];
                        }
                    break;
                }
            }
        }
        printf("The max score of Chinese is:%d\n", Max_Ch);
        printf("The max score of Math is:%d\n", Max_Math);
        printf("The max score of English is:%d\n", Max_Eng);
     } 
     
    //每名学生平均成绩函数 
    void Ave_Score(const int score[5][3])
     {
        int sum[5] = {0};
        for(int i = 0; i < 5; i++)
        {
            for(int j = 0; j < 3; j++)
            {
                sum[i] += score[i][j];
             }
             printf("The average score for Student.%d is :%d\n", i+1, sum[i]/3);
         }
     }

    相关文章

      网友评论

          本文标题:WarMj:二维数组数据处理练习

          本文链接:https://www.haomeiwen.com/subject/dyrshxtx.html