#include <stdio.h>
float count_discount(int x, float y,float pay)
{
float sum;
if (pay<200)
{
sum = y * 0.3;// 每升优惠3毛
if (x == 5) // 星期五每升额外优惠1毛
sum += y * 0.1;
}
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 =(8.38 * y);
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(8.38 * y));
printf("Discount amount: %.2f\nPayment amount: %.2f\n", discount, (int)(pay*100.0 + 0.5) / 100.0);
}
return 0;
}
总是部分正确,不知道错在哪里\(◎o◎)/!大家看看能不能改改?是逻辑上的问题,还是精度的问题
请把代码用 “代码块” 贴出来,大家才好帮你。
试试这样改:
#include <stdio.h>
#define PRICE 8.38
double count_discount(int x, double y)
{
double sum;
sum = y * 0.30;// 每升优惠3毛
if (x == 5) // 星期五每升额外优惠1毛
sum += y * 0.10;
return (int)(sum * 100.0 + 0.5) / 100.0;;
}
int main()
{
int num, x, ret, ret1;
double y, order, E_coupon, Payment, discount;
ret = scanf("%d", &num);
if (ret == 1) {
if (num < 1 || num > 10) return -1;
while (num > 0)
{
ret = scanf("%d", &x);
ret1 = scanf("%lf", &y);
num--;
if (ret == 1 && ret1 == 1) {
if (x < 1 || x > 7) continue;
if (y < 0 || y > 50) continue;
order = (int)(PRICE * y * 100.0 + 0.5)/100.0;
if (order >= 200.0) {
E_coupon = 20.0;
y -= (200.0/PRICE);
discount = count_discount(x, y);
}
else {
E_coupon = 0.0;
discount = count_discount(x, y);
}
Payment = order - E_coupon - discount;
printf("Order amount: %.2f\n", order);
printf("E-coupon discount amount: %.2f\n", E_coupon);
printf("Discount amount: %.2f\n", discount);
printf("Payment amount: %.2f", Payment);
if (num != 0) printf("\n");
}
}
}
return 0;
}
没有输出样例吗?
输出样式