这个程序是正常的,还是可以改进(但很简单)?如何确保没有输入重复的数字?
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;
}
}
答案 0 :(得分:1)
不要重复输入:
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)){
bool bEntered = false;
for( int j=0; j<10;j++)
{
if( n == array[j] )
{
cout << "number already has been input" << endl;
bEntered = true;
}
}
if( !bEntered )
array[i]=n;
}
else{
cout<<"Numbers from 0-9 only\n"<<endl;
break;
}
}
答案 1 :(得分: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;
}
这个简单的代码并不是完全必要的优化,但这似乎是一种练习,所以为什么不练习优化代码?
答案 2 :(得分: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--。我补充说,当提示用户重新输入号码时,条目编号将是正确的索引。
我希望这很有帮助。