【发布时间】:2021-06-17 21:45:51
【问题描述】:
每次打印高度或长度时,值为0。就像C不保存xHeight,yHeight,xLength或yLength的值一样。我查了一下,我认为不是语法问题。
#include <stdio.h>
#include <stdlib.h>
int main()
{
float xHeight,yHeight,xLength,yLength, height = 0.0, length = 0.0;
printf("Tell me the x and y: \n");
scanf(" %.2lf", &xHeight);
fflush(stdin);
scanf("%.2lf",&yHeight);
fflush(stdin);
height = xHeight - yHeight;;
printf("\n%.2lf",height);
printf("Now tell me another x and y: \n");
scanf(" %.2lf", &xLength);
fflush(stdin);
scanf("%.2lf",&yLength);
fflush(stdin);
length = xLength - yLength;
printf("\n%.2lf", length);
printf("\n==========================================\n");
printf("The perimeter of this rectangle is %.2lf", 2*(length+height));
return 0;
}
【问题讨论】:
-
Warnings。他们是your friends。
-
如果您的编译器没有就这些 scanf 调用向您发出警告,请打开警告选项直到它发出警告。
-Wall -Wextra是 GCC 和 clang 的良好开端。 -
另外,在尝试使用它设置的变量之前,请务必检查 scanf 的返回值是否有错误。而
fflush(stdin);是未定义的。 -
您用于
scanf的格式说明符是%.2lf,但对于普通的float应该是%.2f。lf代表double -
Ether 在您的
scanf调用中将lf更改为f,或者将您的浮点类型更改为double(无论如何我都会这样做 - 很少需要使用 @987654336 @)。