本帖最后由 wslinke 于 2015-4-12 23:51 编辑
看到很多人都在问这道题,我也写了个方案,分享一下
某个自动加油站有 ‘a’,‘b’,‘c’三种汽油品种,单价分别为 6.92,7.37,7.64(元/公升),也提供了“自己加”或“协助加”两个服务等级,这样用户可以得到5%或10%的优惠,请编程序针对用户输入加油量x,汽油品种y和服务类型z(‘f’—自动加,‘m’—自己加,‘e’—协助加),(注:‘f’—自动加无优惠),计算应付款pay。(请用多分支选择switch语句)
- #include <stdio.h>
- #define kPriceA 6.92 //(元/公升)
- #define kPriceB 7.37
- #define kPriceC 7.67
- //服务类型折扣
- #define kDiscount1 0.05
- #define kDiscount2 0.1
- int main(int argc, const char * argv[]) {
- double x,priceOfPetrol,discount,pay;
- char z,y;
- printf("请输入要添加的汽油量,按回车提交\n");
- //输入汽油量,输入错误则报错退出
- if (scanf("%lf",&x) != 1)
- {
- printf("输入有误!\n");
- return 1;
- }
- //清空缓冲区
- while(getchar()!='\n')continue;
- printf("请输入汽油品种(a或b或c),按回车提交\n");
- //输入汽油品种,输入错误则报错退出
- if (scanf("%c",&y) != 1 || '\n' == y)
- {
- printf("汽油品种输入有误,程序结束!\n");
- return 1;
- }
- //清空缓冲区
- while(getchar()!='\n')continue;
- //进入汽油品种判断
- switch (y) {
- case 'a':
- priceOfPetrol = kPriceA;
- break;
- case 'b':
- priceOfPetrol = kPriceB;
- break;
- case 'c':
- priceOfPetrol = kPriceC;
- break;
- //输入有误,退出
- default:
- {
- printf("汽油品种输入有误,程序结束");
- return 1;
- }
- break;
- }
-
- printf("请输入服务类型(f或m或e),按回车提交\n");
- //输入服务类型,输入错误则报错退出
- if (scanf("%c",&z)!=1|| '\n' == z)
- {
- printf("服务类型输入有误,程序结束!\n");
- return 2;
- }
- //进入服务类型判断
- switch (z) {
- case 'f':
- discount = 0.0;
- break;
- case 'm':
- discount = kDiscount1;
- break;
- case 'e':
- discount = kDiscount2;
- break;
- default:
- {
- printf("服务类型输入有误,程序结束!\n");
- return 2;
- }
- break;
- }
- //清空缓冲区
- while(getchar()!='\n')continue;
- //计算最终结果
- pay = x*priceOfPetrol*(1-discount);
- printf("您一共需要支付%lf元.\n",pay);
-
- }
复制代码 大家都觉得太长.. 我就删了过滤输入的代码
- #include <stdio.h>
- #define kPriceA 6.92 //(元/公升)
- #define kPriceB 7.37
- #define kPriceC 7.67
- //服务类型折扣
- #define kDiscount1 0.05
- #define kDiscount2 0.1
- int main(int argc, const char * argv[]) {
-
- double x,priceOfPetrol,discount,pay; //加油量,油的单价,折扣值,最终付款值
- char z,y;//服务类型,汽油品种
- printf("请输入要添加的汽油量,按回车提交\n");
- //输入汽油量
- scanf("%lf",&x);
- //清空缓冲区
- while(getchar()!='\n')continue;
-
- printf("请输入汽油品种(a或b或c),按回车提交\n");
- //输入汽油品种
- scanf("%c",&y);
- //清空缓冲区
- while(getchar()!='\n')continue;
-
- //进入汽油品种判断
- switch (y) {
- case 'a':
- priceOfPetrol = kPriceA;
- break;
- case 'b':
- priceOfPetrol = kPriceB;
- break;
- case 'c':
- priceOfPetrol = kPriceC;
- break;
- //输入有误,退出
- default:
- return 1;
- }
-
- printf("请输入服务类型(f或m或e),按回车提交\n");
- //输入服务类型
- scanf("%c",&z);
- //进入服务类型判断
- switch (z) {
- case 'f':
- discount = 0.0;
- break;
- case 'm':
- discount = kDiscount1;
- break;
- case 'e':
- discount = kDiscount2;
- break;
- default:
- return 2;
- break;
- }
- //计算最终结果
- pay = x*priceOfPetrol*(1-discount);
- printf("您一共需要支付%lf元.\n",pay);
-
- }
复制代码
|