C++中函数问题2

来源:百度知道 编辑:UC知道 时间:2024/06/24 17:27:24
函数的功能是学生成绩从高分到低分排序,并统计优秀与不及格的人数。用下面方法实现,函数形式为:
void fun(int s[],int n,int &x,int &y);
希望详细点,谢谢~
#include "iostream.h"
#include "stdlib.h"
const int c = 60;
const int a = 90;
void fun(int s[], int n,int &x, int&y)
{
int an = 0;//优秀的个数
int bn = 0;//不及格的个数
for(int i=0; i<n; i++)
{
if(s[i] > a)
x=an++;
else if(s[i] < c)
y=bn++;
}
}
void main()
{
int i,n,s[10000],x(0),y(0);
cout<<"请输入学生的个数:"<<endl;
cin>>n;
cout<<"成绩如下:"<<endl;
for(i=0;i<n;i++)
s[i]=rand()%101;
for(i=0;i<n;i++)
cout<<s[i]<<endl;
fun(s,n,x,y);
cout<<"优秀个数:"<<x<<'\n'<<"不及格个数:"<<y<<endl;
}
为什么这样我算出来的结果,个数都比实际的小1?

///你的代码:
void fun(int s[], int n,int &x, int&y)
{
int an = 0;//优秀的个数
int bn = 0;//不及格的个数
for(int i=0; i<n; i++)
{
if(s[i] > a)
x=++an; /////////////////// 这样就是先加一之后再赋给x,原来是先赋给x之后再自加一
else if(s[i] < c)
y=++bn; ///////////////////
}
}

#include<iostream>
using namespace std;

void fun(int s[],int n,int &x,int &y)
{
int j = n - 1, temp, i;
while(j > 0)
{
int k = j;
j = 0;
for (i = 0; i < k; i++) // 不能等于
{
if (s[i] < s[i + 1])
{
temp = s[i];
s[i] = s[i + 1];
s[i + 1] = temp;
j = i;
}
}
}
i = 0;
while ( i < n && s[i] >= 90)
{
i++;
}
x = i;
i = n - 1;
while(i >= 0 && s[i] < 60)
{
i--;
}
y = n - 1 - i;

}

int main()
{
int s[10] = {87, 75, 60, 49, 93,