2016我国科技成就:懂c的帮一下我

来源:百度文库 编辑:神马品牌网 时间:2024/04/30 05:41:27
#include <conio.h>
#include <stdio.h>
#define N 20

int fun(float *s,int n ,float *aver)
{float ave,t=0.0;
int count=0,k,i;
for (k=0;k<n;k++)
/************found************/
t+=s[k];
ave=t/n;
for (i=0;i<n;i++)
if(s[i]<ave) count++;
/************found************/
*aver=ave;
return count;
}

main()
{float s[30],aver;
int m,i;
clrscr();
printf("\nPlease enter m:");scanf("%d",&m);
printf("\nPlease enter %d mark :\n",m);
for(i=0;i<m;i++) scanf("%f",s+i);
printf("\nThe number of strudents : %d \n",fun(s,m,&aver));
printf("Ave=%f\n",aver);
}
在第2个found下面的*aver=ave;改为aver=&ave了为什么就不能技术平均分了啊,这两个式子是不是一个意思啊?

简单的说,第一个是把ave的值赋给main里面的aver,而第二个是把fun里的形参aver变为ave的地址,而原来main里面的aver的值并没有改变。