输入一个长度为8的整型数组,输出该数组的平均值(保留1位小数),输出数组中大于等于平均值的数组元素。
#include
main()
{
int a[8];
int i,sum=a[0];
double aver;
for(i=0;i<=7;i++)
{
scanf("%d",&a[i]);
}
for(i=1;i<=7;i++)
{
sum=sum+a[i];
}
aver=sum/8.0;
aver=(int)(aver*10+0.5)*0.1;
printf("平均值是%.1f\n",aver);
printf("大于等于平均值的元素是");
for(i=0;i<=7;i++)
if(a[i]>=aver)
printf("%-5d",a[i]);
}
aver=(int)(aver*10+0.5)*0.1; //这行可以删掉,不需要
printf("平均值是%.1f\n",aver);
直接写printf("平均值是%.1f\n",aver); 就可以了,输出会自动四舍五入的
double类型如果使用了%f格式可能会导致输出错误
printf("平均值是%.1f\n",aver);
改成
printf("平均值是%.1lf\n",aver);
sum=a[0]要写在scanf之后呀,a还没赋值你给sum赋值,它能有值吗
你这样搞完全是多此一举,直接sum=0
后面循环从0开始,不就得了,为什么单独把a[0]赋值给sum
aver=(int)(aver*10+0.5)*0.1;这又是要闹哪样,没事闲的吗,直接输出aver不就得了
这个很简单,c语言是不支持四舍五入的
如果想要达到四舍五入的效果
可以在输出的时候加上0.05
比如说,你的结果是4.8345,然后加上0.05,其实还是4.8845,保留一位小数,那就是4.8(四舍)
如果结果是4.8631,然后加上0.05,那就是4.9131,
,保留一位小数,那就是4.9(五入)
把int i,sum=a[0];改为int i, sum=0;因为此时数组还未赋值,a[0]的值是未知的,后面求和部分也相应地改一下从a[0] 开始求和