C程序设计基本问题 #包括 #包括 内部主(空) { 浮动英寸; printf(“输入英寸数\n”); 扫描频率(“%f\n”,&inches); 浮脚; 漂浮厘米; 浮码; 浮子流量计; 英尺=12*英寸; 厘米=2.54*英寸; 码数=36*英寸; 米=39.37*英寸; printf(“以英尺为单位的金额:%f\n,&英尺); printf(“以厘米为单位的金额:%f\n”,&cm); printf(“以码为单位的金额:%f\n”,&yards); printf(“以米为单位的金额:%f\n,&米); getchar(); 返回0; }
我正在使用devc++ 这是我在C中处理的问题。基本上输入一个以英寸为单位的数字,然后以厘米、码、米和英尺为单位打印数量。这是给我0.0000或者其他的,或者实际上是时间到了。我无法保持屏幕的高亮度,我认为这就是getchar()的目的,但我一定是弄错了。任何帮助都很好。谢谢 编辑1C程序设计基本问题 #包括 #包括 内部主(空) { 浮动英寸; printf(“输入英寸数\n”); 扫描频率(“%f\n”,&inches); 浮脚; 漂浮厘米; 浮码; 浮子流量计; 英尺=12*英寸; 厘米=2.54*英寸; 码数=36*英寸; 米=39.37*英寸; printf(“以英尺为单位的金额:%f\n,&英尺); printf(“以厘米为单位的金额:%f\n”,&cm); printf(“以码为单位的金额:%f\n”,&yards); printf(“以米为单位的金额:%f\n,&米); getchar(); 返回0; },c,dev-c++,C,Dev C++,我正在使用devc++ 这是我在C中处理的问题。基本上输入一个以英寸为单位的数字,然后以厘米、码、米和英尺为单位打印数量。这是给我0.0000或者其他的,或者实际上是时间到了。我无法保持屏幕的高亮度,我认为这就是getchar()的目的,但我一定是弄错了。任何帮助都很好。谢谢 编辑1 如何保持DeV C++在屏幕上而不是在我把东西放进去后关闭?我还必须在屏幕弹出时返回任何内容之前输入2个值?为什么 #include <stdio.h> #include <math.h>
如何保持DeV C++在屏幕上而不是在我把东西放进去后关闭?我还必须在屏幕弹出时返回任何内容之前输入2个值?为什么
#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;
}
请注意,
脚上缺少地址(&
)操作符。您希望对其他调用应用类似的更改。使用printf
,您不给它指定浮点值的地址,只给它指定值。从printf
调用中删除&
s
您需要在scanf
中输入地址,因为函数修改您传入的变量,但printf
只需要这些值。实际上,printf
实际上是将指针重新解释为浮点数,这就是显示垃圾值的原因。有两个问题:
使用scanf()
的常见问题是,它在未读数字之后保留换行符,并且下面的读取操作(此处为getchar()
)读取它
您不应该传递指向printf()
的指针,而应该传递实际值
关于我不能保持屏幕正常,对于每个试图直接从IDE在图形环境中执行控制台程序的人来说,这是一个常见的问题,特别是对于Dev-C++。问题是没有I/O控制台,然后提供了一个控制台,但只针对程序运行的时间,而且由于程序速度很快,如果在上次输入和输出后不添加暂停,您将没有时间读取输出
许多MS Windows Dev-C++用户添加了一个可怕的系统(“暂停”)
。我总是建议,如果Dev-C++不能为I/O提供一个带有选项“即使在程序结束后仍保持打开状态”的控制台,那么最好打开一个shell(windows上的cmd或powershell)并直接从那里运行程序
关于输入问题,不幸的是,扫描有几个缓冲问题,因为对于给定格式无法识别的输入不会被丢弃,并准备进行下一次读取。例如
printf("Amount in feet: %f\n", feet);
如果将1.25 4.5
作为第一个输入写入,则不会停止第二次扫描,因为4.5
已可用于下一次扫描。在您的例子中,它是一个保留在缓冲区中的换行符,因为getchar已经找到了它,所以它不需要等待输入。你可以用一个
while(getchar()!=EOF)代码>代替,然后退出,你需要点击CTRL D.< /P>,在屏幕上保存DeV C++,而不是在我把东西放进去之后关闭它呢?我还必须在屏幕弹出时返回任何内容之前输入2个值?为什么???E31:对不起,我对DEV C++一无所知。我建议不要使用DEV-C++ + GUI来运行控制台程序;从命令行运行它们。此外,我希望您使用的是一个单独的MinGW安装,因为Dev-C++捆绑包中提供的MinGW非常旧。其他人已经解决了您的问题,但作为旁注:feet=inches/12.0;码数=英寸/36.0;米=英寸/39.37代码>有人告诉我它在windows上是Ctrl-Z,而不是Ctrl-D;我还没有证实,但我想这是真的
scanf("%f", &aFloat);
scanf("%f", &theNextFloat); // in your case you have the extra getchar();