dj是单价,zh是上下班总和,a为上班时间,b为下班时间,c为公里数。这么做可以吗

来源:5-14 综合练习

慕斯42433369

2018-08-28 09:43

#include <stdio.h>


float dj=2.3;

float num(int a,int b,int c);


int main()

{

    printf("%f",num(9,6,12));

    return 0;

}

float num(int a,int b,int c){

    float zh=0;

    if((a>=23&&a<=24)||(a>=0&&a<5)){

        if(c<=3){

            zh+= 13;

        }else{

            zh+= c*(dj*1.2)+1;

        }

    }else{

         if(c<=3){

            zh+= 13;

        }else{

            zh+= c*dj+1;

        }

    }

    

    if((b>=23&&b<=24)||(b>=0&&b<5)){

        if(c<=3){

            zh+= 13;

        }else{

            zh+= c*(dj*1.2)+1;

        }

    }else{

         if(c<=3){

            zh+= 13;

        }else{

            zh+= c*dj+1;

        }

    }

    return zh;

    

};


写回答 关注

1回答

  • William_Wei
    2018-08-28 17:11:46

    if((a>=23&&a<=24)||(a>=0&&a<5)){

            if(c<=3){

                zh+= 13;

            }else{

                zh+= c*(dj*1.2)+1;

            }

        }else{

             if(c<=3){

                zh+= 13;

            }else{

                zh+= c*dj+1;

            }

        }

        

        if((b>=23&&b<=24)||(b>=0&&b<5)){

            if(c<=3){

                zh+= 13;

            }else{

                zh+= c*(dj*1.2)+1;

            }

        }else{

             if(c<=3){

                zh+= 13;

            }else{

                zh+= c*dj+1;

            }

        }

    单纯从你的代码看 , 

    排除特殊计费情况(比如你4:58上车, 5点多下车 ,跨临界值情况)。

    這2段可以优化一下。

     if(((a>=23&&a<=24)||(a>=0&&a<5)) or ((b>=23&&b<=24)||(b>=0&&b<5))){

            if(c<=3){

                zh+= 13;

            }else{

                zh+= c*(dj*1.2)+1;

            }

        }else{

             if(c<=3){

                zh+= 13;

            }else{

                zh+= c*dj+1;

            }

        }

    就可以了,跟你的是一样的。 

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926028 学习 · 20793 问题

查看课程

相似问题