Visual Studio正在跳过if语句

Visual Studio skipping if statements?

本文关键字:if 语句 Studio Visual      更新时间:2023-10-16

当我输出某个数字时,程序会输出某个模式。我还没有包括库、int main或提示符,但这是我遇到问题的代码部分。

例如,当我输入5时,我应该得到:

111111111
122222221
123333321
123444321
123454321

相反,我得到的是:

111111111
2222222
33333
444
5

我写了第一个if语句

if (lb2 < lb1){}

在它前面插入1和2,但它似乎被跳过了。有人能告诉我为什么吗?

int lb1, lb2, lb3; 
cout << endl << "LETTER BOX:" << endl;
for (lb1 = 1; lb1 <= number; lb1++) {
    cout << "   ";
    for (lb2 = 1; lb2 = (2*number)-1 ; lb2++){
        lb3 = 1;
        if (lb2 < lb1){
            do {
                cout << lb2;
                lb3++;
            } while (lb3 < lb1);
            break;
        }
        else if (lb2 = lb1){                
            do {
                cout << lb2;
                lb3++;
            } while (lb3 <= ((2*number)-1)-(2*(lb2-1)));
            break;
        } 
        else if (lb2 > lb1){                
            do {
                cout << lb2;
                lb3++;
            } while (lb3 <= ((2*number)-1)-(2*(lb2-1)));
            break;
        } 
    }  
    cout << endl;
}
for (lb2 = 1; lb2 = (2*number)-1 ; lb2++){

条件语句使用=而不是<=它混淆了lb2 中的值

else if (lb2 = lb1){

同样,使用=而不是==可以更改lb2中的值,而不仅仅是检查它

此外,正如我从您的代码中了解到的,lb1循环控制行,而lb2循环控制行中的数字。但是,每个条件末尾的三个break语句会阻止lb2循环迭代(2*number)-1次。

另一件事是,三个do while循环不会增加lb2,这会导致行的数字超过(2*number)-1。

您的do{}while()控制一切,使for(lb2)循环和大多数if-else情况变得无用,这就是为什么它打印相同的东西,直到while循环中断。

另外,break语句会脱离循环,所以如果您知道要退出,就不要使用break。最后,在从=更改为==之后,您将不打印任何内容,因为lb2从1开始,所以1==9总是失败。将其更改为<=2*number-1就像第一个循环一样。

因此,逐步完成:对于第一行,lb1=1,lb2=1:if(lb2==lb1)case运行。if情况的while循环说:

do { cout << lb2; lb3++; } while (lb3 < 9); //lb2 is always 1
// break out of lb2 loop, now lb1 = 2

对于第2-5行:lb1=2(3,4,5….),lb2=1:如果总是选择(lb2>lb1)情况:

do { cout << lb2; lb3++ } while (lb3 < (9 - 2)); //lb2 is always 2

你应该先学习循环。http://www.codecademy.com这是一个很好的起点,但我认为他们没有c++。然而,其他语言也是一样的(Ruby、Java、Javascript)。这里有一个例子,试着照着做

 // loop 1: for row from 1 to 5
 for (lb1 = 1; lb1 <= number; lb1++) {
    cout << "   ";
    lb3 = 1;
    // loop 2: for column from 1 to 9
    for (lb2 = 1; lb2 <= (2*number)-1 ; lb2++){
        if (lb2 < lb1){
            cout << lb3++;
        }
        else if (lb2 >= lb1 && lb2 <= 2*number - lb1){                
            cout << lb3;
        } 
        else if (lb2 > number){ 
            if (lb3 > 1) { lb3--; }               
            cout << lb3;
        } 
    }  
    cout << endl;
}