问题描述:
项目2 的另一种实现。输入、求最大/小值等所有功能都通过自定义函数完成。这种设计貌似比项目 2麻烦,但其结构有更多的优点,尤其是当程序的规模更大时。通过这个项目,学会将数组名用作函数的参数。
下面建议的自定义函数的声明和 main()函数,你需要定义这些函数,并且加上必要的
#include<...>文件。
代码:
/*
*copyright (c) 2014,烟台大学计算机学院
*all rights reserved.
*文 件 名 : 成绩处理.cpp
*作 者 :张 鹏
*完成日期 :2014年11月23号
*版 本 号 :v1.1
*
*问题描述 :处理成绩。
*输入描述 :无。
*程序输出 :无。
*/
#include <iostream>
#include <cmath>
using namespace std;
void m(int s[ ],int ); //自定义函数求最高分相关。
void x(int s[ ],int ); //自定义函数求最低分相关。
void s1(int s[],int ); //自定义函数求平均分相关,
int main()
{
int s[50],n,i;
cout<<"小组共有多少名同学?";
cin>>n;
i=0;
cout<<"请输入学生成绩(0--100)"<<endl;
while (i<n)
{
cout<<"输入第"<<i<<"为成绩:";
cin>>s[i];
if (s[i]<0||s[i]>100)
i--;
i++;
}
m (s,n);
x(s,n);
s1(s,n);
return 0;
}
void m(int s[],int n)
{
int max=0,b=0,c=0,a[50];
while (b<n)
{
if (s[b]>max)
max=s[b];
b++;
}
while (b>=0)
{
if (s[b]==max)
{
a[c]=b;
c++;
}
b--;
}
cout<<"最高成绩为:"<<max<<endl;
cout<<"取得最高成绩"<<max<<"分的共"<<c<<"人"<<"他们的学号是:";
b=0;
while (b<c){
cout<<a[b]<<" ";
b++;}
cout<<endl;
}
void x(int s[],int n)
{
int min=100,b=0,a[50],c=0;
while (b<n)
{
if (s[b]<min)
min=s[b];
b++;
}
while (b>=0)
{
if (s[b]==min)
{
a[c]=b;
c++;
}
b--;
}
cout<<"最低成绩为:"<<min<<endl;
cout<<"取得最低成绩"<<min<<"分的共"<<c<<"人"<<"他们的学号是:";
b=0;
while (b<c){
cout<<a[b]<<" ";
b++;}
cout<<endl;
}
void s1(int s[],int n)
{
int i=0,ave=0;
double cai=0;
while (i<n)
ave+=s[i++];
ave/=n;
cout<<"平均成绩为:"<<ave<<endl;
i=0;
while (i<n)
{
cai+=pow(s[i]-ave,2);
i++;
}
cai=sqrt(cai/(n-1));
cout<<"标准差为:"<<cai;
}
运行结果: