BUG小白BUG 2022-10-12 12:18 采纳率: 88.9%
浏览 72

看一看。这串代码。不知道哪里有问题。反正就是不能过去。

img

img


#include <stdio.h>
float count_discount(int x, float y,float pay)
{
    double sum;
    if (y<(200/8.38))
    {
        sum = y * 0.3;// 每升优惠3毛
    if (x == 5)  // 星期五每升额外优惠1毛 
        sum += y * 0.1;
    }
    else if (y==(200/8.38))
    {
        sum = 0;
    }
    else
    {
        y = y - (200 / 8.38);
        sum = y * 0.3;// 每升优惠3毛
        if (x == 5)  // 星期五每升额外优惠1毛 
            sum += y * 0.1;
    }
    sum = (int)(sum*100.0 + 0.5) / 100.0;
       return sum;
}
float coupondiscount(float a)
{
    if (a>=200)
    {
        return 20;
    }
    else 
    {
        return 0;
    }
}
int main()
{
    int t, x;
    float y;
    float pay, discount;
    scanf("%d", &t);
    while (t--)
    {
        scanf("%d", &x);
        scanf("%f", &y);
        pay =(int)((8.38 * y)*100+0.5)/100.0;
        discount = count_discount(x, y,pay);
        if (pay >= 200)
            pay -= 20;
        pay = pay - discount;
        printf("Order amount: %.2f\n", (int)(8.38 * y*100.0+0.5)/100.0);
        printf("E-coupon discount amount: %.2f\n", coupondiscount((int)((8.38 * y) * 100 + 0.5) / 100.0));
        printf("Discount amount: %.2f\nPayment amount: %.2f\n", discount, pay);
    }
    return 0;
}
  • 写回答

2条回答 默认 最新

  • 爱晚乏客游 2022-10-12 13:01
    关注

    img


    下面一样的道理,你这么写变成整数了,并不像你想的那样先取整然后再除以100.你应该整体按照float计算,最后的结果在输出里面使用格式控制取几位小数

    评论

报告相同问题?

问题事件

  • 修改了问题 10月12日
  • 修改了问题 10月12日
  • 创建了问题 10月12日