我需要编写一个从用户那里获得5个正数的代码。这是我的代码:
cout << "Write 5 positive numbers:" << endl;
int input;
int num[5];
for(int i = 0; i <= 4; ++i){
cin >> input;
if(input < 0){
cout << "Error" << endl;
}else{
num[i] = input;
}
}
for(int i = 0; i <= 4; ++i){
cout << "Number " << i << " = " << num[i] << endl;
}
Run Code Online (Sandbox Code Playgroud)
问题在于数组只能存储正数。当我输入negative时num,它也存储它,然后打印垃圾值。例如,输入为:3 -2 1 6 8输出为:
Number 0 = 3
Number 1 = -1608404014
Number 2 = 1
Number 3 = 6
Number 4 = 8
Run Code Online (Sandbox Code Playgroud)
该代码应要求用户输入输入,直到数组中的所有5个存储桶都只填充正数
打印垃圾值是因为,如果输入负数,则会跳过代码中数组的索引。
为了使程序在用户输入正值之前一直要求用户输入,如果输入负值,则需要在while loop内部if block显示Error消息。
另外,您还需要从代码中删除else block内部内容for loop,因为这是导致垃圾值被打印的原因。
尝试以下代码
int main()
{
cout << "Write 5 positive numbers:" << endl;
int input;
int num[5];
for(int i = 0; i <= 4; i++)
{
cin >> input;
if(input < 0)
{
cout << "Error" << endl;
while(input < 0)
{
cin>>input;
}
}
num[i] = input;
}
for(int i = 0; i <= 4; i++){
cout << "Number " << i << " = " << num[i] << endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)