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

为何C语言程序中area与peri变量输出均为0.000000?

问题分析与解决

咱们先直接点出核心问题:你把变量计算的时机完全搞反了,还有个小笔误,这两个问题共同导致了输出异常。

1. 最关键的错误:计算逻辑的顺序颠倒

你看这段初始化代码:

double length, width, peri = (length*2) + (width*2), area = length*width;

这里你在定义peri和area的时候,就直接用length和width来计算初始值了,但这时候length和width还完全没被用户输入赋值!它们属于局部自动变量,默认没有初始化,内存里的初始值是不确定的(你这次输出0.000000只是巧合,换个运行环境可能会输出完全随机的垃圾值)。

正确的逻辑应该是:先通过scanf读取用户输入的length和width,拿到有效数值后,再用它们计算周长和面积,而不是反过来先计算再赋值。

2. 额外的小笔误

你的printf输出语句里写了circ,但你定义的周长变量明明是peri,这会导致编译错误(如果编译器没拦截,也会使用未定义的变量,结果同样不对)。

修正后的完整代码

把计算逻辑移到输入之后,补上必要的头文件,再修正变量名,代码就能正常运行了:

#include <stdio.h>

int main() { 
    double length, width, peri, area;
    
    printf("Enter the length of the rectangle in centimeters: "); 
    scanf("%lf", &length); 
    printf("\nEnter the width of the rectangle in centimeters: "); 
    scanf("%lf", &width); 
    
    // 现在length和width已有有效输入值,再进行计算
    peri = (length * 2) + (width * 2);
    area = length * width;
    
    printf("The perimeter of the rectangle is %lf cm.\nThe area of the rectangle is %lf cm.", peri, area); 
    return 0; 
}

补充小知识点

在C语言中,函数内部的局部变量(比如main里的这些变量)如果不手动初始化,它们的初始值是未定义行为——不是固定为0,只是你这次运行刚好碰到了内存中残留的0值而已。所以一定要养成习惯:使用变量之前,必须先给它赋值!

内容的提问来源于stack exchange,提问作者Antonio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:30:02