C语言入门问题:输入非法运算符后如何立即终止程序
C语言入门:运算符校验优化问题
我目前正在学习C语言,处于入门阶段。以下是我的代码:
#include <stdio.h> int main (){ char operator; double num1; double num2; double result; printf("\n Enter an operator"); scanf("%c", &operator); printf("Enter number 1:"); scanf("%lf", &num1); printf("Enter number 2:"); scanf("%lf", &num2); switch(operator){ break; case '+': result = num1 + num2; printf("\nresult: %.0lf", result); break; case '-': result = num1 - num2; printf("\nresult: %.0lf", result); break; case '*': result = num1 * num2; printf("\nresult: %.0lf", result); break; case '/': result = num1 / num2; printf("\nresult: %lf", result); break; default: printf("%c is not valid", operator); } return 0; }
当前代码存在问题:当我输入+、-、*、/以外的运算符时,程序仍会要求输入两个数字,之后才提示“%c is not valid”。我希望修改代码,在输入非法运算符后立即显示错误信息并终止程序,无需再输入数字。我尝试过使用break或if-else语句,但未能成功实现,恳请提供帮助。
解决方案
核心思路是获取运算符后立即校验合法性,非法则直接终止程序,跳过后续输入步骤。修改后的代码如下:
#include <stdio.h> #include <stdlib.h> // 引入exit函数所需头文件 int main (){ char operator; double num1; double num2; double result; printf("\nEnter an operator: "); scanf("%c", &operator); // 先校验运算符是否合法 if (operator != '+' && operator != '-' && operator != '*' && operator != '/') { printf("%c is not valid\n", operator); exit(1); // 终止程序,返回非0值表示异常退出 } printf("Enter number 1: "); scanf("%lf", &num1); printf("Enter number 2: "); scanf("%lf", &num2); switch(operator){ case '+': result = num1 + num2; printf("\nresult: %.0lf\n", result); break; case '-': result = num1 - num2; printf("\nresult: %.0lf\n", result); break; case '*': result = num1 * num2; printf("\nresult: %.0lf\n", result); break; case '/': // 补充除数不能为0的校验 if (num2 == 0) { printf("Error: Division by zero is not allowed\n"); exit(1); } result = num1 / num2; printf("\nresult: %lf\n", result); break; default: printf("%c is not valid\n", operator); } return 0; }
修改说明
- 移除了原代码中
switch开头无效的break;语句(它在所有case之前,不会被执行) - 添加
#include <stdlib.h>,使用exit(1)函数直接终止程序,避免执行后续输入逻辑 - 在获取运算符后立即用
if判断合法性,非法则打印错误并退出 - 额外补充了除数为0的校验,避免运行时崩溃(入门阶段容易忽略的细节)
内容的提问来源于stack exchange,提问作者Bunyamin Erkaya
相关产品推荐
相关产品推荐

