c++问题,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/09/21 19:41:48
就是输入十个学生成绩,求平均,再求出高出平均分的人数.子函数返回的就是高出平均的人数.可运行是每次返回都是0,肯定是子函数错了,可是哪里错了?
#include"iostream.h"
float ave;
int num(float *p,int n)
{
int j=0;float a[10];
for(p=a;p<a+10;p++)
if(*p>ave)
j++;
return j;
}
void main()
{
float *q,b[10],sum=0;
cout<<"输入10个学生的成绩:"<<endl;
for(q=b;q<b+10;q++)
{cin>>*q; sum=sum+*q;}
ave=sum/10;
cout<<"平均分为:"<<ave<<endl;
cout<<"超过平均分的人数:"<<num(q,10)<<endl;

}
我也没办法,老师让用指针..子函数直接定义数组那么算结果是对的,改成指针就错了/..

int num(float a[],int n)
{
int j=0;
float *p;
for(p=a;p<a+10;p++)
if(*p>ave)
j++;
return j;
}

另外cin>>q;

你把a赋给了p,a[10]没赋值啊,怎么可能行啊

其实我就不理解你为什么用指针 指针很不好控制 非常麻烦其实你这个程序的子函数不需要传址的 你大 可以不用指针 那样会方便许多 还有全局变量 也最好不要用 你可以在子函数中 再加一个参数 要尽量考虑程序的独立性