C/C++新手打印用户输入数值及运算结果运行报错如何解决?
问题排查与修复方案
存在的错误点
- 语法错误:
printf格式化字符串写法不符合C语言规范你编写的
printf("\nAddition of " a "+" b "=%d", sum);是错误写法,C语言不支持直接将变量穿插在多个字符串字面量之间拼接输出,必须在格式化字符串中使用对应占位符传递变量值,int类型对应的格式化占位符为%d,正确的格式化字符串应为"\nAddition of %d + %d = %d",之后依次传入a、b、sum三个参数即可。 - 兼容性错误:引用了非标准头文件
<conio.h>该头文件是老版Turbo C编译器的专属头文件,不属于C标准库,在GCC、Clang等绝大多数现代编译器下都无法识别,且你的代码中没有用到任何该头文件提供的函数,可以直接删除。
- 潜在运行时风险:未做除数为0的校验
你的代码直接执行了
a/b和a%b运算,如果用户输入的第二个数b为0,会直接触发运行时崩溃,建议增加判断逻辑规避该问题。
修正后的完整代码
#include <stdio.h> int main(){ int a, b, sum, sub, div, mult, rem; printf("Enter the 1st number : "); scanf("%d", &a); printf("Enter the 2nd number : "); scanf("%d",&b); sum = a + b; sub = a - b; mult = a * b; // 增加除数非0判断,避免运行时崩溃 if (b != 0) { div = a / b; rem = a % b; } printf("\nAddition of %d + %d = %d", a, b, sum); printf("\nSub = %d", sub); printf("\nMult = %d", mult); if (b != 0) { printf("\nDiv = %d", div); printf("\nRem = %d \n", rem); } else { printf("\nDiv and Rem operation cannot be performed: divisor cannot be 0\n"); } return 0; }
内容的提问来源于stack exchange,提问作者Hacker India
相关产品推荐
相关产品推荐

