我在for回圈中使用while回圈來重復for回圈,但它只執行一次。
我做了這段代碼:
#include<iostream>
using namespace std;
int h, rep = 0;
int main() {
cout << "Please enter pyramid's height: ";
cin >> h;
cout << "Please enter Repetition Number: ";
cin >> rep;
for(int i = 0; i <= h; i ) {
while(0 < rep) {
for(int j = 0; j <= h; j ) {
if(i >= j)
cout << "x ";
else
cout << " ";
}
rep--;
}
cout << endl;
}
}
uj5u.com熱心網友回復:
while(0<rep){
--rep;
}
在這個while回圈的結尾rep是 0。這就是顯示的代碼告訴您的計算機要做的事情,所以這就是您的計算機所做的事情。您的計算機這樣做是因為計算機編程的黃金法則:“您的計算機總是完全按照您告訴它做的事情,而不是您希望它做的事情”。
黃金法則的一個推論是:“你的計算機永遠不會做任何你從未告訴計算機去做的事情”。你告訴你的計算機在到達 0時停止while回圈,所以現在是 0。在外回圈的第二次迭代中仍然是 0,所以當它到達這個回圈時,第二次仍然是 0。你從來沒有告訴你的計算機重置為回圈之前的原始值,因此您的計算機永遠不會這樣做。repreprepwhilereprepwhile
如果您希望rep每次都重置為其原始值,您需要告訴您的計算機完全這樣做。甚至在這里不使用也會更簡單rep,而是將其值復制到不同的變數,并讓while回圈使用并減少另一個變數;所以每次都會發生同樣的事情。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/530446.html
上一篇:將檔案復制到檔案夾中,然后使用檔案夾名稱的一部分重命名
下一篇:自定義的Qt儀表盤控制元件
