李干嘛丷 2023-04-29 11:17 采纳率: 100%
浏览 18
已结题

关于#c语言#的问题:大一c语言:求解答:1.平均捐款额应该是48.666667,请问为什么这个程序输出的是48.666668

大一c语言:

img

求解答:1.平均捐款额应该是48.666667,请问为什么这个程序输出的是48.666668?
2.请问有什么方法能输出48.666666?

下面是我写的程序

#include <stdio.h>
void main()
{
    int i,j,t,p=0;
    int a[15];
    float b,s=0;
    printf("输入单人捐款额:");
    for(i=0;i<15;i++)
    {
    scanf("%d",&a[i]);
    if(a[i]>0) p++;
    }
    for(i=0;i<15;i++)
    s=s+a[i];
    b=s/15;
    for(i=0;i<14;i++)
    for(j=i+1;j<15;j++)
    if(a[i]<a[j])
    {
        t=a[i];
        a[i]=a[j];
        a[j]=t;
    }
    printf("有%d个人捐款了\n",p);
    printf("捐款人平均的捐款额为:%f\n",b);
    printf("将捐款额从大到小排序依次为:");
    for(i=0;i<15;i++)
    printf("%d ",a[i]);
    printf("\n");
}

  • 写回答

3条回答 默认 最新

  • threenewbee 2023-04-29 11:29
    关注

    浮点数存在精度误差,这是很正常的现象,你可以用double,再四舍五入

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月11日
  • 已采纳回答 5月3日
  • 创建了问题 4月29日