为什么代码不打印任何输出?

按下Ctrl + D后,我希望这段代码可以打印数组,但它什么都不做。

#include int main(){ int k,i=0,a; int b[10]; while(scanf("%d",&a)!=EOF){ if(a>(a/4+a/3+a/2)) b[i]=a; else b[i]=(a/4+a/3+a/2); i++; } for(k=0;k<=i;k++){ printf("%d\n",b[k]); } return 0; } 

您使用错误的组合键在操作系统上生成EOF(Windows 8)。 Ctrl + D在类Unix系统上很常见,但Windows系统通常使用Ctrl + Z.

请注意,如果您不在空行上,则可能必须使用Ctrl + Z两次(一次用于刷新当前输入行,一次用于生成EOF)。

最佳猜测 – 您输入的内容不是数字,因此scanf返回0并且您的程序进入无限循环。 由于您没有显示您的输入,因此无法分辨。

如果您希望它在非数字输入上停止,请将循环更改为while(scanf("%d",&a) > 0)

你应该查看scanf的返回值的文档…它返回扫描的项目数,0,1,2等…不是EOF