二維數組-多科成績單
#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;
}