C++程序输出中的小序列错误

Minor sequence error in C++ program output

本文关键字:错误 程序 输出 C++      更新时间:2023-10-16

我试图为插入的任何二进制数输出"states"(对于每个0,它输出一个介于1&max之间的随机数(,例如10100应该输出2,介于1&2,3,介于1&3之间的随机数;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

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

首先,在if语句中有赋值。使用==而不是=

其次,如果希望数字以二进制形式输入并存储在char数组中,则在比较时使用char。因此,您的if语句应该是:

//                vvvvvvv   
if( binaryArray[i] == '1' )
{
    c1++;
    cout << c1;
}
//                     vvvvvvv
else if( binaryArray[i] == '0' )
{
    c0++;
    cout << rand()%c1+1;  
}

第三,更改阵列的大小:

char binaryArray [0];

此处的必须不是0。把它改成更普通的东西。例如,像512一样,如果您认为这将足够大。