C语言调用math.h的log(x)函数任意输入均返回相同值问题求助
C代码问题排查与修复
你代码里的问题出在两处细节错误:
- 缺少标准输入输出头文件引入:
printf、scanf属于<stdio.h>库提供的函数,你当前只引入了<stdlib.h>和<math.h>,未引入<stdio.h>会导致函数调用行为未定义。 scanf格式符使用错误:对于double类型的变量,scanf读取时需要使用%lf作为格式符,你用的%f仅适用于float类型。格式符不匹配会导致输入的数值被错误解析写入内存,最终拿到的x本身就是异常值,所以计算log(x)的结果始终固定为异常输出。
修复后完整代码
#include <stdio.h> #include <math.h> void PrintLogarithm(double x){ if(x<=0){ printf("Positive numbers only please.\n"); return; } double Result = log(x); printf("%f\n", Result); } int main(){ double x; scanf("%lf", &x); PrintLogarithm(x); return 0; }
补充说明:math.h中的log()计算的是自然对数(以e为底),如果你需要计算以10为底的常用对数,可以换成log10()函数。
内容的提问来源于stack exchange,提问作者da_vinci_3864
相关产品推荐
相关产品推荐

