问题及代码:
/*
* Copyright (c) 2014, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作 者:陈旭
* 完成日期:2014年 11 月 20 日
* 版 本 号:v1.0
*
* 问题描述:按要求输出小组人数,成绩,学号等信息
* 输入描述:小组人数及成绩
* 程序输出:最高成绩,最低成绩,平均成绩,最高最低成绩的人数及学号
*/
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int score[50]; //保存成绩的数组,不会超过50名
int num,i; //小组人数
cout<<"小组共有多少名同学?";
cin>>num;
cout<<"请输入学生成绩:"<<endl;
for(i=0;i<num;i++)
{
cout<<"输入第"<<i<<"位同学的成绩:";
cin>>score[i];
if(score[i]>100||score[i]<0)
i--;//输入num名同学的成绩
}
cout <<endl;
int max=0,min=100,ave,sum=0;
for(i=0;i<num;i++)
{
sum=sum+score[i];
if(score[i]>max)
max=score[i];
if(score[i]<min)
min=score[i];
}
ave=sum/num;
cout <<"最高成绩为:"<<max<<",最低成绩为:"<<min<<",平均成绩为:"<<ave<<endl;
int a=0,b=0;
for(i=0;i<num;i++)
{
if(score[i]==max)
a++;
if(score[i]==min)
b++;
}
cout <<"取得最高成绩"<<max<<"分的共 "<<a<<" 人,他们的学号是:";
for(i=0;i<num;i++)
{
if(score[i]==max)
cout<<i<<" ";
}
cout <<endl;
cout <<"取得最低成绩"<<min<<"分的共 "<<b<<" 人,他们的学号是:";
for(i=0;i<num;i++)
{
if(score[i]==min)
cout<<i<<" ";
}
cout <<endl;
double S,N=num,m=0;
for(i=0;i<num;i++)
{
m=m+(score[i]-ave)*(score[i]-ave);
}
S=sqrt(m/(N-1));
cout <<"标准偏差为:"<<S<<endl;
return 0;
}
运行结果:
知识点总结:
通过多次循环的使用才的得到了最终的这个结果,需要注重对数组和for语句的运用。
学习心得:
对这样一个冗长的程序,做起来虽然很困难,但是最后改对时特别有成就感的。