问题1:max,&max,这里有问题,max只声明,没有具体的定义,那么在内存中是没有分配空间的,所以&max为不确定地址。因此最好先初始化如
max=0.0;然后在&max.其他也一样。
问题2:明明average返回值可以设为整数,却用浮点数作返回值。
问题3:明明用数组作参数,非要用指针.函数原型应为
int average(float s[],float *k,float *m,float *n,float highest[])
源代码
#include "stdio.h"
#define N 4
int average(float s[],float *k,float *m,float *n,float highest[]);
int main(){
int i=0,num=0;
float score[N],max=0.0,min=0.0,aver=0.0,hign[N]={0};
printf("请输入%d个人的成绩:\n",N);
for (i=0; i
scanf("%f",&score[i]);
}
num=average(score,&max,&min,&aver,hign);
for(i=0;i
printf("最高分%f:\n",max);
printf("最底分%f:\n",min);
printf("高于平均分的个数:%d\n",num);
getchar();
return 0;
}
int average(float s[],float *k,float *m,float *n,float highest[]){
int i=0,j=0;
*k=*m=*n=s[0];
for(i=1;i
printf("test%f",*n);
for(i=0;i
if(*k if(s[i]>*n) highest[j++]=s[i];
}
return j;
}
#include "stdio.h"
#define N 5
main()
{
float average(float *s,float *k,float *m,float *n,float *highest);
int i=0;
float num,score[N],max,min,aver,hign[N]={0};
printf("ÇëÊäÈë%d¸öÈ˵ijɼ¨:\n",N);
for (i=0; i
printf("score[%d]=",i);
scanf("%f",&score[i]);
}
num=average(score,&max,&min,&aver,hign);
printf("¸ßÓÚƽ¾ù·ÖµÄ·ÖÊý:");
for(i=0;i
printf("×î¸ß·Ö:%f\n",max);
printf("×îµ×·Ö:%f\n",min);
printf("¸ßÓÚƽ¾ù·ÖµÄ¸öÊý:%.0f\n",num);
}
float average(float *s,float *k,float *m,float *n,float *highest)
{int i=0,j=0;
float max=s[0],min=s[0],sum=0; //
*k=max;*m=min;
for(i=0;i
*n=sum/N;
for(i=0;i
*m=s[i];
if(max*k=s[i];
if(s[i]>*n) //
highest[j++]=s[i]; //
}
return (j); //
}