我的代码是:
#include<stdio.h>
void main(void)
{
float timeLeavingTP;
int transitNumber;
float transitTime;
printf("Please enter the time leaving TP.\n");
scanf_s("%f",&timeLeavingTP);
printf("Please enter bus number.\n");
scanf_s("%d",&transitNumber);
if(timeLeavingTP==1.00)
{
if(transitNumber==27)
{
transitTime=1.56;
}
else if(transitNumber==8);
{
transitTime=1.39;
}
}
if(timeLeavingTP==6.30)
{
if(transitNumber==27)
{
transitTime=7.32;
}
else if(transitNumber==8)
{
transitTime=7.29;
}
printf("The time reached home is %f\n",transitTime);
}
}
调试后我得到了
Please enter the time leaving TP
1.00
Please enter bus number
27
Please enter to continue...
我的问题是如何调整程序使其看起来像下面的那个。我犯了什么样的错误?
Please enter the time leaving TP
1.00
Please enter bus number
27
The time reached home is 1.56
提前感谢您的帮助! 包括==后我们的调试仍然一样吗?还有别的我做错了吗?
答案 0 :(得分:5)
=
vs ==
请注意:
if(timeLeavingTP=1.00)
不按预期行事。它将timeLeavingTP指定为1.00。
你可能想要:
if(timeLeavingTP==1.00)
此外,请注意您的程序中出现此错误6次。
您的代码可能适用于这种情况,但我不能100%确定它是否会。通常很难直接比较2个浮点数,因为存储它们的不准确性(例如,0.1通常在浮点数中无法表示)。
大多数人通过以下几种方式解决这个问题:
要编写适当的条件,它应该如下所示:
if (condition) {
...
} else if (condition) {
...
} else if (condition) {
...
} else {
...
}
你当然可以嵌套条件:
if (condition) {
if (condition) {
...
} else {
...
}
} else if (condition) {
...
}
例如,你的代码会在你这样做时搞砸了:
}
else(transitNumber=8);
{
transitTime=1.39;
}
请注意,else语句不接受条件后的条件。
另外,请注意在else和if语句之后没有分号。分号仅出现在大括号内。所以这句话:
if(timeLeavingTP=6.30);
虽然在语义上有效,但没有达到预期效果。你实际上想要删除那个分号。
答案 1 :(得分:3)
if(timeLeavingTP == 1.00)
{
if(transitNumber == 27)
{
transitTime=1.56;
}
else if(transitNumber == 8)
{
transitTime=1.39;
}
}
else if(timeLeavingTP == 6.30)
{
if(transitNumber == 27)
{
transitTime == 7.32;
}
if(transitNumber ==8)
{
transitTime=7.29;
}
}
printf("The time reached home is %f\n",transitTime);
}
答案 2 :(得分:2)
if(transitNumber=27)
{
transitTime=1.56;
}
else(transitNumber=8);
{
transitTime=1.39; //this line is executed all the time
}
此代码完全无效!
首先,你不比较任何事情...... transitNumber = 27
是一项任务
再来一次else(transitNumber=8);
这是一项任务,它应该是else if(...)
。同样;
,即使transitTime = 1.39
transitNumber != 8
(括号内)也会一直发生
答案 3 :(得分:1)
更改
if(timeLeavingTP=1.00)
到
if(timeLeavingTP==1.00)
这样您就可以正确地比较timeLeavingTP。