在我的C ++书籍示例中,我使用系统(“暂停”)来保持屏幕打开,这是我从操作系统中学到的仅用于作业。现在我的书中有一个例子,它使用exit(),依赖于true或false,我的屏幕消失了。如果我取出exit()程序一直在计算(这就是作者放在exit()中的原因)但是如何解决这个问题?我正在使用Microsoft VS C ++ Express 2012 for Windows Desktop。
//prime.cpp
// demonstrates IF statement with prime numbers
#include <iostream>
using namespace std;
#include <process.h> //for exit()
int main()
{
unsigned long n,j;
cout << "Enter a number: ";
cin >>n; //get number to test
for (j=2; j<= n/2; j++) //divide by integer from
if(n%j==0) //2 on up; if remainder is 0,
{ //it's divisible by j
cout <<"It's not prime; divisible by " <<j<<endl;
exit (0); //exit from program
}
cout <<"It's prime\n";
system ("pause"); //the only way I can get screen to stay open
return 0;
}
如果答案是素数工作正常。如果答案是非主要屏幕眨眼。如果我删除exit(),我得到这个结果:
输入一个数字:8 它不是素数;可被2整除 它不是素数;可被4整除 这是最重要的 按任意键继续。 。
答案 0 :(得分:7)
如果要运行终端程序,请从终端运行它。由于您调用程序的方式,屏幕正在消失。该计划没有任何问题。
答案 1 :(得分:2)
您可以通过重新构建代码来使用break;
代替exit(0)
来解决此问题。前者只会跳出循环,而后者将结束整个程序。
当调用exit(0)
时,执行永远不会到达system("pause");
来电,因此程序会立即结束而不会提示用户继续。
break;
将跳出循环。
如果您需要有关如何具体实施此更多指导,请与我们联系。既然它是作业,你应该先单独尝试:)。提示:由于代码的设置方式,仅使用break;
代替exit(0)
将无效。
答案 2 :(得分:2)
如果您想在任何时候退出循环,可以使用中断语句。对于屏幕暂停,您可以使用 conio.h 中的 getch()功能,但不是标准C ++ 。 getch()等待字符输入(您可以在此语句中使用它,按任意键继续)。对于getch(),使用符合ISO C ++的 _getch()