C语言基础问题 .......

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那里的输入好像有问题