C语言优惠促销问题(附带源码)

天猫超市双 11 推出以下优惠促销活动:
  • 购物满 50 元,打 9 折;
  • 购物满 100 元,打 8 折;
  • 购物满 200 元,打 7 折;
  • 购物满 300 元,打 6 折;

编程计算当购物满 s 元时,实际付费多少?

问题分析

输入:消费额s(带2位小数的浮点数)。

输出:实际付款额(带2位小数的浮点数)。

使用 if…else… 语句的嵌套,根据优惠活动规则设置不同判断条件,以不同的折扣率计算实际付款额。

算法描述

1) 定义浮点型变量 s 和 f,分别存放消费额和实际付款额;
2) 用 scanf( ) 从键盘输入一个浮点数给 s;
3)如果 s<50,则不打折,实际付款额 f 等于 s;
  否则,
      如果 s<100,则实际付款额 f 等于 s*0.9;
      否则,
          如果 s<200,则实际付款额 f 等于 s*0.8;
          否则,
              如果 s<300,则实际付款额 f 等于 s*0.7;
              否则,s 一定超过 300 元,则实际付款额 f 等于 s*0.6;
4)用 printf( ) 输出实际付款额 f。

代码清单 2:根据优惠规则计算实际付款额
#include <stdio.h>
#include <stdlib.h>
int main( )
{
    float s,f;
    printf("输入消费额:\n");
    scanf("%f",&s);
    if (s<50)
        f = s;
    else
        if (s<100)
            f = s*0.9;            //9折
        else
            if (s<200)
                f = s*0.8;        //8折
            else
                if (s<300)
                    f = s*0.7;    //7折
                else
                    f = s*0.6;    //6折
    printf("实际付款额为:%.2f元\n",f);
    system("pause");
    return 0;
}
运行结果为:

输入消费额:
623
实际付款额为:373.80元