改进下面这个代码:#include <stdio.h> int main() { float price1 = 0, price2 = 0, price3 = 0; float total, discount, payable; // 提示用户输入商品价格 printf("请输入三种商品的价格,每个价格之间用空格隔开:\n"); // 循环读取并检查用户输入的价格 while (scanf("%f%f%f", &price1, &price2, &price3) != 3 || price1 < 0 || price2 < 0 || price3 < 0) { printf("输入错误,请重新输入三种商品的价格,每个价格之间用空格隔开:\n"); fflush(stdin); // 清空输入缓冲区 } total = price1 + price2 + price3; // 判断是否享受折扣 if (total > 100 || price1 > 50 || price2 > 50 || price3 > 50) { discount = 0.15; } else { discount = 0; } payable = total * (1 - discount); // 判断是否购买了商品 if (total == 0) { printf("您没有购买任何商品!\n"); } else { printf("您应付的钱数为:%.2f元\n", payable); } return 0; }
时间: 2024-04-05 10:31:01 浏览: 47
这段代码已经很完整了,但是可以进一步改进的地方是:
1. 可以将输入提示语句和输入检查合并成一个函数,使代码更加简洁。
2. 可以将计算折扣和支付总额的代码封装为一个函数,提高代码的复用性。
改进后的代码如下:
#include <stdio.h>
// 输入并检查商品价格
void input_prices(float *price1, float *price2, float *price3) {
while (1) {
printf("请输入三种商品的价格,每个价格之间用空格隔开:\n");
if (scanf("%f%f%f", price1, price2, price3) == 3 && *price1 >= 0 && *price2 >= 0 && *price3 >= 0) {
break;
}
printf("输入错误,请重新输入!\n");
fflush(stdin);
}
}
// 计算折扣和支付总额
void calculate(float price1, float price2, float price3, float *discount, float *payable) {
float total = price1 + price2 + price3;
if (total > 100 || price1 > 50 || price2 > 50 || price3 > 50) {
*discount = 0.15;
} else {
*discount = 0;
}
*payable = total * (1 - *discount);
}
int main() {
float price1 = 0, price2 = 0, price3 = 0;
float discount, payable;
input_prices(&price1, &price2, &price3);
calculate(price1, price2, price3, &discount, &payable);
if (price1 == 0 && price2 == 0 && price3 == 0) {
printf("您没有购买任何商品!\n");
} else {
printf("您应付的钱数为:%.2f元\n", payable);
}
return 0;
}
阅读全文