我正在尝试为插入的任何二进制数输出“状态”(对于每个0,它输出1和最大之间的随机数),例如10100应该输出2,在1和2之间的随机数,3,在1之间的随机数&3,介于1和3之间的随机数。因此看起来像21323或223212或21313,等等。但是我的程序给我的输出是23456-为什么?

int main()
{
    char binaryArray [0];
    int c1=1;
    int c0=0;
    int i=0;
    int n;

    cout << "Enter length of binary: "; //Length = total number of 1s & 0s
    cin >> n;

    cout << "Enter binary number: ";
    cin >> binaryArray;

    cout << "States: ";

    for(i; i<n; i++)
    {
        if(binaryArray[i]=1)
        {
            c1++;
            cout << c1;
        }
        else if(binaryArray[i]=0)
        {
            c0++;
            cout << rand()%c1+1;
        }
        /* if(c0 > c1)
        {
        cout << "Invalid Binary Representation.\n" << endl;
        exit(0);
        } */
    }

    system("PAUSE");
    return 0;
}

最佳答案

当您有一个由0(即零)个字符组成的数组时,您将无法保存任何内容,甚至不能保存任何一位。使该数组“足够大”(对您而言意味着什么)或更好地使用std::string代替。

哦,在启用所有编译器警告的情况下编译代码。当您正确理解并纠正所有这些警告后,您的程序应会工作得更好。 (提示:条件内的赋值)

关于c++ - C++程序输出中的次序列错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6923058/

10-11 23:08
查看更多