2014秋C++第13周项目2参考-成绩处理

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。 

【项目2- 成绩处理】
在数组score中将要存储某小组C++程序设计的成绩,请设计实现下面的各功能函数,并在main函数中调用,组合成一个完整的应用:
(1)输入小组人数及成绩,要保证成绩在0-100之间;
(2)输出该小组的最高成绩、最低成绩、平均成绩;
(3)输出考得最高成绩和最低成绩的同学的人数;
(4)输出考得最高成绩和最低成绩的同学的学号(设数组下标即学号,可能有相同的成绩)。
(5)(选做)求出所有同学成绩的标准偏差,标准偏差公式为,其中为xi样本(即某同学成绩),x(上带一横)为均值(前面已经求出),N为样本数目;
提示1:可以采用“渐进式”策略,实现一个功能后调试通过,再实现下一个功能。
提示2:界面参考见图

提示3:请思考,如果这里的同学人数很多,例如500、10000名,这个程序中通过键盘输入的方式,已经显得无能为力!如何解决?见本讲项目7。

参考解答:

#include<iostream>
#include<cstdio>
#include<Cmath>
using namespace std;
int main(void)
{
    int score[50];    //保存成绩的数组,不会超过50名
    int num,i;        //小组人数
    //freopen("input.txt","r",stdin);
    cout<<"小组共有多少名同学?";
    cin>>num;
    cout<<"请输入学生成绩:"<<endl;
    //输入num名同学的成绩
    for(i=0; i<num; i++)
        do
        {
            cout<<"输入第 "<<i<<" 位同学的成绩:";
            cin>>score[i];
        }
        while(score[i]<0||score[i]>100);
    //求最高成绩、最低成绩和平均成绩
    int max = -1,min=999,sum=0,ave;
    for(i=0; i<num; i++)
    {
        sum+=score[i];
        if(max<score[i])
            max= score[i];
        if(min>score[i])
            min = score[i];
    }
    ave=sum/num;
    cout<<endl<<"最高成绩为:"<<max	<<",最低成绩为:"<<min<<",平均成绩为:"<<ave<<endl;
    //求考得最高成绩和最低成绩人数
    int max_num = 0, min_num =0;
    for(i=0; i<num; i++)
    {
        if(max==score[i])
            max_num++;
        if(min==score[i])
            min_num++;
    }
    //输出考得最高成绩的人数和学号
    cout<<"取得最高成绩"<<max<<"分的共 "<<max_num<<" 人,他们的学号是:";
    for(i=0; i<num; i++)
    {

        if(max==score[i])
            cout<<i<<" ";
    }
    cout<<endl;
    cout<<"取得最低成绩"<<min<<"分的共 "<<min_num<<" 人,他们的学号是:";
    //输出考得最低成绩的人数和学号
    for(i=0; i<num; i++)
    {

        if(min==score[i])
            cout<<i<<" ";
    }
    cout<<endl;
    //求出并输出标准偏差(选做)
    sum = 0;
    int x; //x表示成绩与均值之差
    for(i=0; i<num; i++)
    {
        x=score[i]-ave;//ave是前面求出的平均成绩
        sum+=x*x;
    }
    cout<<"标准偏差为:"<<sqrt(double(sum)/(num-1))<<endl;
    return 0;
}
=================== 迂者 贺利坚 CSDN博客专栏=================
|== IT学子成长指导专栏 专栏文章的分类目录(不定期更新) ==|
|== C++ 课堂在线专栏  贺利坚课程教学链接(分课程年级) ==|
|== 我写的书——《逆袭大学——传给IT学子的正能量》    ==|
===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====
时间: 2024-08-30 03:19:01

2014秋C++第13周项目2参考-成绩处理的相关文章

2014秋C++第13周项目3参考-成绩处理函数版

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  [项目3 - 成绩处理函数版]项目2的另一种实现.输入.求最大/小值等所有功能都通过自定义函数完成.这种设计貌似比项目2麻烦,但其结构有更多的优点,尤其是当程序的规模更大时.通过这个项目,学会将数组名用作函数的参数.下面建议的自定义函数的声明和main()函数,你需要定义这些函数,并且加上必

2014秋C++第13周项目1参考-数组大折腾

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  [项目1 - 数组大折腾](1)创建一个有20个元素的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入后10个元素的值,从前往后(从第0个到第19个)输出数组中元素的值,每5个元素换一行. 参考解答: #include <iostream> using nam

2014秋C++第13周项目6参考-体验文件操作

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  [项目6-体验文件操作]数据下载链接(1-预备)阅读并理解附后的<文件操作初体验>(必要时运行这些程序).(2-热身)从键盘读入若干名学生的英语成绩,编程求出这次考试的平均成绩,并统计输出优秀人数和不及格人数. #include <fstream> //操作文件必写

2014秋C++第13周项目4参考-数组的排序

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  [项目4 - 数组的排序](1)编写函数,完成冒泡排序,要求不能改变下面的main函数. //两个函数bubble_sort和output_array的声明 int main( ) { int a[20]={86,76,62,58,77,85,92,80,96,88,77,67,80,68,

2014秋C++第13周项目5参考-字符串操作

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  [项目5-字符串操作](1)阅读下面的程序,完成类似的字符统计功能 #include<iostream> #include<cstdio> using namespace std; int main() { char str[50]; int i=0,n=0; cou

2014秋C++第17周 项目6参考 学生成绩统计

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  [项目6-学生成绩统计]每位同学的信息学号.姓名.C++.高数.英语成绩.定义一个学生成绩的结构体数组,其中的数据成员包括学号(char num[13]).姓名(name).三门课的成绩(grade).总分(score).均分(average)).(1)从键盘上输入N名学生的信息(N定义为常

2014秋C++ 第13周项目 C++中的一维数组

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  [项目1 - 数组大折腾](1)创建一个有20个元素的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入后10个元素的值,从前往后(从第0个到第19个)输出数组中元素的值,每5个元素换一行. int main( ) { int a[20]={...}; //初始化前10个元

2014秋C++第5周项目3参考-简单分支问题体验

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,实践要求见http://blog.csdn.net/sxhelijian/article/details/39493833. 课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看. [项目3-简单分支问题体验]至少选择(1)-(3)中的一个完成体验,小组共同完成(4) 阅读课件中"给两个数,求两数中的大者"例子(见课件),结合对

2014秋C++第11周项目5参考-当年第几天

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  [项目5-当年第几天]定义一个函数,其参数为年.月.日的值,返回这一天为该年的第几天.要求在main函数中输入年月日,然后调用这个函数求值,并在main函数中输出结果. int days(int y, int m, int d); int main() { int year, month,