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

C语言中两个非零double类型相乘结果为0的问题求助

问题排查与修复:矩形/正方形面积计算代码输出0的问题

核心错误是scanf读取double类型变量时格式符使用错误:

你的代码中,side1和side2是double类型,但scanf用了%f格式符(该格式符对应float类型),这会导致输入值无法正确写入double变量,最终计算时变量值异常,输出0。

修正后的代码:

#include <stdio.h>
#include <stdlib.h>

double molt(double *a, double *b){
        return (*a)*(*b);
    }

int main(){
    double side1;
    double side2;
    printf("Insert the length of the first side:         ");
    scanf("%lf", &side1); // 改为%lf读取double类型
    printf("Insert the length of the second side:        ");
    scanf("%lf", &side2); // 改为%lf读取double类型
    printf("The Area of your square or rectangle is:   %f", molt(&side1, &side2));
    return 0;
}

补充说明:

  • scanf中,%lf专门用于读取double类型,%f对应float,二者混用会引发内存访问错误,导致变量存储值异常。
  • printf中%f可以正常输出double类型,因为调用printf时float会自动提升为double处理,所以此处格式符无需修改。

内容的提问来源于stack exchange,提问作者il.giaco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 15:28:11