问答详情
源自:5-14 综合练习

请各位看看我的小程序哪不对。。

#include<stdio.h>

int taxi(int distance,int hour)

{

    int money;

    if(hour<=5  ||  hour>=23);

    {

        money=(distance-3)*2.3*1.2+1+13;

        return money;

    }

    else

    {

        money=(distance-3)*2.3+1+13;

        return money;

    }

}

int main()

{

    int money;

    int moneyInAll=taxi(12,24)+taxi(12,7);

    printf("%d\n",money);

    return 0;

}

提问者:qq_1284 2015-08-03 23:10

个回答

  • sca11
    2015-08-04 00:02:37
    已采纳

    money 是int 型,  int型数据经过和小数一起运算后会自动转成float型, 存储数据类型错了, 把money改成double或者 float

    错误处挺多的,不一一讲了,自己对着看下

    #include<stdio.h>

    double taxi(int distance,int hour)     

    {

        double money_1;          // 可以不改成_1   局部变量与全局变量同名时,用到局部部分,就屏蔽外部变量

        if(hour<=5  ||  hour>=23)

        {

            money_1=(distance-3)*2.3*1.2+1+13;

            return money_1;

        }

        else

        {

            money_1=(distance-3)*2.3+1+13;

            return money_1;

        }

    }

    int main()

    {

        double money=0;

        double moneyInAll=taxi(12,24)+taxi(12,7);

        printf("%f\n",moneyInAll);    //这里你并没有用moneyInAll,输出的值是money,如果不改

                                                     //money也没赋值的话,就会输出一大串数字,并不能得到准确的值。

        return 0;

    }

  • qq_1284
    2015-08-04 20:08:10

    我试了一下,在taxi函数里 必须是money_1  而 不可以是money  ,否则程序运行的结果就是0.000000