我一直试图弄清楚我的代码出了什么问题;我似乎找不到它。如果陈述让我感到困惑,那么我想我搞砸了那些,但仍然不确定。我所知道的是,我非常难过,并且会非常喜欢我能得到的所有帮助。
hostname:AP.MO.*
答案 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,马里奥