1
#include <stdio.h>
#include <math.h>


int main (void)
{
    float inches;
    printf("Enter the number of inches\n");
    scanf("%f\n",&inches);


    float feet;
    float cm;
    float yards;
    float meter;

    feet = 12 * inches;
    cm = 2.54 * inches;
    yards = 36 * inches;
    meter = 39.37 * inches;

    printf("Amount in feet: %f\n", &feet);
    printf("Amount in cm:   %f\n", &cm);
    printf("Amount in yards: %f\n", &yards);
    printf("Amount in meters: %f\n", &meter);




   getchar();

   return 0;

}

我正在使用开发 C++

是我正在用 C 语言处理的问题吗?基本上以英寸为单位输入一个数字,然后以厘米、码、米和英尺为单位打印数量。这给了我 0.0000 或其他所有人的东西,或者实际上是时间到了。我无法保持屏幕打开,我认为这是 getchar() 的目的,但我一定是弄错了。任何帮助都很棒。谢谢!

编辑 1

至于将 dev c++ 保留在屏幕上而不是在我放入东西后关闭呢?当屏幕弹出时,我还必须输入 2 个值才能返回任何内容?为什么??

4

4 回答 4

1

您正在尝试将浮点数的地址打印为浮点数,您只想这样说:

printf("Amount in feet: %f\n", feet);

请注意在 上缺少地址 ( &) 运算符feet。您想对其他printf呼叫应用类似的更改。

于 2011-07-02T22:41:02.863 回答
1

两个问题:

  1. using 的常见问题scanf()在于,它在未读数字之后留下换行符,并且以下读取操作(getchar()此处)读取它。
  2. 您不应该传递指向printf()的指针,而是传递实际值。
于 2011-07-02T22:42:35.573 回答
0

使用printf,您不会给它float值的地址,而只需给它值。从调用中删除&s 。printf

您需要输入地址,scanf因为该函数会修改您传入的变量,但printf只需要值。实际上,它printf本质上是将指针重新解释为浮点数,这就是显示垃圾值的原因。

于 2011-07-02T22:41:44.620 回答
0

关于我无法保持屏幕显示,对于尝试直接从 IDE(尤其是 Dev-C++)在图形环境中执行控制台程序的每个人来说,这是一个常见问题。问题是没有用于 I/O 的控制台,然后提供了一个控制台,但仅在程序运行时提供,并且由于程序速度很快,如果您在最后一次输入和输出后不添加暂停,您将不会有时间阅读输出。

许多 MS Windows Dev-C++ 用户添加了一个可怕的system("pause"). 我总是建议,如果 Dev-C++ 无法为 I/O 提供带有“即使在程序结束后仍保持打开”选项的控制台,那么最好打开一个 shell(Windows 上的 cmd 或 powershell)和直接从那里运行你的程序。

关于输入问题,不幸的是 scanf-ing 有几个缓冲问题,因为给定格式无法识别的输入不会被丢弃并准备好下一次读取。例如

scanf("%f", &aFloat);
scanf("%f", &theNextFloat); // in your case you have the extra getchar();

1.25 4.5如果您作为第一个输入写入,则不会停止第二个 scanf ,因为4.5它已经可用于下一个 scanf。在您的情况下,它是一个留在缓冲区中的换行符,并且由于 getchar 找到了它,它不需要等待输入。您可以使用 a while( getchar() != EOF ) ;代替,然后要退出,您需要按 Ctrl-D。

于 2011-07-03T09:21:40.990 回答