Green__Wang
2017-07-12 11:39
#include <stdio.h>
int main()
{
int score[]={67,98,75,63,82,79,81,91,66,84};
float sum=0;
float aver=0;
int i,j;
for(i=8; i>=0; i--)
{
for(j=0;j<=i;j++)
{
if( score[j]>score[j+1])
{
double temp;
temp = score[j];
score[j] = score[j+1];
score[j+1] = temp ;
}
}
}
for(i=0;i<10;i++)
{
if(i != 9)
printf("%d, ", score[i]);
else
printf("%d", score[i]);
}
for(i=0;i<10;i++)
sum=score[i]+sum;
printf("\n总分是%f分\n",sum);
aver=sum / 10 ;
printf("平均分是%f分\n",aver);
printf("最高分是%d分\n",score[9]);
printf("最低分是%d分\n",score[0]);
return 0;
}这个输出的结果里平均分总是78.599998,不应该是78.600000才对嘛?
发现问题了,精度不够,应当把float改成double,之后输出就对了,然后发现个小技巧,在输出的时候 %f 中间加入"0.x" x表示所留小数位数
C语言入门
928162 学习 · 21543 问题
相似问题