|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
您好!我写了这么一段代码,但是遇到了一个问题,就是输入EOF程序无法识别,程序没有办法结束;能不能帮我解决一下
- int main()
- {
- int a,b,answer;
- char value;
- int i=0;
- do
- {
-
- printf("Please a value b:\n");
- scanf("%d%c%d",&a,&value,&b);
- switch(value)
- {
- case '+':answer=a+b;
- break;
- case '-':answer=a-b;
- break;
- case '*':answer=a*b;
- break;
- case '/':answer=a/b;
- break;
- default:
- i=0;
- printf("Input error!,please en-enter!:");
-
- }
- printf("%d%c%d=%d\n",a,value,b,answer);
- }while(a!=EOF);
-
- return 0;
- }
复制代码
win中,行开头输入 Ctrl + Z 代表EOF
你的程序中,输入Ctrl + Z后scanf读取不成功,a的值并不会改变,所以while (a!=EOF)无法中断
要改为在scanf处判断是否读取成功再决定是否结束循环
- #include <stdio.h>
- int main() {
- int a, b, answer;
- char value;
- int i = 0;
- do {
- printf("Please a value b:\n");
- if (scanf("%d%c%d", &a, &value, &b) != 3) break;
- switch (value) {
- case '+':
- answer = a + b;
- break;
- case '-':
- answer = a - b;
- break;
- case '*':
- answer = a * b;
- break;
- case '/':
- answer = a / b;
- break;
- default:
- i = 0;
- printf("Input error!,please en-enter!:");
- }
- printf("%d%c%d=%d\n", a, value, b, answer);
- } while (1);
- return 0;
- }
复制代码
|
|