【发布时间】:2020-11-08 00:25:18
【问题描述】:
我写的第一个代码是这样的……
for (i = 0; startNum + i <= endNum; i++)
{
num = startNum + i; // num도 100부터 시작
while (1) // 고집수를 확인하기 위함
{
doubleNum = transNumber(num); // 각 자리 수의 곱의 값
count = count + 1;
if (doubleNum < 10) {break;}
num = doubleNum;
}
第二个代码如下
for (i = 0; startNum + i <= endNum; i++){
num = startNum + i; // num도 100부터 시작
count = 0;
while (num > 10) {
num = transNumber(num);
count++;
}
if (count == goNum)
{
printf("%d\n", startNum + i);
count2 = count2 + 1;
}
}
我的想法是,如果我创建一个新变量doubleNum,那么它将继续接收transNumber 的结果。另外,既然我放了if statement,那么它的代码就和第一个代码一样……
但是,结果显然不同,我想知道是否可以对此进行具体解释?
【问题讨论】:
-
当函数
transNumber()返回10时,循环的行为会有所不同。第一个示例中的循环不会结束,但在第二个示例中会结束。 -
...但不清楚哪一个是错的,因为目的未知。第一个应该是
doubleNum <= 10,或者第二个应该是num >= 10。 -
虽然第一个代码是产生正确结果的代码,但您是否认为其他功能可能会影响
while statement产生不同的输出,即使两者具有相同的功能和在第二个代码中将<10编辑为<=10或>10后工作方式相同? -
请发minimal reproducible example,以便我们重现问题并帮助您调试
标签: c if-statement while-loop