C语言计算矩形面积时将area=a*h写在变量输入前的问题排查
C代码问题分析
你写的这段代码运行时会出现面积计算结果完全错误、每次运行输出的面积值随机不可预测的问题,核心原因有两个:
- C语言的代码是按书写顺序从上到下顺序执行的,你在还没通过
scanf读取用户输入的a、h有效值之前,就已经执行了area = a * h的计算逻辑,后续用户输入的数值只会更新a、h变量本身,不会触发重新计算area的值,最终输出的area永远是计算时的旧值。 - 你声明的
a、h是函数内的局部自动变量,没有初始化时存储的是内存空间里残留的随机垃圾值,计算area时用的就是这两个无意义的垃圾值,所以最终输出的面积完全不可预测,和你输入的长、宽数值没有任何关联。
修正方案
只需要把area = a * h;这行代码移动到两次scanf读取完a、h的有效值之后、打印面积之前即可,修正后的核心代码逻辑如下:
#include<stdio.h> int main() { int a,h; int area; printf("enter the value of a= "); scanf("%d", &a); printf("the value of a is %d \n", a); printf("enter the value of h= "); scanf("%d", &h); printf("the value of h is %d \n", h); // 拿到有效输入后再计算面积 area=a*h; printf("The area is %d", area); return 0; }
内容的提问来源于stack exchange,提问作者Istiak Ahmed
相关产品推荐
相关产品推荐

