for (inputNum != 0; counter < 9; counter++)
{
//if (inputNum == 0)break;
scanf("%f\n", &inputNum);
if(inputNum == 0){break;}
inputArray[counter] = inputNum;
// if (inputNum == 0) {break;}
//break;
}
刚遇到这个问题,不知道如何解释它。问题是标题。
答案 0 :(得分:0)
首先,你的for循环的语法,好吧,它很奇怪,而且不清楚。
for ( inputNum != 0; ...
这没有任何逻辑意义,并且将使代码失败。如果这真的是你想要做的那么!(inputNum = 0)将纠正语法。否则它不起作用。
你的if声明在里面,哦,上帝。你必须坚持。这毫无意义。请努力学习代码,尽量不要问“我的代码不起作用,修复它pl0x”。
答案 1 :(得分:0)
您的“for”语句构造错误。 for语句的第一部分不执行任何测试 - 在执行for语句之前调用它,但不再执行。 Good reference here
看起来你想要在inputNum不为0时阅读,而你的计数器<9(你最多读取9个数字吗?)
for(/* no initialization here*/; inputNum != 0 && counter < 9; counter++) {
scanf("%f\n", &inputNum);
// if(inputNum == 0){break;},
// ^~~~ not needed because scanf and the condition
// inputNum != 0 will quit the loop.
}
在“for”语句中看到一个空的初始化器有点奇怪,但仍然合法。事实上,对于(;;)也是合法的,但会创建一个无限循环。
答案 2 :(得分:0)
您的代码似乎仅适用于第二个循环的原因是您的scanf
功能。
scanf("%f\n", &inputNum);
如果您将此更改为(正确)为:
scanf("%f", &inputNum);
您会注意到您的代码正确执行 这是因为scanf正在阻塞,直到输入第二个数字。
这是因为格式字符串末尾的\n
占用了输入流中的所有后续\n
(和其他空白字符)。
输入任何非空白字符然后再次按Enter将允许scanf
终止,因为它将不再被使用。
引自IBM scanf(强调我的):
由空格函数指定的空格字符,例如空格和换行符。 空格字符会导致fscanf,scanf和sscanf函数读取但不存储输入中的所有连续空白字符,直到下一个不是空白字符的字符。格式中的一个空白字符与输入中的任何空白字符组合相匹配。