cccc678 发表于 2022-11-21 20:56:46

大神求解!

编译的了,但是输入值确不行
#include <stdio.h>

int main(int agrc,const char*agrv[])
{
        doublep=0,b=0;
        scanf("%lf%lf",&p,&b);
        //profit,bouns;
        if(p<100000||p==100000){
                b=p*0.1;}
        else if(p>100000&&p<200000){
                b=100000*0.1+(p-100000)*0.075;}
    else if(200000<=p&&p<400000){
                b=(p-20000)*0.05+100000*0.075+100000*0.1; }
    else if(400000<=p&&p<600000){
      b=100000*0.1+20000*0.05+100000*0.1+100000*0.075+(p-400000)*0.03;        }       
        else if(600000<=p&&p<1000000){
                b=100000*0.1+20000*0.05+100000*0.075+400000*0.03+(p-600000)*0.015;}
        else if(p>=1000000){
                b=100000*0.1+20000*0.05+100000*0.075+400000*0.03+600000*0.015+(p-1000000)*0.01;}
        printf("%f",b);
        return 0;
}
可不可以不要else

jackz007 发表于 2022-11-21 21:06:08

本帖最后由 jackz007 于 2022-11-21 21:18 编辑

      if ... else if ... else if ... else
      这种结构代表同一个 if 多个条件分段判断,只要一个分支条件符合的话,就不会再判断其它分支,当然,在所有条件分支的条件整体闭合的情况下,你完全可以考虑去掉 else,把 else if 直接改成 if 也应该没有任何问题,只不过是把一个判断体系改成了多个独立判断而已。
      你这个代码运行结果有问题吗?我试了一下,似乎没毛病啊。
      此外,变量 b 是计算结果用的,似乎并不需要从键盘输入吧?

cccc678 发表于 2022-11-21 21:21:17

jackz007 发表于 2022-11-21 21:06
这种结构代表同一个 if 多个条件分段判断,只要一个分支条件符合的话,就不会再判断其它分支,当 ...

懂了,感谢!
页: [1]
查看完整版本: 大神求解!