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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:57:00