1

在我的 C++ 书籍示例中,我使用了系统(“暂停”)来保持屏幕打开,这是我从操作系统中学到的,仅用于家庭作业。现在我的书中有一个使用 exit() 的示例,根据真或假,我的屏幕会消失。如果我取出 exit() 程序会继续计算(这就是作者放入 exit() 的原因)但是如何解决这个问题?我正在为 Windows 桌面使用 Microsoft VS C++Express 2012。

//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 整除 按任意键继续。. .

4

3 回答 3

7

如果要运行终端程序,请从终端运行它。由于您调用程序的方式,屏幕正在消失。程序没有问题。

于 2013-07-28T23:36:31.393 回答
2

您可以通过重组代码来break;代替exit(0). 前者只会跳出循环,而后者会结束整个程序。

当调用exit(0)发生时,执行永远不会到达您的system("pause");调用,因此程序立即结束而不提示用户继续。

break;,另一方面,只会跳出循环。

如果您需要有关如何具体实施的更多指导,请告诉我。由于这是家庭作业,您应该先单独尝试一下:)。提示:仅仅使用break;代替是exit(0)行不通的,因为你的代码是如何设置的。

于 2013-07-28T23:41:58.907 回答
2

如果你想在任何时候跳出循环,你可以使用break语句。对于屏幕暂停,您可以使用conio.h中的getch()函数,但它不是标准 C++getch()等待字符输入(您可以将它与此语句一起使用,按任意键继续)。对于 getch(),使用符合 ISO C++ 标准的_getch()

于 2013-07-29T00:18:52.150 回答