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

C语言实现计算器程序运行异常,求助排查代码问题

C语言计算器代码问题排查与修复

存在的问题

  • 输入格式符使用错误:运算符变量o是char单字符类型,scanf中错误使用了字符串格式符%s,会触发内存越界,覆盖相邻变量的值。正确应使用字符格式符%c,且在%c前加空格可自动匹配输入中的空白字符,避免读取到多余的空格、换行符。
  • 条件判断后多余分号:所有if、else if语句末尾多写了分号,分号会被识别为条件判断的空执行体,后续的大括号代码块和条件判断完全脱离,不仅逻辑完全错误,还会触发else没有匹配if的编译报错。
  • 潜在异常未处理:除法运算未做除数为0的判断,遇到除数为0的输入会直接触发程序崩溃。

修复后的完整代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main(void)
{
    char o;
    int x, y;
    while (1)
    {
        printf("type the problem: ");
        // 修正格式符,%c前加空格匹配前置空白
        scanf("%d %c %d", &x, &o, &y);
        
        // 移除所有条件判断末尾的多余分号
        if (o == '+')
        {
            printf(" %d\n", x + y);
        }
        else if (o == '-')
        {
            printf(" %d\n", x - y);
        }
        else if (o == '*')
        {
            printf("%d\n", x*y);
        }
        else if (o == '/')
        {
            // 新增除数为0的异常处理
            if (y == 0) {
                printf("divisor cannot be 0!\n");
            } else {
                printf("%d\n", x / y);
            }
        }
        else
        {
            printf("wrong input! \n");
        }
    }
    return 0;
}

内容的提问来源于stack exchange,提问作者spaceprogram

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:36:05