按下Ctrl + D后,我希望这段代码可以打印数组,但它什么都不做。
#include<stdio.h>
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;
}
答案 0 :(得分:4)
您使用错误的组合键在操作系统上生成EOF(Windows 8)。 Ctrl + D 在类似unix的系统上很常见,但Windows系统通常使用 Ctrl + Z 。
请注意,如果您没有空行,则可能必须使用 Ctrl + Z 两次(一次刷新当前输入行,并且一次生成EOF)。
答案 1 :(得分:1)
最佳猜测 - 您输入的内容不是数字,因此scanf
返回0并且您的程序进入无限循环。由于您没有显示您的输入,因此无法分辨。
如果您希望它停止在非数字输入上,请将循环更改为while(scanf("%d",&a) > 0)
答案 2 :(得分:0)
你应该查看scanf的返回值的文档...它返回扫描的项目数,0,1,2等...不是EOF