0

这个程序可以吗,还是可以改进(但很简单)?如何确保没有输入重复数字?

int n;
int array[9];

cout<<"Enter Number Between 9-0 Only"<<endl;
for(int i = 0; i<=10; i++){
    cout<<"Enter Number" <<(i+1)<<endl;
    cin >> n;
    if((n >= 0) && (n <=9)){
       array[i]=n;
     }
        else{
        cout<<"Numbers from 0-9 only\n"<<endl;

        break;
    }

}
4

2 回答 2

1

(编辑)完成,编译代码

要检查这些数字是否用于更高的性能,请尝试以下操作(使用 Jack Radcliffe 的工作代码):

#include <iostream>
using namespace std;

int main()
{
  int n = 0;
  int array[9] = {0};

  bool isUsed[10] = {0};

  for(int i = 0; i < 9; i++) 
  {
    cout << "Enter Number " << (i + 1) << endl;
    cin >> n;

    if((n >= 0) && (n <= 9))
    {
      if (isUsed[n] == false)
      {
        array[i] = n;
        isUsed[n] = true;
      }

      else
      {
        cout << "Number has already been used." << endl;
        i--;
      }
    }

    else 
    {
      cout << "Numbers from 0-9 only." << endl;
      i--;
    }
  }

  return 0;
}

使用这种简单的代码,优化并不是完全必要的,但这似乎是一种练习,那么为什么不练习优化代码呢?

于 2012-07-18T20:24:32.640 回答
0

大部分都很好,尽管有两个问题很突出。

首先,您有一个大小为 9 的数组,但您正在接收 11 个数字,因为您从 0 开始 for 循环并一直到 10。

其次,既然你有它,所以如果输入的数字不在 0 和 9 之间,包括 0 和 9,for 循环就会中断。这意味着如果输入了无效数字,则将少于 9 个数字放入数组中。更改整个循环以阅读此内容,您应该会很好:

for(int i = 0; i < 9; i++) {
    cout << "Enter Number " << (i + 1) << endl;
    cin >> n;
    if((n >= 0) && (n <= 9))
       array[i] = n;
    else {
        cout << "Numbers from 0-9 only\n" << endl;
        i--;
    }
}

整个火部分是正确的,但我删除了 else 语句中的中断并添加了 i--。我补充说,当提示用户重新输入号码时,输入号码将位于正确的索引处。

我希望这可以帮到你。

于 2012-07-18T20:13:14.373 回答