A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始




评分

参与人数 1技术分 +1 收起 理由
Micro + 1 很给力!

查看全部评分

1 个回复

正序浏览
  1. #include <stdio.h>
  2. #define kPriceA 6.92 //(元/公升)
  3. #define kPriceB 7.37
  4. #define kPriceC 7.67
  5. //服务类型折扣
  6. #define kDiscount1 0.05
  7. #define kDiscount2 0.1
  8. int main(int argc, const char * argv[]) {
  9.     /*某个自动加油站有 ‘a’,‘b’,‘c’三种汽油品种,单价分别为 6.92,7.37,7.64(元/公升),也提供了“自己加”或“协助加”两个服务等级,这样用户可以得到5%或10%的优惠,请编程序针对用户输入加油量x,汽油品种y和服务类型z(‘f’—自动加,‘m’—自己加,‘e’—协助加),(注:‘f’—自动加无优惠),计算应付款pay。(请用多分支选择switch语句)。*/
  10.     double x,priceOfPetrol,discount,pay;
  11.     char z,y;
  12.     printf("请输入要添加的汽油量,按回车提交\n");
  13.     //输入汽油量,输入错误则报错退出
  14.     if (scanf("%lf",&x) != 1)
  15.     {
  16.         printf("输入有误!\n");
  17.         return 1;
  18.     }
  19.     //清空缓冲区
  20.     while(getchar()!='\n')continue;
  21.     printf("请输入汽油品种(a或b或c),按回车提交\n");
  22.     //输入汽油品种,输入错误则报错退出
  23.     if (scanf("%c",&y) != 1 || '\n' == y)
  24.     {
  25.         printf("汽油品种输入有误,程序结束!\n");
  26.         return 1;
  27.     }
  28.     //清空缓冲区
  29.     while(getchar()!='\n')continue;
  30.     //进入汽油品种判断
  31.     switch (y) {
  32.         case 'a':
  33.             priceOfPetrol = kPriceA;
  34.             break;
  35.         case 'b':
  36.             priceOfPetrol = kPriceB;
  37.             break;
  38.         case 'c':
  39.             priceOfPetrol = kPriceC;
  40.             break;
  41.          //输入有误,退出
  42.         default:
  43.         {
  44.             printf("汽油品种输入有误,程序结束");
  45.             return 1;
  46.         }
  47.             break;
  48.     }
  49.    
  50.     printf("请输入服务类型(f或m或e),按回车提交\n");
  51.     //输入服务类型,输入错误则报错退出
  52.     if (scanf("%c",&z)!=1|| '\n' == z)
  53.     {
  54.         printf("服务类型输入有误,程序结束!\n");
  55.         return 2;
  56.     }
  57.     //进入服务类型判断
  58.     switch (z) {
  59.         case 'f':
  60.             discount = 0.0;
  61.             break;
  62.         case 'm':
  63.             discount = kDiscount1;
  64.             break;
  65.         case 'e':
  66.             discount = kDiscount2;
  67.             break;
  68.         default:
  69.         {
  70.             printf("服务类型输入有误,程序结束!\n");
  71.             return 2;
  72.         }
  73.             break;
  74.     }
  75.     //清空缓冲区
  76.     while(getchar()!='\n')continue;
  77.     //计算最终结果
  78.     pay = x*priceOfPetrol*(1-discount);
  79.     printf("您一共需要支付%lf元.\n",pay);
  80.    
  81. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
Micro + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马