C語言練習-二維數組應用

二維數組-多科成績單

#include <stdio.h>
void input(double s[][4],int n); //输入成绩
void output(double s[][4],int n); //输出成绩
double max(double s[][4],int n,int i); //求第i门课的最高成绩,i=3时是总分
double min(double s[][4],int n,int i); //求第i门课的最低成绩
double avg(double s[][4],int n,int i); //求第i门课的平均成绩

int main()
{
    int i,num;
    double score[100][4]; //设一个班最多100人,实际按输入来
    char course[4][10]= {"math","English","C++","total"};
    printf("enter students numbers : ");
    scanf("%d",&num);
    input(score,num);  //输入成绩并求出总分
    output(score,num); //输出成绩
    for(i=0; i<4; ++i)       //输出各门课及总分的最高成绩、最低成绩、平均成绩和成绩的标准偏差
    {
        printf("%s highest score is %.2f, ", course[i], max(score,num,i));
        printf("lowest score is %.2f, ", min(score,num,i));
        printf(" average score is %.2f ", avg(score,num,i));
        printf("\n");
    }
    return 0;
}
void input(double s[][4],int n)                // double 類型定義,格式符要用%lf, 否則編譯器不報錯,但結果不正確
{
    int i;
    for(i=0;i<n;i++)
    {
        scanf("%lf %lf %lf",&s[i][0],&s[i][1],&s[i][2]);
        s[i][3]=s[i][0]+s[i][1]+s[i][2];
    }
}
void output(double s[][4],int n)
{
    int i;
    printf("number\tmath\tEnglish\tC++\tTotal\n");
    for(i=0;i<n;i++)
    {
         printf("%d\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",i,s[i][0],s[i][1],s[i][2],s[i][3]);
    }
}
double max(double s[][4],int n,int i) //求第i门课的最高成绩,i=3时是总分
{
    int j;
    double max1=0;
    for(j=0;j<n;j++)
    {
        if(s[j][i]>max1)
            max1=s[j][i];
    }
    return max1;
}
double min(double s[][4],int n,int i) //求第i门课的最低成绩
{
    int j;
    double min1=100;
    for(j=0;j<n;j++)
    {
        if(s[j][i]<min1)
            min1 = s[j][i];
    }
    return min1;
}
double avg(double s[][4],int n,int i) //求第i门课的平均成绩
{
    int j;
    double sum=0,ave=0;
    for(j=0;j<n;j++)
    {
        sum += s[j][i];
    }
    ave = sum/n;
    return ave;
}

猜你喜欢

转载自blog.csdn.net/weixin_38486169/article/details/86612083