#include <stdio.h>
int cal(int km, int tm)
{
float start = 13;
float ppk = 2.3;
float price;
if(km<=3)
{
price = (start+1)*2;
printf("打车总费用为%f元。", price);
}
else if(0<=tm<5 || tm>=23)
{
price = (start + ppk*(km-3)*1.2+1)*2;
printf("打车总费用为%f元。", price);
}
else
{
price = (start+ ppk*(km-3) + 1)*2;
printf("打车总费用为%f元。",price);
}
return price;
}
int main()
{
cal(12,9);
return 0;
}
计算结果用了第二种情况,加了20%,但看起来逻辑没错呀?
求大神
自创函数定义的时候返回值应为float型的而不是int型
0<=tm<5 || tm>=23等价于(0<=tm)<5||tm>=23,你这样子写系统会先判断0<=tm(24进制的时间里必定成立),等于1,再判断1<5,成立,则不判断是否大于23。c语言里连续的判断,要写写成tm>=0&&tm<5||tm>=23,