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

劳烦各位大佬给看看这个程序哪里出问题了?

#include<stdio.h>

int normal(int time1,int time2,int n)

{

float money=0,money1=0,money2=0;

if(n<=3)

money=13;

else money=(n-3)*2.3+13;

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

if(time1>=5&&time1<=23)

money1=money+1;

else money1=1.2*money+1;

if(time2>=5&&time2<=23)

money2=money+1;

else money2=1.2*money+1;

printf("money=%d,%d\n",money1,money2);

money=money1+money2;

return money;

}

main()

{

int time1,time2,n;

time1=9;

time2=18;

n=12;

printf("money is %f", normal(time1,time2,n));

}

money的值总是不正常。

提问者:慕粉1637207462 2017-02-15 16:48

个回答

  • 微笑玩具屋
    2017-03-07 12:09:58

    把 int normai(...)改为float normai(...);再把所有money的输出从 %d 改为 %f ;

  • 滴血尘埃
    2017-02-16 17:26:39

    给你说几个问题,第一,moeny是float,printf("money=%d,%d\n",money1,money2);不用%d用%f

    第二int normal(int time1,int time2,int n)应该是folat normal(int time1,int time2,int n),这前面是它的类型,return返回的是这个类型,你的都不一样,能出结果也是奇迹

  • 滴血尘埃
    2017-02-16 16:06:07

    int normal(int time1,int time2,int n)  这个int是整数吧

  • 南衙府军
    2017-02-16 09:24:25

    函数的返回值类型是int,所以money的值总是整的。还有函数参数列表只留一个时间参数,主函数调用两次函数,代码就能简洁不少。