0

嗨,这是我的问题。

编写一个使用 do-while 语句的程序。它从键盘读入一个整数 n。如果 n 不在 1 到 10 的范围内,它会发出一声“哔”声并要求输入另一个整数。如果 n 在正确的范围内,它会写出“您已输入 n”,然后退出。

这是我的答案。

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

void main()
{
    int number = 0;
    do
    {
      cout << "Enter an integer." << endl;
      cin >> number;
      if (!(number >= 1 && number <= 10))
      {
        Beep(400, 400);
      }
    }
    while (!(number >= 1 && number <= 10));
    cout << "You have input " << number << endl;
    system("PAUSE");
}

你可以看到线

(!(number >= 1 && number <= 10))

重复。有什么解决方法吗?

4

3 回答 3

3
int GetNumber()
{
    int number;
    cout << "Enter an integer." << endl;
    cin >> number;
    return number;
}

void main()
{
    int n = GetNumber();

    while(n < 1 || n > 10)
    {
        Beep(400, 400);
        n = GetNumber();
    }

    cout << "You have input " << n << endl;
    system("PAUSE");
}
于 2013-04-09T02:39:02.877 回答
1
#include <iostream>
#include <Windows.h>
using namespace std;

void main()
{
    int number = 0;
    bool invalid_input = true;
    do
    {
      cout << "Enter an integer." << endl;
      cin >> number;
      invalid_input = !(number >= 1 && number <= 10); 
      if (invalid_input)
      {
        Beep(400, 400);
      }
    }
    while (invalid_input);
    cout << "You have input " << number << endl;
    system("PAUSE");
}
于 2013-04-09T02:37:54.653 回答
1

也许...

int number = 0;
while (true)
{
  cout << "Enter an integer." << endl;
  if (cin >> number && number >= 1 && number <= 10)
      break;
  Beep(400, 400);
}
cout << "You have input " << number << endl;
system("PAUSE");
于 2013-04-09T02:38:30.997 回答