如果-否则循环以找到解决方案
If-else loop to find solution
我的代码是:
#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 %fn",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
提前感谢您的帮助!嗨,伙计们在包含 == 之后,我的调试仍然相同?我还有什么做错了什么吗?
第 1 部分:
1 部分:=
vs ==
请注意:
if(timeLeavingTP=1.00)
不做你所期望的。它为时间分配 1.00 的离开TP。
您可能希望:
if(timeLeavingTP==1.00)
此外,请注意,此错误在您的程序中发生 6 次。
第 2 部分:比较浮点数
您的代码在这种情况下可能有效,但我不能 100% 确定它是否会起作用。通常很难直接比较 2 个浮点数,因为存储它们不准确(例如,0.1 通常不能在浮点中表示(。
大多数人通过以下几种方式之一解决此问题:
- 测试数字周围的范围。
- 转换为一些修复宽度格式。也许您可以将数字存储为整数,知道它的表示形式实际上是存储的数字的 0.01 *。
- 在这种情况下,您实际上可以将信息存储为字符串,并进行比较。
第 3 部分:条件语句
要编写适当的条件,它应该如下所示:
if (condition) {
...
} else if (condition) {
...
} else if (condition) {
...
} else {
...
}
您当然也可以嵌套条件:
if (condition) {
if (condition) {
...
} else {
...
}
} else if (condition) {
...
}
例如,当你这样做时,你的代码会搞砸:
}
else(transitNumber=8);
{
transitTime=1.39;
}
请注意,else 语句不接受其后的条件。
第 4 部分:过多的分号
此外,请注意,在 else 和 if 语句之后没有分号。分号仅出现在大括号内。所以这个说法:
if(timeLeavingTP=6.30);
虽然语义上有效,但不会执行预期操作。您实际上想要删除该分号。
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 %fn",transitTime);
}
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
更改
if(timeLeavingTP=1.00)
自
if(timeLeavingTP==1.00)
以便您可以正确比较时间离开TP。
相关文章:
- 运行同一解决方案的另一个项目的项目
- Project Euler问题4的错误解决方案
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 是否有可能实现O(N)时间和O(1)空间解决方案,以实现C++中的字符串循环移位
- C++ 循环屏障中的倒计时使用原子变量出错[请无锁的解决方案]
- 只有一个正确解决方案的无限循环
- 高速解决方案以循环浏览不同变量的所有组合,并使用启动步骤停止方案(C )
- 如果找不到解决方案,我如何留下递归循环,而不会打印任何东西
- 卡死胡同-无休止的循环,没有解决方案
- 对于同一循环的这两个连续组,是否有更有效的解决方案
- 循环查找解决方案
- 简单的尝试 c++ 的捕获循环解决方案
- 用于交替 for 循环的 C++ 通用解决方案
- 在c++中,任何更好的方法都可以做到这一点,计算谜题的解决方案(49!结果,49个循环)
- 一个while循环的重要解决方案
- 如果-否则循环以找到解决方案
- 在一个文件夹(及其子文件夹)的所有文件上循环:最简单的解决方案
- 嵌套for循环解决方案
- 需要一个解决方案c++循环和条件
- 寻找最优雅的循环特定字符串的解决方案