2013-03-06 128 views
2
#include <cstdlib> 
#include <iostream> 

using namespace std; 

int main(int argc, char *argv[]) 
{ 
    int num, num2; 
    num = 33; 
    do 
    { 
     cout <<"\n" <<num-3; 

}  
    while (num >=3);  
    system("PAUSE"); 
    return EXIT_SUCCESS; 
} 

我已經編寫上面的,但是當我運行它,它輸出30,並且不消耗值3 怎樣纔可以有循環做到這一點?我知道num--會起作用,但那隻會使價值減少一個。我是新來的C++,我試圖弄清楚這些事情。C++倒計時腳本

謝謝! :)

//編輯感謝我現在與NUM = NUM​​工作 - 3,數量 - = 3的作品太

+3

使用'數量 - = 3'內的循環 – arrowd 2013-03-06 05:24:49

+1

在循環內嘗試'num = num-3'? – billz 2013-03-06 05:24:52

+0

我不知道是誰投了你的票,但我想說感謝你花時間找到你的問題和發佈代碼的最小例子。很多人不這樣做。雖然解決方案是相對簡單的,但你不應該爲此提問。 – Bingo 2013-03-06 05:49:06

回答

2

這一行:

cout <<"\n" <<num-3; 

不會改變num的值。它只是輸出num的值 - 3.要真正改變你需要另一條線的值,如:

num -= 3; 
+4

你也可以在輸出語句中做到這一點:'std :: cout <<(num - = 3);' – chris 2013-03-06 05:31:31

1

即使你的建議和減去3(或其他)的循環的每次迭代,它可能不會做很多好事。問題很簡單:您可能比輸出更快地更新變量,因此您可能很容易看到十幾個或更多的值幾乎同時出現。

爲了解決這個問題,您通常希望在迭代之間暫停一段時間,以便在打印下一個值之前(可能)可以看到一個值。基於該system("pause");,我會想你正在運行Windows,在這種情況下,代碼這樣的事情可能會根據自己的喜好了一下:

#include <cstdlib> 
#include <iostream> 
#include <windows.h> 

using namespace std; 

int main(int argc, char *argv[]) 
{ 
    int num = 33; 
    do 
    { 
     cout <<" \r" << (num-=3); 
     Sleep(100); 
    }  
    while (num >=3);  
    return EXIT_SUCCESS; 
}