c语言,不知道为什么会出错,大家帮忙检查一下,运行结果是如图所示。
/*计算油费:假设现在90号汽油价格为6.95元/升,93号汽油价格为7.44元/升,97号汽油价格为7.93元/升。为了吸引顾客,某自动加油站推出了“自动服务”和“协助服务”两个服务等级可分别得到5%,3%的折扣。编写程序,输入顾客的加油量a,汽油品种b和服务类型c(m为自动服务,e为协助服务),计算并输出应付款。*/
#include<stdio.h>
int main ()
{
double litre,discount,price,cost;
int gas;
char service;
printf("90# 6.95元/升 ");
printf("93# 7.44元/升 ");
printf("97# 7.93元/升 ");
printf("Enter Litre ");
scanf("%lf",&litre);
printf("Choice gas kinds ");
scanf("%d",&gas);
printf("m:自动服务 5% discount ");
printf("e:协助服务 3% discount ");
printf("Choice service kinds ");
scanf("%c",&service);
switch(gas)
{
case 90:price=6.95;break;
case 93:price=7.44;break;
case 97:price=7.93;break;/*注意,case后面出现的应该是一个常量表达式。*/
}
if(service=='m')
discount=0.05;
else
discount=0.03;
cost=litre*price*(1-discount);
printf("cost=%.2lf ",cost);
return 0;
}
这个是个常识性问题
scanf的%d会在输入缓冲留下回车的,你再用
scanf("%c",&service);
此处的service会得到回车
解决两个方案
1,是在"%c"前加空格,改为
scanf(" %c",&service);
2.是在scanf("%c",&service);加
fflush(stdin);
(个人推荐用第二种,即使前面输入出错,它也会让你输入下面的内容的)