黑马程序员技术交流社区
标题:
第四天作业—switch运用与大家探讨
[打印本页]
作者:
康仔
时间:
2015-4-12 12:13
标题:
第四天作业—switch运用与大家探讨
题目:
// 某个自动加油站有 ‘a’,‘b’,‘c’三种汽油品种,单价分别为 6.92,7.37,7.64(元/公升),也提供了“自己加”或“协助加”两个服务等级,这样用户可以得到5%或10%的优惠,请编程序针对用户输入加油量x,汽油品种y和服务类型z(‘f’—自动加,‘m’—自己加,‘e’—协助加),(注:‘f’—自动加无优惠),计算应付款pay。(请用多分支选择switch语句)。
#include <stdio.h>
int main(int argc, const char * argv[]) {
// 定义4个变量,一个是选择加油方式,一个是汽油品种,一个是加油量,一个是应付的钱
float x = 0.0f,pay = 0.0f;
char z ,y ;
//提示客户选择加油方式
printf("请选择加油方式,f 是自动加、m 是自己加、e 是协助加:\n");
//提示客户选择汽油品种
printf("请选择汽油品种,a类汽油、b类汽油、c类汽油:\n");
scanf("%c,%c",&z,&y);
//提示用户输入加油量
printf("请输入加油量:");
scanf("%f",&x);
switch (y) {
case 'a':
switch (z) {
case 'f':
pay = 6.92*x;
break;
case 'm':
pay = 6.92*x*0.95;
break;
default:
pay = 6.92*x*0.90;
break;
}
break;
case 'b':
switch (z) {
case 'f':
pay = 7.37*x;
break;
case 'm':
pay = 7.37*x*0.95;
break;
default:
pay = 7.37*x*0.90;
break;
}
break;
default:
switch (z) {
case 'f':
pay = 7.64*x;
break;
case 'm':
pay = 7.64*x*0.95;
break;
default:
pay = 7.64*x*0.90;
break;
break;
}
break;
}
printf("应付:%.2f",pay);
return 0;
}
作者:
wslinke
时间:
2015-4-12 13:30
太长 没细看 有几点建议
1,两个scanf之间没有清除缓冲区的代码,会导致回车被第二格scanf读取
2,不应该嵌套switch,应该第一个switch将一个选择保存为一个变量,以便后面计算
3,不应该将其中一个选择写到default里,因为你没有对输入的数据进行过滤,会导致其他输入直接跳到default里
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2