为什么此代码片段会返回意外结果?

时间:2017-12-24 15:01:33

标签: c++ arrays loops

我目前正在我的学校学习C ++,并且正在制作一个侦探,作为我必须提交的项目的一部分。为此,我已经制作了字母网格和其他必要的东西(线索,规则等)。我在整数数组中以坐标的形式获取输入,用户在数组中输入4个值,表示初始行和列号以及最后的行和列号,对应于其中的第一个和最后一个字母表。特别的话。

执行此操作后,我现在将用户输入的数组与我已定义的具有该特定单词坐标的数组进行比较。这显示在这里:

    cout<<"Enter the coordinates of starting and final characters : row1 col1 row2 col2 "<<endl;
    for (z = 0; z < 4; z++)      //first for loop
        cin>>p[z];              //taking the input as an array 'p'

    for (b = 0; b < 4; b++)        //second for loop
    {
        if (p[b] == messi[b])
            b+=0;
    }
    if (b == 4)
        cout<<"Great!!!! You have answered the question correctly"<<"\n\n";
    else
        cout<<"You got this one wrong mate! Try again :)"<<"\n\n";

这里,messi [b]是具有与网格中的单词“MESSI”对应的坐标的数组。现在,在我看来,第二个for循环之后的'if'语句必须包含检查b = 3的条件。但是,当我这样做时,输出总是出现'else'语句所说的那样“你有这个...“为每一个输入。但是,当我强加条件来检查b = 4时,输出结果就是“if”语句对每个输入都说“Great !! ...”。

我做错了什么?我希望我能够清楚地向你解释这个问题。我正在使用CodeBlocks 16.01。

1 个答案:

答案 0 :(得分:1)

有点不清楚你在做什么,正如程序所代表的那样,b在第二次for - 循环后总是等于4,因为上一次条件为真, b < 4。因此,在增量之后,为4。

在第二个for循环中,您还有NOP代码b += 0;,它对代码完全没有任何作用。这是什么意思?