我正在使用Code :: Blocks进行编程,是的,我是初学者,但每次编写程序时,它都会在IDE中暂停,但在直接执行时不会暂停。
可能的原因是什么?任何人都可以解释一下吗?
我的代码如下:
#include <stdio.h>
void main()
{
float length,breadth,Area;
printf("Enter the value of length and breadth \n\n");
scanf("%f %f",&length,&breadth);
printf("You entered length=%f and breadth=%f \n\n",length,breadth);
Area= length * breadth;
printf("The area of the rectangle is %f\n\n",Area);
return 0;
}
答案 0 :(得分:6)
你必须告诉程序在最后等待输入,否则它将执行,完全按照你在代码中编写并退出。 &#34;好&#34;方法是从终端执行它(如果你在Windows上,则为cmd)
#include <stdio.h>
int main()
{
float length,breadth,Area;
printf("Enter the value of length and breadth \n\n");
scanf("%f %f",&length,&breadth);
getchar(); // catch the \n from stdin
printf("You entered length=%f and breadth=%f \n\n",length,breadth);
Area= length * breadth;
printf("The area of the rectangle is %f\n\n",Area);
getchar(); // wait for a key
return 0;
}
为什么在scanf()之后需要getchar()?
输入数字后,按Enter键即可完成输入。让我们看看你在读什么:浮动空格和另一个浮点数。 \n
不会使用scanf()
,而是留在输入缓冲区(stdin
)中。下次使用从stdin
读取的函数时,此函数看到的第一个符号是\n
(回车)。要从输入缓冲区中删除此\n
,必须在getchar()
后从输入缓冲区中读取1个字符后调用scanf()
。我确定你将来会更频繁地遇到这种行为。
答案 1 :(得分:3)
作为一个真正的,非常糟糕的做法,你可以使用一个fetch调用来停止执行(任何产生一个小暂停的函数,getch都不是标准函数)。
答案 2 :(得分:3)
程序在执行后不应暂停,这是IDE添加的功能。如果您希望执行暂停并等待某些输入,则应指示它执行此操作。例如,如果您在Windows上,则可以添加一行:
system("pause");
在return 0;
之前。这是不可取的,但在某些情况下可能会帮助您进行调试。此外,标准要求您的主要功能是int,而不是void。所以你最好习惯于写int main
而不是void main
。
答案 3 :(得分:-2)
你需要使用getch();在程序结束时(返回声明之前) Getch坚持输出屏幕。