void main()
{
int b;
float a;
char c;
scanf("%f%d%c",&a,&b,&c);
if (b==90 && c=='m')
printf("%.2f", a*6.95*0.95);
else
if (b == 90 && c=='b')
printf("%.2f", a*6.95*0.97);
else
if (b == 97 && c == 'm')
printf("%.2f", a*7.93*0.95);
else
if (b == 97 && c == 'b')
printf("%.2f", a*7.93*0.97);
else
if (b == 93 && c == 'm')
printf("%.2f", a*7.44*0.95);
else
if (b == 93 && c == 'b')
printf("%.2f", a*7.44*0.97);
}
//假设现在90号汽油6.95元 / 升、93号汽油7.44元 / 升、97号汽油7.93元 / 升。
//为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%和3%的折扣。
//请编写程序,输入顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m为自助服务,e为协助服务),计算并输出应付款(保留小数点后2位)。没报错啊....
把
scanf("%f%d%c",&a,&b,&c); //这种输入50 90 m是错误的,得输入50 90m要不c接收的不是m是空格
改成
scanf("%f,%d,%c",&a,&b,&c);//这样用逗号隔开不容易出错
这样不容易输错
另外协助服务是e不是b。如果自助服务不是这两个,你这里就不打印任何东西了。
你肯定是条件错了,你的if else太乱了,建议你带上大括号,把层次结构理清楚
逻辑有错。连续的IF,我怎么总觉得不踏实啊
是这样,有什么问题吗
这个题目是去年的吧。lz的车一年没加过油?
anyway,你能不能用switch啊,这么写多绕啊。
这种问题你设置断点,跟踪调试一下就知道你程序逻辑了
用两个switch不就行了
if太多了,还是用switch吧,scanf那里的输入好像有问题