融汇温泉城圣地亚北区:求助 C++编程问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 00:57:53
请问以下代码哪里有问题?
/*统计各分数段人数
void analyze(int s[], int n, int h[], int m)
其中s数组中存放的是学生成绩,h数组中存放的是各分 段人数。
void print(int h[], int m)
打印出用星号组成的直方图
*/
#include<iostream>
using namespace std;

void analyze(int s[], int n, int h[], int m);
void print(int h[], int m);
int main()
{
int n;
cout<<"请输入学生的个数:";
cin>>n;
const int arraysize=n;
int s[arraysize];
int h[5];
for(int i=0;i<=n-1;i++)
{
cout<<"请输入第"<<i+1<<"个学生的成绩:";
cin>>s[i];
}
analyze(s,arraysize,h,5);
return 0;
}
void analyze(int s[], int n, int h[], int m)
{
int i=0;
while(i<n-1)
{
if(s[i]>=90) h[1]++;
else if(s[i]>=80) h[2]++;
else if(s[i]>=70) h[3]++;
else if(s[i]>=60) h[4]++;
else h[5]++;
i++;
}
print(h,5);
}
void print(int h[], int m)
{
for(int i=0;i<m;i++)
{
cout<<i+1<<":";
for(int j=0;j<h[i];j++)
cout<<"*";
cout<<endl;
}
}

void analyze(int s[], int n, int h[], int m)有问题
应改成void analyze(int s[], int n, int*&h, int m)
#include<iostream>
using namespace std;

void analyze(int s[], int n, int*&h);
void print(int h[], int m);
int main()
{
int n;
cout<<"请输入学生的个数:";
cin>>n;
const int arraysize=n;
int s[arraysize];
int *h;
for(int i=0;i<=n-1;i++)
{
cout<<"请输入第"<<i+1<<"个学生的成绩:";
cin>>s[i];
delete[] h;
}
analyze(s,arraysize,h);
return 0;
}
void analyze(int s[], int n, int *&h)
{
h=new int[5];
int i=0;
while(i<n-1)
{
if(s[i]>=90) h[1]++;
else if(s[i]>=80) h[2]++;
else if(s[i]>=70) h[3]++;
else if(s[i]>=60) h[4]++;
else h[5]++;
i++;
}
print(h,5);
}
void print(int h[], int m)
{
for(int i=0;i<m;i++)
{
cout<<i+1<<":";
for(int j=0;j<h[i];j++)
cout<<"*";
cout<<endl;
}
}