您的位置:首页 > 其它

提高第36课时,实践2,项目2-多科成绩单

2015-05-26 20:33 246 查看
/*
*Copyright(c) 2015/5/26 CSDN博客
*All rights reserved.
*文件名称:main.c
*作    者:金叶
*完成日期:2015/5/26
*版本号:V1.0
*问题描述:【项目2-多科成绩单】
*某班不超过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");
}
return 0;
}

void input(double s[][4],int n)
{
printf("输入学生成绩(按高数、英语、C++的顺序依次输入:)\n");
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)
{
printf("输入的学生成绩为:\n");
printf("学号\t高数\t英语\tC++\t总分\n");
int i;
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)
{
double max=s[0][i];
int j;
for (j=1;j<n;j++){
if (max<s[j][i])
max=s[j][i];
}
return max;
}

double min(double s[][4],int n,int i)
{
double min=s[0][i];
int j;
for (j=1;j<n;j++){
if (min>s[j][i])
min=s[j][i];
}
return min;
}

double avg(double s[][4],int n,int i)
{
int j;
double sum=s[0][i];
double avg;
for (j=0;j<n;j++){
sum+=s[j][i];
}
return avg=sum/n;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: