检查用户的负输入,使用数组

Checking negative input from user, working with array

本文关键字:数组 输入 用户 检查      更新时间:2023-10-16

我需要写一个代码,以从用户那里获得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;
}

问题是数组应仅存储正数。当我输入负num时,它也将其存储,然后打印垃圾值。例如,输入为:3 -2 1 6 8输出为:

Number 0 = 3
Number 1 = -1608404014
Number 2 = 1
Number 3 = 6
Number 4 = 8

代码应询问用户输入输入,直到数组中的所有5个存储桶仅填充正数

垃圾值是打印的,因为如果输入负数,则跳过了代码中的数组的索引。

对于您的程序,要继续向用户询问输入,直到用户输入正值为止,您在if block中需要一个while loop,如果输入负值,则会显示Error消息。

还需要从代码中删除for loop中的else block,因为这是导致垃圾价值打印的原因。

尝试以下代码

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;
    }

,因为输入值为负,您不将其存储到元素i,但仅弹出消息,然后您在没有输入的情况下离开了此元素,并增加了循环计数器,并且您猜测UN - 发射变量具有垃圾值:

该解决方案是使用嵌入式的Wile循环在负值以负值阻止,直到输入有效值为止:

int input;
int num[5];
for(int i = 0; i <= 4; ++i)
{
    cin >> input;
    while(input < 0)
    {
        cout << "Error" << endl;
        cout << "num[ " << i << "]: ";
        cin >> input;
    }
        num[i] = input;
}
for( i = 0; i <= 4; ++i){
cout << "Number " << i << " = " << num[i] << endl;
}