在score数组中,内放10学生成绩,求平均分,最高分和最低分。正确程序如下:
#include <stdio.h>
#define N 10
void fun(float *a,int n,float *max,float *min,float *average);
main()
{float ave=0,max,min;
float score[10];
int i;
printf("score is:");
for(i=0;i<N;i++)
scanf("%f",&score[i]);
fun(score,N,&max,&min,&ave);
printf("max=%f,min=%f,ave=%f.\n",max,min,ave);
getch();
return 0;
}
void fun(float *a,int n,float *max,float *min,float *average)
{int i;
float sum=*(a+0);
*max=*min=*(a+0);
/*我把这一行改成了*max=*min=0,接着又把for循环改为for(i=0;i<n;i++),这时输入1到10,我想,我所输入的数都是大于0的,我从0开始循环,结果应该不变啦,可是max=10.000000(它不变),min=0.00000(它错误),ave=5.600000(比正解多了0.1.)*/
for(i=1;i<n;i++) {
if(*(a+i)>*max) *max=*(a+i);
else if(*(a+i)<*min) *min=*(a+i);
sum+=*(a+i);
*average= sum/n;}
}
我哪li理解错了?