今天在学习c语言中 用switch写计算器中遇到一个问题
初始代码如下: - //用switch循环写计算器
- int a,b;
- char operator;
- printf("请输入第一个数:");
- scanf("%d",&a);
- printf("请输入第二个数:");
- scanf("%d",&b);
- printf("请输入要运算: + - * / \n");
- scanf("%c",&operator);
- switch (operator) {
- case '+' :
- printf("结果为 %d",a+b);
- break;
- case '-' :
- printf("结果为 %d",a-b);
- break;
- case '*' :
- printf("结果为 %d",a*b);
- break;
- case '/' :
- printf("结果为 %d",a/b);
- break;
- }
复制代码
出现无法输入char类型数据 通过debug发现是因为误吞了换行符
所以解决方法为添加getchar(),函数进行保护 - //用switch循环写计算器
- int a,b;
- char operator;
- printf("请输入第一个数:");
- scanf("%d",&a);
- printf("请输入第二个数:");
- scanf("%d",&b);
- printf("请输入要运算: + - * / \n");
- getchar();
- scanf("%c",&operator);
- switch (operator) {
- case '+' :
- printf("结果为 %d",a+b);
- break;
- case '-' :
- printf("结果为 %d",a-b);
- break;
- case '*' :
- printf("结果为 %d",a*b);
- break;
- case '/' :
- printf("结果为 %d",a/b);
- break;
- }
复制代码
能够正常运行 但是要注意只是缓解 是用getchar()函数另外吞了换行符 然后重新接收的字符 |