为了账号安全,请及时绑定邮箱和手机立即绑定

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

#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 回答

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

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926207    人
  • 解答问题       20797    个

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

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信