返回:贺老师课程教学链接
【项目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; }
[参考解答]
#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]); } } //求第i门课的最高成绩,i=3时是总分,下类似 double max(double s[][4],int n,int j) { double m=s[0][j]; int i; for(i=1; i<n; ++i) if (m<s[i][j]) m=s[i][j]; return m; } double min(double s[][4],int n,int j) { double m=s[0][j]; int i; for(i=1; i<n; ++i) if (m>s[i][j]) m=s[i][j]; return m; } double avg(double s[][4],int n,int j) { double sum=s[0][j]; int i; for(i=1; i<n; ++i) sum+=s[i][j]; return sum/n; }
时间: 2024-09-20 15:37:22