任务和代码:某班不超过100名同学。用二维数组score[][4]保存同学们的高数、英语、C语言成绩及总成绩(在此假设学生的学号为整型的连续值,用数组的行下标作学号)。在此基础上,完成下面的操作:
(1)输入学生的实际人数num,在输入各科的成绩时,输入3科成绩后可以自动求出总分,并将数据全保存到数组中;
(1)输入学生的实际人数num,在输入各科的成绩时,输入3科成绩后可以自动求出总分,并将数据全保存到数组中;
(2)输出各门课及总分的最高成绩、最低成绩、平均成绩
/*
文件名:main.c
作者:小风景
完成日期:2016.7.18
问题描述:某班不超过100名同学。用二维数组score[][4]保存同学们的高数、英语、C语言成绩及总成绩(在此假设学生的学号为整型的连续值,用数组的行下标作学号)。在此基础上,完成下面的操作:
(1)输入学生的实际人数num,在输入各科的成绩时,输入3科成绩后可以自动求出总分,并将数据全保存到数组中;
(2)输出各门课及总分的最高成绩、最低成绩、平均成绩
程序输出:
*/
#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]= {"高等数学","英语","C++","总分"};
printf("输入学生人数:");
scanf("%d", &num);
//(1)输入成绩并求出总分
input(score,num);
//(2)输出成绩
output(score,num);
//(3)输出各门课及总分的最高成绩、最低成绩、平均成绩和成绩的标准偏差;
for(i=0; i<4; ++i)
{
printf("%s的最高成绩是%.2f, ", course[i], max(score,num,i));
printf("最低成绩是%.2f, ", min(score,num,i));
printf("平均成绩是%.2f ", avg(score,num,i));
printf("\n\n");
}
return 0;
}
/*
函数功能:输入学生的成绩
*/
void input(double s[][4],int n)
{
int i = 0;
int j = 0;
double sum = 0;
for(i = 0;i < n;i++)
{
sum = 0;
printf("请输入第%d名学生的成绩:",i+1);
for(j = 0;j < 3;j++)
{
scanf("%lf",&s[i][j]);
sum += s[i][j];
}
s[i][3] = sum;
fflush(stdin);
}
printf("\n");
}
/*
函数功能:输出学生的成绩
*/
void output(double s[][4],int n)
{
int i = 0;
int j = 0;
printf("将三门成绩求和后输出学生的成绩:\n");
for(i = 0;i < n;i++)
{
printf("第%d名学生的成绩:",i+1);
for(j = 0;j < 4;j++)
{
printf("%.2lf ",s[i][j]);
}
printf("\n");
}
}
/*
函数功能:找出某科的最高成绩
*/
double max(double s[][4],int n,int i)
{
double maxscore = 0;
int j = 0;
for(j = 0;j < n;j++)
{
if(s[j][i] > maxscore)
{
maxscore = s[j][i];
}
}
return maxscore;
}
/*
函数功能:找出某科的最低成绩
*/
double min(double s[][4],int n,int i)
{
double minscore = 100;
int j = 0;
for(j = 0;j < n;j++)
{
if(s[j][i] < minscore)
{
minscore = s[j][i];
}
}
return minscore;
}
/*
函数功能:找出某科的平均成绩
*/
double avg(double s[][4],int n,int i)
{
double avgscore = 0;
int j = 0;
for(j = 0;j < n;j++)
{
avgscore += s[j][i];
}
return (avgscore / n);
}
程序运行结果: