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
相关产品推荐
相关产品推荐

