gpt4 book ai didi

c - 有什么办法可以避免使用break;在 while 循环中,当测试包含 scanf() 时?

转载 作者:行者123 更新时间:2023-11-30 19:36:27 25 4
gpt4 key购买 nike

在此 while 循环中:

while (scanf("%lf", &first) == 1)
{
printf("Enter your second float number (q to exit):\n");
while (scanf("%lf", &second) == 1)
{
printf("The result is %f\n", (first - second) / (first * second));
break;
}
printf("Enter your first float number (q to exit):\n");
}

我想读取一个输入并将其提供给 second,然后我想将该循环退出到外部 while 循环,以便我可以输入非数字字符(例如q)赋予first以跳出外循环。

但是我在C Primer Plus这本书上遇到了这个问题,而且书上没有告诉我如何使用break;if 在问题之前,所以我想知道是否有其他方法可以做同样的事情。提前致谢。

原问题:

Write a program that requests two floating-point numbers and prints the value of their difference divided by their product. Have the program loop through pairs of input values until the user enters non-numeric input.

我想做的是跳出循环,因为 firstsecond 被赋予非数字字符。

最佳答案

使用while无条件 break总是会执行该代码一次,因此与 if 一样好。 - 正如@Dmitri 已经说过的。此外,break只走出最里面的相关 block - 所以在你的情况下,它不会突破外部 while block 。

但是,大多数 break只需使用 while 中的正确条件即可轻松替换调用(毫无疑问,那些位于 block 末尾的调用)。条款。

请注意,您的代码当前为 double无论如何值(由于 %lf )。为了允许通过输入“q”字符退出,您必须更改读取输入的方式。例如,一种方法可能是读取字符串,如果它不是“q”,则将其转换为 double 。

关于c - 有什么办法可以避免使用break;在 while 循环中,当测试包含 scanf() 时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40745222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com