第13周项目3-成绩处理函数版
2014-11-23 12:22
225 查看
/ *copyright (c)2014,烟台大学计算机学院 *All rights reserved *文件名称:123.cpp *作者:孙春红 *完成日期:2014年11月23日 *版本号:v1.0 * *问题描述:编写程序,输入小组人数及成绩,保证在0-100之间;输出小组的最高成绩、最低成绩、 平均数以及最高成绩和最低成绩的同学的人数和学号。 *输入描述:略。 *程序输出:略。 */ #include <iostream> #include<cmath> using namespace std; void input_score(int s[], int n); //将小组中n名同学的成绩输入数组s int get_max_score(int s[], int n); //返回数组s中n名同学的最高成绩值 int get_min_score(int s[], int n); //返回数组s中n名同学的最低成绩值 double get_avg_score(int s[], int n); //返回数组s中n名同学的平均成绩值 double get_stdev_score(int s[], int n); //返回数组s中n名同学成绩值的标准偏差 int count(int x, int s[], int n); //返回在数组s中n名同学中有多少人得x分(实参给出最高/低时,可以求最高/低成绩的人数) void output_index(int x, int s[], int n); //在函数中输出数组s中n名同学中得x分的学号(下标) int main(void) { int score[50]; //将score设为局部变量,通过数组名作函数参数,传递数组首地址,在函数中操作数组 int num; //小组人数也设为局部变量,将作为函数的实际参数 int max_score,min_score; cout<<"小组共有多少名同学?"; cin>>num; cout<<endl<<"请输入学生成绩:"<<endl; input_score(score, num); //要求成绩在0-100之间 max_score=get_max_score(score, num); cout<<endl<<"最高成绩为:"<<max_score<<",共有 "<<count(max_score, score, num )<<" 人。"; min_score=get_min_score(score, num); cout<<endl<<"最低成绩为:"<<min_score<<",共有 "<<count(min_score,score, num )<<" 人。"; cout<<endl<<"平均成绩为:"<<get_avg_score(score, num); cout<<endl<<"标准偏差为:"<<get_stdev_score(score, num); cout<<endl<<"获最高成绩的学生(学号)有:"; output_index(max_score,score, num); cout<<endl<<"获最低成绩的学生(学号)有:"; output_index(min_score,score, num); cout<<endl; return 0; } void input_score(int s[], int n) { for(int i=0; i<n; i++) { cout <<"输入第"<<i<<"位同学的成绩:"<<" "; cin >>s[i];//输入num名同学的成绩 if(s[i]<0||s[i]>100) i--; } return ; } int get_max_score(int s[], int n) //返回数组s中n名同学的最高成绩值 { int max,i; max=s[0]; for (i=0; i<n; i++) { if (s[i]>max) { max=s[i]; } } return max; } int get_min_score(int s[], int n) //返回数组s中n名同学的最低成绩值 { int min; min=s[0]; for (int i=1;i<n;i++) { if (s [i]<min) { min=s[i]; } } return min; } double get_avg_score(int s[], int n) //返回数组s中n名同学的平均成绩值 { int ave,sum=0; for (int i=0;i<n;i++) { sum+=s[i]; } ave=sum/n; return ave; } double get_stdev_score(int s[], int n) //返回数组s中n名同学成绩值的标准偏差 { int p=0,t,S,ave,sum=0; for (int i=0;i<n;i++) { sum+=s[i]; } ave=sum/n; for ( int i=0;i<n;i++) { t=(s [i]-ave)* (s[i]-ave); p+=t; } S=sqrt(p/(n-1)); cout <<"标准偏差为:"<<S<<endl; return S; } int count(int x, int s[], int n) //返回在数组s中n名同学中有多少人得最高分 { int i,b=0; for (i=0; i<n; i++) { if (s[i]==x) { b++; } } return b; } void output_index(int x, int s[], int n) //在函数中输出数组s中n名同学中得最高分的学号(下标) { for (int i=0; i<n; i++) { if (s[i]==x) { cout <<i<<" "; } } return ; }
运行结果:
知识点总结:
运用函数的调用以及一位数组的只是还有循环语句,编写程序完成成绩处理的函数版。
学习心得:
写这个代码真是麻烦啊,在原先程序的基础上,把原先一个程序拆分为多个函数,然后运用函数的调用,完成成绩的处理。在这次代码完成以后,我对函数的调用更加了解,也差不多明白了return的返回高如何使用。
相关文章推荐
- 第13周项目3成绩处理(函数版)
- 第13周项目3-成绩处理函数版
- 第13周上机实践项目3——成绩处理函数版
- 第13周项目3-成绩处理函数版
- 第13周 项目3 运用函数处理成绩
- 第13周项目3-成绩处理函数版
- 第13周项目3 -成绩处理函数版
- 第13周 项目3-成绩处理函数版
- 第13周项目3成绩处理函数版
- 2014秋C++第13周项目3参考-成绩处理函数版
- 第13周项目3-成绩处理函数版
- 第13周项目3-成绩处理函数版
- 第13周项目2-成绩处理(1)
- 第13周项目2成绩处理
- 【数组】项目二。成绩处理(无学号版)(函数版)
- 第十四周 项目3--成绩处理(函数版)
- 第十三周项目三成绩处理函数版
- 第十三周项目三 成绩处理函数版
- 2014秋C++第13周项目2参考-成绩处理
- 第十三周项目三——成绩处理函数版