【数组】14周项目三。(正版)

来源:互联网 发布:shadowsocks linux 编辑:程序博客网 时间:2024/05/16 10:45
上机内容:C++程序的编写和运行
上机目的:掌握简单C++程序的编辑、编译、连接和运行的一般过程
我的程序:
/*Copyright (c) 2013, 烟台大学计算机学院* All rights reserved.* 作    者:赵玲玲* 完成日期:2013 年 11 月 27 日* 版 本 号:v1.0* 输入描述: 略* 问题描述:成绩处理* 程序输出: 略* 问题分析:数组应用,循环应用,不同功能的函数调用*/#include <iostream>#include <cmath>                                           //用到开方using namespace std;int cin_gra(int);                                          //输入成绩void cout_gra();                                           //输出最高最低和平均数void cout_s();                                             //输出标准偏差int a[100],n,i,ave;                                        //定义外部变量a[100](不会超过100名同学),输入的个数n,后面用到的i,aveint main(){    cout<<"小组共有多少名同学?";cin>>n;cin_gra(n);                                       //调用函数cout_gra();cout_s();    return 0;}//输入成绩int cin_gra(int n){cout<<"请输入同学的成绩(1-100):"<<endl;for(i=1;i<=n;i++)                                  //车轮式的输入成绩{cout<<"输入第"<<i<<"位同学的成绩:";//freopen("input.txt","r",stdin);这里没法用。。。cin>>a[i];if(a[i]>100||a[i]<0){cout<<"输入第"<<i<<"位同学的成绩:"; //如果输入的成绩大于100,提示错误i--;}}return 0;}void cout_gra(){int max=0,min=100,num1=0,num2=0,sum=0;//给max赋值为0,肯定都比他大;同理给min赋值为100for(i=1;i<=n;i++){                                  if(max<a[i])                                //如果有比max还大的数,就将最大值的值给max{max=a[i];}if(min>a[i])                                //同理求min{min=a[i];}sum+=a[i];                                  //求出总和ave=sum/n; }ave=sum/n;                                           //求平均数for(i=1;i<=n;i++){if(max==a[i])                               //求得最高分的人数{num1++;}if(min==a[i])                               //求得最低分的人数{num2++;}}cout<<"最高成绩为:"<<max<<"  "<<"最低成绩为:"<<min<<"  "<<"平均成绩为:"<<ave<<endl;cout<<"取得最高成绩"<<max<<"分的共"<<num1<<"人,";cout<<"他们的学号是:";for(i=1;i<=n;i++){if(max==a[i]){cout<<i<<" ";                       //学号}}cout<<endl;cout<<"取得最低成绩"<<min<<"分的共"<<num2<<"人,";cout<<"他们的学号是:";for(i=1;i<=n;i++){if(min==a[i]){cout<<i<<" ";}}cout<<endl;    return ;}//标准偏差void cout_s(){double s1=0,s;for(i=1;i<=n;i++){s1+=(a[i]-ave)*(a[i]-ave);                  //先在循环里面讲平方根里面的除数求出}s=sqrt(s1/(n-1));                                    //求出标准偏差cout<<"标准偏差是:"<<s<<endl;return ;}



运行结果:
心得体会: 一开始把max和min的赋值弄到for循环里面去了,导致每次循环都是重新赋值,师哥就是棒!

                     学号那里的也根据王颖的做出来了,当时想的太复杂,其实很简单的。。。
知识点总结:一些细节

原创粉丝点击