|
10鱼币
下面是源代码:
# include <stdio.h>
# include <ctype.h>
int main (void)
{
double menber1 = 0;
double menber2 = 0;
char yunsfu = 0;
char ch = 0;
to:
printf("输入计算的数:(格式如1 * 3 )\n");
scanf("%lf %c %lf", &menber1, &yunsfu, &menber2);
printf("%lf %c %lf", menber1, yunsfu, menber2);
switch( yunsfu )
{
case '+':
printf("= %.2lf\n", menber1 + menber2);
break;
case '-':
printf("= %.2lf\n", menber1 + menber2);
break;
case '*':
printf("= %.2lf\n", menber1 * menber2);
break;
case '/':
if( menber2 == 0)
printf("除数不能为0");
else
printf("= %.2lf\n", menber1 / menber2);
break;
case '%':
if( (long)menber2 == 0)
printf("除数不能为0");
else
printf("= %d\n", (long)menber1 % (long)menber2);
break;
}
printf("\n 是否继续计算? (y or n): ");
scanf(" %c", &ch);
if( ch == 'y' || ch == 'Y')
goto to;
return 0;
}
为什么在第二个scanf(" %c", &ch); %C前面要打一空格?而不打空格在输入Y是会自动退出控制台??
|
最佳答案
查看完整内容
键盘缓冲的问题,第一次输入后还留有 回车 在缓冲,第二次scanf获取时会先获取 回车。
解决办法:
清除一下缓冲就好。
1、flushall();
2、fflush(stdin);
两个都可以。加在第二个scanf之前。
|