为了账号安全,请及时绑定邮箱和手机立即绑定

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

#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的值总是不正常。

正在回答

4 回答

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

0 回复 有任何疑惑可以回复我~

给你说几个问题,第一,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返回的是这个类型,你的都不一样,能出结果也是奇迹

0 回复 有任何疑惑可以回复我~
#1

奥古斯都_刚铎

int和float应该没关系八 不是函数值的类型和函数的类型不一致应该以函数返回类型为准吗?
2017-03-01 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

慕粉1637207462 提问者

你是指哪个?main函数一般也是int类型,但里面的元素是可以设置为float的啊
2017-02-16 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

慕粉1637207462 提问者

但在该函数内部我把money设为float不可以吗?
2017-02-16 回复 有任何疑惑可以回复我~
#2

南衙府军 回复 慕粉1637207462 提问者

不行,这个int规定这个函数返回值类型只能是int,得到的结果不是int也要强制转化成int
2017-02-16 回复 有任何疑惑可以回复我~
#3

慕粉1637207462 提问者 回复 南衙府军

那如何让他返回的是float类型的?
2017-02-17 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信