无法弄清楚为什么我的代码不起作用

时间:2016-10-26 18:59:24

标签: c

我一直试图弄清楚我的代码出了什么问题;我似乎找不到它。如果陈述让我感到困惑,那么我想我搞砸了那些,但仍然不确定。我所知道的是,我非常难过,并且会非常喜欢我能得到的所有帮助。

hostname:AP.MO.*

2 个答案:

答案 0 :(得分:3)

如果numberOfMiles的类型为float,则必须更换以下行

scanf("%d", &numberOfMiles);

通过

scanf("%f", &numberOfMiles);

或者您可以将类型设置为int

-

如果你想避免无休止的循环,交换

} while (numberOfMiles > 1);

通过

} while (numberOfMiles < 1);

顺便说一下。为什么不允许距离短于一英里?

e.g。由

} while (numberOfMiles < 0);

要获得更具体的答案,您必须更加精确。

答案 1 :(得分:1)

使用gcc编译程序会发出以下警告:

t.c: In function ‘main’:
t.c:21:5: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘float *’ [-Wformat=]
     scanf("%d", &numberOfMiles);
     ^

问题是,scanf()将使用用于int变量的二进制格式存储在numberOfMiles位置输入的数字,但numberOfMiles是一个float变量。解释为float的整数位模式可能具有非常不同的含义,甚至可能是非法浮点值。

将numberOfMiles的类型从float更改为int可以解决此问题。

您还应该将第二个条件更改为while (numberOfMiles < 1)

我希望,这有帮助。

73,马里奥