C ++在循环内添加计数器变量并再次初始化其值

时间:2018-09-27 13:10:14

标签: c++

我的程序有问题,我只是不知道如何在循环中添加计数器变量并再次初始化其值以对程序执行某些语句。每次我运行该程序时,无论何时输入一个字符,MessageBox函数都会一直显示在屏幕上,这取决于我输入了多少个字母。我想在用户每次输入字母时循环播放。

这是我的代码:

#include <iostream>
#include <windows.h>
using namespace std;

main()
{

    int x, y = 1000;
    bool check = true;
    do {

        cout << "Enter a Number Only: ";
        cin >> x;

        if (x >= check) {
            if (x > 1000) {
                MessageBox(NULL, "Program Ends.", "Ends", MB_OK | MB_ICONINFORMATION);
            }
        }
        else if (cin.fail()) {
            cin.clear();
            cin.ignore();
            MessageBox(NULL, "Value: Not a Money.", "Error", MB_OK | MB_ICONERROR);
        }

        system("cls");
    } while (x < 1000);

    return 0;
}

1 个答案:

答案 0 :(得分:0)

以下示例代码已修复,仅在第一次显示错误时出现:

#include <iostream>
#include <windows.h>
using namespace std;

int main() {

    int x, y = 1000;
    bool check = true;
    do {

        cout << "Enter a Number Only: ";
        cin >> x;

        if (cin.fail()) {
            // Input was not valid clear the fail status
            cin.clear();
            cin.ignore();

            // Did we display the error message? 
            if (check) {
                MessageBox(NULL, "Value: Not a Money.", "Error", MB_OK | MB_ICONERROR);
                check = false;
            }
        }
        else {
            // Input was a number
            if (x > 1000) {
                MessageBox(NULL, "Program Ends.", "Ends", MB_OK | MB_ICONINFORMATION);
                return;
            }
        }

        system("cls");
    } while (x < 1000);


    return 0;
}

我在代码中添加了一些注释以阐明更改。

这里的更新是每次出现错误时都会显示消息框的更新,而不仅仅是第一次:

#include <iostream>
#include <windows.h>
using namespace std;

int main() {

    int x, y = 1000;

    do {

        cout << "Enter a Number Only: ";
        cin >> x;

        if (cin.fail()) {
            cin.clear();
            cin.ignore();
            MessageBox(NULL, "Value: Not a Money.", "Error", MB_OK | MB_ICONERROR);
        }
        else {
            if (x > 1000) {
                MessageBox(NULL, "Program Ends.", "Ends", MB_OK | MB_ICONINFORMATION);
                return;
            }
        }

        system("cls");
    } while (x < 1000);


    return 0;
}