在此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
循环,这样我就可以输入一个非数字字符(例如{{1}赋予q
跳出外循环。
但是我在 C Primer Plus 这本书中遇到了这个问题,而这本书还没有告诉我如何在问题出现之前使用first
或break;
,所以我想知道是否有另一种方法来做同样的事情。提前谢谢。
最初的问题:
编写一个请求两个浮点数和打印的程序 他们差异的价值除以他们的产品。有 程序循环通过成对的输入值,直到用户输入 非数字输入。
我想要做的是跳出循环,因为if
或first
被赋予非数字字符。
答案 0 :(得分:0)
将while
与无条件break
一起使用将始终完全执行该代码,因此与if
一样好 - 正如@Dmitri已经说过的那样。此外,break
只会从最内层的相关块中移出 - 所以在您的情况下,它不会突破外部while
块。
但是,大多数break
调用(毫无疑问,那些位于块末尾的调用)可以通过在while
子句中使用正确的条件轻松替换。
请注意,您的代码目前仍会显示double
值(由于%lf
)。为了允许通过输入'q'字符进行退出,您必须更改读取输入的方式。例如,一种方法可能是读取字符串,如果不是“q”,则将其翻译为double。