这有什么问题吗?(6-12)

来源:6-12 综合练习

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才对嘛?

写回答 关注

1回答

  • Green__Wang
    2017-07-12 15:25:18

    发现问题了,精度不够,应当把float改成double,之后输出就对了,然后发现个小技巧,在输出的时候 %f 中间加入"0.x" x表示所留小数位数

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926026 学习 · 20793 问题

查看课程

相似问题