#include"stdio.h"
#include"stdlib.h"
main()
{int i,j,s=0,max,min,a[10];
float ave=0;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max=min=a[0];
for(j=0;j<10;j++)
{
for(i=0;i<10-j;i++)
if(a[i]>max)max=a[i];
else if(a[i]<min)min=a[i];
s+=a[i];
}
ave=s/10.0;
printf("max=%d,min=%d,ave=%.2f",max,min,ave);
}
为什么算出来的s总是少加了第一项??求解答
这里面没必要双重循环
#include"stdio.h"
#include"stdlib.h"
int main()
{
int i,j,s=0,max,min,a[10];
float ave=0;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max=min=a[0];
for(i=0;i<10;i++)
{
if(a[i]>max)max=a[i];
if(a[i]<min)min=a[i];
s+=a[i];
}
ave=s/10.0;
printf("max=%d,min=%d,ave=%.2f",max,min,ave);
return 0;
}
少了第一项的原因:
题主在上面的代码中在a[0]中赋了值,
但是其之后循环中的j,最大为9,所以下面的i最小只能取到1,取不到0。
所以会加不到a[0]