MacOS下VS Code运行C程序异常:输入首数后流程异常跳转
C程序运行异常的问题分析与修复
核心错误及修复方法
- scanf格式字符串错误:你写的
scanf("a=%lf\n", &a)要求输入必须严格匹配a=数值的格式,而且末尾的\n会让scanf持续等待非空白字符,直接导致后续输入被跳过。改成scanf("%lf", &a),运行时直接输入数值回车即可,无需加a=前缀。 - 计算公式语法错误:计算
d的代码里,b(a+b+c)漏了乘法运算符*,要写成b*(a+b+c);同时括号不匹配,sqrt()的右括号和分母(a+b都未闭合,直接引发语法错误。 - 编译链接缺失:使用
math.h里的sqrt函数时,gcc编译必须加-lm参数链接数学库,否则会报未定义引用错误。 - 输出格式错误:
printf("result=%lf\n:",d);里的冒号位置错误,移到\n前面或者直接删掉,避免输出混乱。
修正后的完整代码
#include<stdio.h> #include<math.h> int main(void) { double a,b,c; printf("enter number a: "); scanf("%lf", &a); printf("enter number b: "); scanf("%lf", &b); printf("enter number c: "); scanf("%lf", &c); double d = sqrt(a * b * (a + b + c) * (a + b - c)) / (a + b); printf("result=%lf\n", d); return 0; }
正确编译命令
在终端执行:
gcc test2.c -o test2 -lm
运行程序后,依次输入三个数值回车,就能得到正确结果。
内容的提问来源于stack exchange,提问作者Роман Романчук
相关产品推荐
相关产品推荐

