这种写法错误在哪儿啊?得不到预期结果

现在90号汽油6.95元/升、93号汽油7.44元/升、97号汽油7.93元/升。为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%和3%的折扣。

本题要求编写程序,根据输入顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助),计算并输出应付款。

输入格式:
输入在一行中给出两个整数和一个字符,分别表示顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助)。

输出格式:
在一行中输出应付款额,保留小数点后2位。

输入样例:
40 97 m
输出样例:
301.34

#include <stdio.h>
int main() {
double oil_amount,price,cost;
int oil_type;
char op;
double sale;
scanf("%lf %d",&oil_amount,&oil_type);
switch(oil_type)
{
case 90:
price = 6.95;
break;
case 93:
price = 7.44;
break;
case 97:
price = 7.93;
break;
default:
return 0;
}
switch(op)
{
case'm':
sale=0.95;
break;
case'e':
sale=0.97;
break;
}
cost = oil_amount * price * sale;
printf("%.2lf",cost);
return 0;
}

scanf("%lf %d",&oil_amount,&oil_type);这句话改成
scanf("%lf %d %c",&oil_amount,&oil_type,&op);

img

完整代码如下:


#include <stdio.h>
int main() {
    double oil_amount,price,cost;
    int oil_type;
    char op;
    double sale;
    scanf("%lf %d %c",&oil_amount,&oil_type,&op); //修改1
    switch(oil_type)
    {
    case 90:
        price = 6.95;
        break;
    case 93:
        price = 7.44;
        break;
    case 97:
        price = 7.93;
        break;
    default:
        return 0;
    }
    switch(op)
    {
    case'm':
        sale=0.95;
        break;
    case'e':
        sale=0.97;
        break;
    }
    cost = oil_amount * price * sale;
    printf("%.2lf",cost);
    return 0;
}


op 输入的代码在哪里?
只有 oil_amount 和 oil_type 输入。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632