问题及代码:
<pre class="cpp" name="code">/*
*Copyright (c)2014,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:grade.cpp
*作 者:单昕昕
*完成日期:2014年11月23日
*版 本 号:v1.0
*
*问题描述:保存成绩的数组。
*程序输出:输出最高成绩、最低成绩和平均成绩,考得最高成绩和最低成绩人数以及学号,标准偏差。
*/
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int score[50]; //保存成绩的数组,不会超过50名
int num,i=1,j,s,high=-1,low=101,sum=0,highc=0,lowc=0;
double ave;//令i=1,是为了输出时显示第一个为第“一”位同学的成绩。
cout<<"小组共有多少名同学?"<<endl;
cin>>num;
cout<<"请输入学生成绩:"<<endl;
while(i<=num) //输入num名同学的成绩
{
cout<<"请输入第"<<i<<"位同学的成绩:";
cin>>s;
if(s>=0&&s<=100) //成绩范围为0-100
{
score[i]=s;
sum+=s; //计算总和
if(s>high) //比较最高分最低分
high=s;
if(s<low)
low=s;
++i;
}
else
cout<<"请检查数据并重新输入学生成绩(0-100):"<<endl; //输入错误后要重新输入
continue;
}
ave=sum/num;
cout<<"最高成绩为:"<<high<<"分;"<<"最低成绩为:"<<low<<"分;"<<"平均成绩为:"<<ave<<"分。"<<endl;
for(j=1; j<=num; j++) //求出并输出考得最高成绩和最低成绩人数
{
if(score[j]==high)
highc++;
if(score[j]==low)
lowc++;
}
cout<<"取得最高成绩"<<high<<"的共有"<<highc<<"人,他们的学号为:";
for(j=1; j<=num; j++) //再次筛选出考得最高成绩和最低成绩的学号
{
if(high==score[j])
cout<<j<<" ";
}
cout<<endl;
cout<<"取得最低成绩"<<low<<"的共有"<<lowc<<"人,他们的学号为:";
for(j=1; j<=num; j++)
{
if(low==score[j])
cout<<j<<" ";
}
cout<<endl;
double m=0;
int x,y;
for(j=1; j<=num; j++)
{
x=score[j]-ave;
y=x*x;
m+=y;
}
cout<<"标准偏差为:"<<sqrt(m/(num-1))<<endl;
return 0;
}
运行结果:
知识点总结:
运用数组,输出最高成绩、最低成绩和平均成绩,考得最高成绩和最低成绩人数以及学号,标准偏差。
学习心得:
感觉很像之前写过的大奖赛计分系统,不过这里用的是数组的知识。