【问题标题】:C programming elementary problemC编程初等问题
【发布时间】:2011-09-27 10:44:30
【问题描述】:
#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;

}

我正在使用 Dev c++

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

编辑 1

如果我把东西放进去,让 dev c++ 留在屏幕上而不是关闭呢?当屏幕弹出时,我还必须输入 2 个值才能返回任何内容?为什么??

【问题讨论】:

  • 其他人已经解决了您的问题,但作为旁注:feet = inches / 12.0; yards = inches / 36.0; meters = inches / 39.37;

标签: c dev-c++


【解决方案1】:

关于我无法保持屏幕显示,对于试图直接从 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 找到了它,它不需要等待输入。你可以使用一个 while( getchar() != EOF ) ; 而不是,然后要退出你需要按 Ctrl-D。

【讨论】:

  • 有人告诉我这是 Windows 上的 Ctrl-Z,而不是 Ctrl-D;我还没有验证它,但我想这是真的
【解决方案2】:

两个问题:

  1. 使用scanf() 的常见问题是,它在未读数字之后留下换行符,随后的读取操作(此处为getchar())读取它。
  2. 您不应传递指向printf() 的指针,而是传递实际值。

【讨论】:

    【解决方案3】:

    对于printf,您不需要给它float 值的地址,您只需给它值。从printf 调用中删除&amp;s。

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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

      • 将 dev c++ 保留在屏幕上而不是在我放入内容后关闭呢?当屏幕弹出时,我还必须输入 2 个值才能返回任何内容?为什么???
      • @er31:抱歉,我对 Dev C++ 一无所知。
      • 我建议不要使用 Dev-C++ GUI 来运行控制台程序;从命令行运行它们。此外,我希望您使用单独安装的 MinGW,因为与 Dev-C++ 捆绑提供的版本非常旧
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多