练习:使用条件运算符实现多级别折扣计算
原代码解析
#include <stdio.h>
int main(void)
{
const double unit_price = 3.50; /* 单价 */
const double discount1 = 0.05; /* 超过10个的折扣 5% */
const double discount2 = 0.10; /* 超过20个的折扣 10% */
const double discount3 = 0.15; /* 超过50个的折扣 15% */
double total_price = 0.0;
int quantity = 0;
printf("输入您要购买的数量:");
scanf("%d", &quantity);
total_price = quantity * unit_price * (1.0 -
(quantity > 50 ? discount3 : (
quantity > 20 ? discount2 : (
quantity > 10 ? discount1 : 0.0))));
printf("购买 %d件的价格是$%.2f\n", quantity, total_price);
return 0;
}Code language: PHP (php)
嵌套条件运算符执行逻辑(从外到内):
输入 quantity | 条件判断 | 选中折扣 | 最终单价乘数 | 计算结果(示例) |
|---|---|---|---|---|
| 65 | 65 > 50 真 | discount3 (0.15) | 1.0 - 0.15 = 0.85 | 65 × 3.5 × 0.85 = 193.38 |
| 35 | 35 > 50 假 → 35 > 20 真 | discount2 (0.10) | 1.0 - 0.10 = 0.90 | 35 × 3.5 × 0.90 = 110.25 |
| 15 | 15 > 50 假 → 15 > 20 假 → 15 > 10 真 | discount1 (0.05) | 1.0 - 0.05 = 0.95 | 15 × 3.5 × 0.95 = 49.88 |
| 5 | 全部为假 | 0.0 | 1.0 - 0.0 = 1.0 | 5 × 3.5 × 1.0 = 17.50 |
代码要点:
- 条件运算符从最外层开始匹配,满足
quantity > 50直接取discount3,否则进入内层继续判断 - 每个分支只计算一个值,未选中的分支不会执行
1.0 - 折扣率得到实际付费比例
补充:%s 格式说明符输出字符串
printf("%s", "男性");Code language: JavaScript (javascript)
| 格式符 | 用途 | 示例 |
|---|---|---|
%s | 输出字符串(字符数组/字符串字面量) | printf("%s", "Hello World"); |
%c | 输出单个字符 | printf("%c", 'A'); |
字符串与字符的区别:
'A'→ 单引号,单个字符,本质是int"A"→ 双引号,字符串,本质是char[](含结尾\0)
等价的 if-else if-else 写法
if (quantity > 50)
total_price = quantity * unit_price * (1.0 - discount3);
else if (quantity > 20)
total_price = quantity * unit_price * (1.0 - discount2);
else if (quantity > 10)
total_price = quantity * unit_price * (1.0 - discount1);
else
total_price = quantity * unit_price;Code language: JavaScript (javascript)