【发布时间】:2016-03-04 03:37:29
【问题描述】:
我无法让我的程序在计算面积后实际计算任何值。
它计算得很好,我为自己没有错误感到自豪。
但现在它只是在我的 scanf 语句要求加倍之后吐出空白行并要求更多。为什么?
我编写了一个 printf 来取回我的 scanf 值,只是为了检查编译器是否得到它。它不是。没看懂。
#include <stdio.h>
int main (void)
{ int length;
int width;
int area;
double costPersqft;
//Statements
printf("Enter length in feet: ");
scanf("%d", &length);
printf("Enter width in feet: ");
scanf("%d", &width);
int get_Area (int x, int y)
{
return(x*y);
}//Area
area = get_Area (length, width);
printf("Length: %d\n", length);
printf("Width: %d\n", width);
printf("Area: %d\n", area);
printf("Enter cost per square foot: ");
scanf("%f", &costPersqft);
printf("%.2f", costPersqft);
return 0;
}//Main
【问题讨论】:
-
也许尝试使用
%lf而不是%f? -
将指向具有错误类型的对象的指针传递给
scanf()会调用未定义的行为。 -
“它计算得很好,我为自己没有错误感到自豪。”当心!编译不代表没有bug。
-
请注意,C 中的函数嵌套是 GCC 扩展,不在标准中。在这种情况下你不需要它。
-
“在我的 scanf 声明之后要求更多”。这到底是什么意思?请显示确切的测试运行日志 - 将其作为文本粘贴到问题中。但对于初学者
scanf("%f", &costPersqft);。%f指令需要一个指向 float 的指针,但您给它的是一个指向 double 的指针。将costPersqft的类型更改为float(或将%f更改为%lf以处理double)。
标签: c