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语言入门
926207 学习 · 20797 问题
相似问题