你可以看看我这篇示例,都作了详细的注释:
/* discountCalculation.c -- 实现折扣计算 */
#include <stdio.h>
#include <stdlib.h>
/*
如下图所示:
-------------------------------------------------------------------------------------
| 累计消费金额 | 未满 500 元 | 满 500 元 | 满 1000 元 | 满2000 元 |
-------------------------------------------------------------------------------------
| 享受的折扣 | 无折扣 | 9折 | 8折 | 7折 |
-------------------------------------------------------------------------------------
商城程序员为该活动编写以下程序,实现的功能为:输入顾客购物消费金额,核算
并输出享受的折扣与折扣后的支付金额(支付金额精确到小数点后两位)。
*/
int main(void)
{
// 定义浮点数变量 money 存储消费金额、c 存储消费折扣
float money, c;
// 定义整数变量 grade 记录消费级别,便于计算消费折扣
int grade;
// 提示性输出
printf("请输入购物消费金额:");
// 读取并存储输入的金额,如果变量的类型为double,则应使用 %lf 格式读取
scanf("%f", &money);
// if-else 结构判断输入的消费金额等级,便于计算消费折扣
if (money >= 2000) {
// 如果消费金额为2000及以上,则消费级别为 4 级
grade = 4;
} else {
/*
其他消费级别可以直接通过 money / 500 获取
假设消费金额为499,那么 grade = 499 / 500 = 0, 没有折扣
假设消费金额为512,那么 grade = 515 / 500 = 1, 打九折
假设消费金额为1500,那么 grade = 1500 / 500 = 3, 打八折
以此类推...
*/
grade = money / 500;
}
// 根据消费级别使用 switch 语句获取消费折扣
switch (grade)
{
// 小于五百没有折扣:1
case 0: c = 1; break;
// 大于五百且小于一千,则享受九折:0.9
case 1: c = 0.9; break;
// 一千及以上且小于两千,则享受八折:0.8
case 2:
case 3: c = 0.8; break;
// 两千及以上享受七折:0.7
case 4: c = 0.7; break;
}
// 输出刚获取享受的优惠折扣
printf("将享受的优惠:%f\n", c);
// 输出优惠后实际支付的金额,并且使用 %.2f 输出格式保留两位小数
printf("优惠后需支付的金额:%.2f", money * c);
return 0;
}
grade直译有年级等级的意思,结合题意grade这个变量表示的是消费的等级,比如未满500,满500等
通过if语句判断购物总金额是否超过2000或以上,满足该条件则打7折。
接着将消费总金额除500后赋值给grade即为了下面switch语句判断方便,因为消费折扣等级500,1000等都是500的倍数,除500后case条件表示起来更简洁,如果不除500,将500,1000,2000去替换case中的0,1,2,3,4也是正确的