【问题标题】:Bizzare numbers appears randomly in output.(C++)奇怪的数字随机出现在输出中。(C++)
【发布时间】:2019-10-22 10:47:46
【问题描述】:

我的代码:

#include <iostream>
using namespace std;
int main(){
int a[500];
int value;
for(int i=0;i<500;i++){
    cout<<"Please Enter a value (0-100):";
    cin>>value;
    if (value>=0 && value<=100){
        a[i]=value;
    }
    else if(value<0){
        break;
        }
    }
    for(int i=0;i<5;i++){
        cout<<a[i]<<" ";
    }

}

输出样本:

Please Enter a value (0-100):10

Please Enter a value (0-100):12

Please Enter a value (0-100):5

Please Enter a value (0-100):-5

10 12 5 0 786432

--------------------------------
Process exited after 7.597 seconds with return value 0
Press any key to continue . . .

数组具有未给出的值。我不知道它们是如何定义的。请帮我解决这个问题。

注意:抱歉我的错误。我还是个新手。

【问题讨论】:

  • 我发现“if (value=100){”的标志是错误的。因此,我将其更改为“if (value>=0 && value
  • 请编辑您的代码以反映您刚刚所做的更正!
  • 您输入了 3 个数字,但打印了 5 个。您应该计算输入了多少个数字,然后在最后的循环中使用该数字仅打印出这些数字。
  • 然后初始化。
  • 我看到了你的回答@TedLyngmo。非常感谢!

标签: c++ random output cout


【解决方案1】:

else if(value&lt;0)

当此条件为真时,您会在 a[i] 中留下一个未初始化的值,这就是您所看到的。它也可以做一些完全不同的事情,因为读取未初始化的值会使您的程序具有未定义的行为。

用零初始化您的数组:int a[500]{};

【讨论】:

    【解决方案2】:

    读取未初始化的变量是未定义的行为。您的数组 a 未初始化。未定义的行为意味着您的程序中可能发生任何事情,包括打印垃圾值。

    我建议您阅读涵盖这些基础知识的a good C++ book

    【讨论】:

    • 未初始化是什么意思?
    • @J.Ruffalo 您没有在其中写入任何内容,因此从中读取内容是不可预测的(实际上是非法的)。
    【解决方案3】:

    您可以有一个索引来跟踪用户输入的项目数(noOfItem),然后打印到该数字。例如,

     #include <iostream>
        using namespace std;
        int main(){
        int a[500];
        int value;
        int noOfItem=0;
        for(int i=0;i<500;i++){
            cout<<"Please Enter a value (0-100):";
            cin>>value;
            if (value>=0 && value<=100){
                a[i]=value;
                noOfItem++;
            }
            else if(value<0){
                break;
                }
            }
            for(int i=0;i<noOfItem;i++){
                cout<<a[i]<<" ";
            }
    
        }
    

    【讨论】:

      【解决方案4】:

      您正在声明一个大小为 500 的数组,并使用 for 循环迭代进行初始化。 仅供参考,在 C++ 中,未初始化的数组将其所有值都保存为垃圾值......垃圾值只不过是一个随机数。 您可以使用以下代码将所有数组值初始化为零。,

      int a[500] = {0};

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-13
        • 2021-12-03
        • 2011-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多