检查用户的否定输入,使用数组

nls*_*tmn 2 c++

我需要编写一个从用户那里获得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个存储桶都只填充正数

You*_*saf 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)