#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的值总是不正常。
把 int normai(...)改为float normai(...);再把所有money的输出从 %d 改为 %f ;
给你说几个问题,第一,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返回的是这个类型,你的都不一样,能出结果也是奇迹
int normal(int time1,int time2,int n) 这个int是整数吧
函数的返回值类型是int,所以money的值总是整的。还有函数参数列表只留一个时间参数,主函数调用两次函数,代码就能简洁不少。