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

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;
}

img


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

 
#include <stdio.h>

double round(double x){
    return ((int)(x * 100 + 0.5)) / 100.0;
}
float count_discount(int x, float y)
{
    float 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 = round(sum);
    return sum;
}
float coupondiscount(float a)
{
    if (a>=200)
    {
        return 20;
    }
    else 
    {
        return 0;
    }
}

int main()
{
    int t, x;
    float y;
    //printf("%.2lf",round(199.996));
    float pay, discount;
    float order_count;
    scanf("%d", &t);
    while (t--)
    {
        scanf("%d", &x);
        scanf("%f", &y);
        pay =round(8.38 * y);
        //pay =8.38 * y;
        order_count = pay; 
        discount = count_discount(x, y);
        if (pay >= 200)
            pay -= 20;
        pay = pay - discount;
        //printf("%lf\n",pay);
        printf("Order amount: %.2f\n", round(order_count));
        printf("E-coupon discount amount: %.2f\n", coupondiscount(round(order_count)));
        printf("Discount amount: %.2f\nPayment amount: %.2f\n", round(discount), round(pay));
    }
    return 0;
}