2015-04-06 377 views
0

几个星期前我刚刚开始学习C++,所以我远离专家。我有一个小型项目在几个小时内到期,我遇到了一个问题。我尝试在while循环中嵌套两个if语句,但它似乎只运行第一个并完全忽略第二个。代码如下:在While循环中嵌套if语句?

while (x <= rows * columns) { 
    cout << "*"; 
    x++; 
    if (x % intervals == 0) { 
     cout << "?"; 
     x++; 
    } 
    if (x % columns == 0) { 
     cout << "\n"; 
    } 
} 
cout <<"\nDONE!!!"; 

它不运行第二个if语句,因此我无法获得任何换行符(行)。

+3

它_does_“运行第二条语句”。 C++不会随机地跳过语句。检查你的逻辑。特别是'x ++'....在纸上写出你的算法,并通过迭代迭代迭代。 – 2015-04-06 02:23:52

+0

这里x ++是犯罪嫌疑人。该程序肯定执行if语句。这可能是条件不满足 – ucsunil 2015-04-06 02:25:56

+1

's/likely/certain /' – 2015-04-06 02:29:17

回答

0

如何做到这一点: 我只是分解了x++行。

while (x <= rows * columns) { 
    cout << "*"; 
    if (x % intervals == 0) { 
     cout << "?"; 

    } 
    if (x % columns == 0) { 
     cout << "\n"; 
    } 
    x++; 
} 
cout <<"\nDONE!!!"; 
0

如果列是多个时间间隔,则第二个语句将永远不会评估为true。

1

没有理由在while循环中不能有两个或多个if语句。

没有上下文很难说出了什么问题。但是,由于您在其中一个IF语句中运行x ++,因此您可能会导致循环在您触发“列”条件之前退出,因为您可能会跳过可由您整除的“X”值列(在X%列说明)

请提供一些背景

0

找到了我的问题。它跳过它的原因是因为我运行的试验是奇数,并且x初始化为1.因此,第一个if语句中的第二个x ++使x跳过该奇数。因此,x%列从未产生0.我修正了它。无论如何,谢谢你们。