#include <stdio.h>
int main (void)
{
int T, y, z;
scanf ("%i\n", &T);
for (T; T > 0 ; --T)
{
scanf ("%i\n", &y);
}
return 0;
}
如果我输入 4,不应该再输入 4 个吗?相反,它允许我输入 5 个整数!也尝试过其他数字。
#include <stdio.h>
int main (void)
{
int T, y, z;
scanf ("%i\n", &T);
for (T; T > 0 ; --T)
{
scanf ("%i\n", &y);
}
return 0;
}
如果我输入 4,不应该再输入 4 个吗?相反,它允许我输入 5 个整数!也尝试过其他数字。
摆脱\n
你的 scanf
scanf 中的格式字符串的工作方式如下(参见http://www.cplusplus.com/reference/cstdio/scanf/)
[格式为] C 字符串,其中包含一系列字符,这些字符控制如何处理从流中提取的字符:
空白字符:该函数将读取并忽略在下一个非空白字符之前遇到的任何空白字符...
在您的两个中,您scanf()
都有一个换行符。因此,当您第一次按 Enter 键时,它会被 忽略scanf
。
一些答案告诉你修改循环......这是不正确的,你的循环很好。就是上面的内容让你头疼。尝试以下操作:
#include <stdio.h>
int main(int argc, char const *argv[])
{
int T, y, z;
scanf ("%i", &T);
printf("Count is= %d\n", T);
for (T; T > 0 ; --T)
{
printf("T= %d\n", T);
scanf ("%i", &y);
}
return 0;
}
编辑:感谢 Daniel Fischer 关于刷新标准输入的评论,我现在已将其删除。找到了这个解释(使用 fflush(stdin))。