You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 19:47:21