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日

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)