(1)输入学生的实际人数num,在输入各科的成绩时,输入3科成绩后可以自动求出总分,并将数据全保存到数组中;
(2)输出各门课及总分的最高成绩、最低成绩、平均成绩。
/* *Copyright (c) 2014,烟台大学计算机学院 *All gight reserved. *文件名称:temp.cpp *作者:邵帅 *完成时间:2014年11月27日 *版本号:v1.0 */ #include<iostream> #include<string> using namespace std; 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; string temp; double score[100][4]; //设一个班最多100人,实际按输入来 string course[4]= {"高等数学","英语","C++","总分"}; cout<<"输入学生人数:"; cin>>num; //(1)输入成绩并求出总分 input(score,num); //(2)输出成绩 output(score,num); //(3)输出各门课及总分的最高成绩、最低成绩、平均成绩和成绩的标准偏差; for(i=0; i<4; ++i) { cout<<course[i]<<"的最高成绩是"<<max(score,num,i)<<", "; cout<<"最低成绩是"<<min(score,num,i)<<", "; cout<<"平均成绩是"<<avg(score,num,i)<<", "; cout<<endl; } return 0; } void input(double s[][4],int n) { int i,j,sum; cout<<"请依次输入高等数学、英语、C++的成绩:"<<endl; for (i=0,sum=0; i<n; i++,sum=0) { cout<<"请输入第"<<i<<"名同学的成绩:"; for (j=0; j<3; j++) { cin>>s[i][j]; sum+=s[i][j]; } s[i][3]=sum; } } void output(double s[][4],int n) { cout<<"依次输出高等数学、英语、C++和总分的成绩:"<<endl; int i,j; for (i=0; i<n; i++) { cout<<"第"<<i<<"位学生成绩为:"; for (j=0; j<4; j++) cout<<s[i][j]<<" "; cout<<endl; } } double max(double s[][4],int n,int i) { int j; double max; max=s[0][i]; for (j=0; j<n; j++) if (s[j][i]>max) max=s[j][i]; return max; } double min(double s[][4],int n,int i) { int j; double min; min=s[0][i]; for (j=0; j<n; j++) if (s[j][i]<min) min=s[j][i]; return min; } double avg(double s[][4],int n,int i) { int j; double avg,sum=0; for (j=0; j<n; j++) sum+=s[j][i]; avg=sum/n; return avg; }
运行结果:
(3)增加用数组string name[]表示同学们的姓名,使姓名与成绩的下标保持一致(例如name[1]和score[1][0]、score[1][1]、score[1][2]和score[1][3]表示同一位同学的数据)。请在写上面的程序的基础上,输出获得最高成绩的同学的名单。
/* *Copyright (c) 2014,烟台大学计算机学院 *All gight reserved. *文件名称:temp.cpp *作者:邵帅 *完成时间:2014年11月27日 *版本号:v1.0 */ #include<iostream> #include<string> using namespace std; void input(double s[][4],string name[],int n); //输入成绩 void output(double s[][4],string name[],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门课的平均成绩 double namemax(double s[][4],int n,int i); int main() { int i,num,j,m=0; int a[100]; int max1,o; string temp; double score[100][4]; //设一个班最多100人,实际按输入来 string course[4]= {"高等数学","英语","C++","总分"}; string name[100]; cout<<"输入学生人数:"; cin>>num; //(1)输入成绩并求出总分 input(score,name,num); //(2)输出成绩 output(score,name,num); //(3)输出各门课及总分的最高成绩、最低成绩、平均成绩和成绩的标准偏差; for(i=0; i<4; i++,m=0) { max1=max(score,num,i); for (o=0,j=0; j<num; j++) if (max1==score[j][i]) { a[m]=j; m++; o++; } cout<<course[i]<<"最高成绩是"<<max(score,num,i)<<", "; cout<<"最低成绩是"<<min(score,num,i)<<", "; cout<<"平均成绩是"<<avg(score,num,i)<<", "; cout<<"最高成绩的同学是:"; for (m=0; m<o; m++) cout<<name[a[m]]<<" "; cout<<endl; } return 0; } void input(double s[][4],string name[],int n) { int i,j,sum; cout<<"请依次输入高等数学、英语、C++的成绩:"<<endl; for (i=0,sum=0; i<n; i++,sum=0) { cout<<"请输入第"<<i<<"名同学的姓名:"; cin>>name[i]; cout<<"请输入"<<name[i]<<"同学的成绩:"; for (j=0; j<3; j++) { cin>>s[i][j]; sum+=s[i][j]; } s[i][3]=sum; } } void output(double s[][4],string name[],int n) { cout<<"依次输出高等数学、英语、C++和总分的成绩:"<<endl; int i,j; for (i=0; i<n; i++) { cout<<"第"<<i<<"位学生"<<name[i]<<"成绩为:"; for (j=0; j<4; j++) cout<<s[i][j]<<" "; cout<<endl; } } double max(double s[][4],int n,int i) { int j; double max; max=s[0][i]; for (j=0; j<n; j++) if (s[j][i]>max) max=s[j][i]; return max; } double min(double s[][4],int n,int i) { int j; double min; min=s[0][i]; for (j=0; j<n; j++) if (s[j][i]<min) min=s[j][i]; return min; } double avg(double s[][4],int n,int i) { int j; double avg,sum=0; for (j=0; j<n; j++) sum+=s[j][i]; avg=sum/n; return avg; }
运行结果:
@ Mayuko