/*函数的功能是将学生成绩从高分到低分排序,并统计优秀与不及格的人数。用下面两种方法实现:
(1)函数形式为:int fun1(int s[],int n,int *x)
要求优秀人数通过return返回,不及格人数通过指针参数返回结果。
(2)函数形式为:void fun2(int s[],int n,int &x,int &y)
要求优秀与不及格的人数通过引用参数返回结果。
分别编二个函数,学生人数从键盘输入。*/
#include<iostream>
#include <string.h>
using namespace std;
int fun1(int s[],int n,int *x);
void fun2(int s[],int n,int &x,int &y);
int main()
{
int n;
int s[100]={0};
cout<<"请输入学生的总人数:";
cin>>n;
for(int i=0;i<n;i++)
cin>>s[i];
int x=0,y=0;
cout<<"优秀的人数为:"<<fun1(s,n,&x)<<endl;
cout<<"不及格的人数为:"<<x<<endl;
cout<<"下面使用函数二显示结果:"<<endl;
x=0,y=0;
fun2(s,n,x,y);
cout<<"优秀的人数为:"<<x<<endl;
cout<<"不及格的人数为:"<<y<<endl;
system("pause");
return 0;
}
int fun1(int s[],int n,int *x) {
int i,j,imax,w;
int excellent=0;
for(i=0; i<n-1; i++) {
imax=i;
for(j=i+1; j<n; j++)
if(s[j]>s[imax])imax=j;
w=s[imax];
s[imax]=s[i];
s[i]=w;}
for(int k=0; k<n; k++) {
if (s[k]>=90)excellent++;
if(s[k]<60)(*x)++;
}
return excellent;
}
void fun2(int s[],int n,int &x,int &y)
{int i=0,j=0,t=0;
int imax;
x=y=0;
for(i=0;i<n-1;i++)
{imax=i;
for(j=i+1;j<n;j++)
if(s[j]>s[imax])imax=j;
t=s[i];
s[i]=s[imax];
s[imax]=t;}
cout<<"\n排序后:";
for(i=0;i<n;i++)cout<<s[i]<<" ";
for(i=0;i<n;i++){if(s[i]>=90) x++;
if(s[i]<60) y++;}
}