2011-11-28 140 views
1
#include <iostream> 
#include <windows.h> 
using namespace std; 


int go_to(int x, int y) 
{ 
    COORD c; 
    c.X = x - 1; 
    c.Y = y - 1; 

    return SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c); 
} 

void main(){ 
    int a=1; 

    while(a<10){ 
    a++; 
    cout<<"work"<<endl; 
    go_to(3,6); 
    cout<<"work"<<endl; 
    } 
} 

我不明白爲什麼這個循環只工作一次,也許你知道哪裏是問題? 我遇到的問題是Cord,但不知道類似的方法來使用CORD。爲什麼我的循環只執行一次?

+2

你到底想幹什麼?你使用完全相同的參數調用9次'go_to',所以它總是會進入相同的位置。 –

+1

好吧,這只是一個例子,但爲什麼循環只能工作1次? – Wizard

+1

你如何確定它只被調用一次? – GManNickG

回答

6

變量a僅由a++;行修改,該行將其值增加1,並且不傳遞到go_to(x,y),因此它不受該函數影響。

您的循環肯定會運行值爲a = {1到9},每次調用go_to(3, 6),並且還會打印兩次。如果你不這麼想,我相信你錯了。

2

你的循環在每次迭代中都做同樣的事情,所以你根本無法分辨它運行了多少次(9次)。

2

變化

while(a<10){ 
    a++; 
    cout<<"work"<<endl; 
    go_to(3,6); 
    cout<<"work"<<endl; 
} 

while(a<10){ 
    a++; 
    cout<<"work"<<endl; 
    go_to(a,a*2); 
    cout<<"work"<<endl; 
} 

,你會看到,它的實際運行多次。

0

這些值從未改變。

while(a<10){ 
    a++; 
    cout<<"work"<<endl; 
    go_to(3,6); 
    cout<<"work"<<endl; 
    } 

取而代之的是,嘗試這樣的事情:

for(int a = 0; a < 10; a++{ 
     cout<<"work"<<endl; 
     go_to(a + 3,a + 6); 
     cout<<"work"<<endl; 
     } 

這樣你的價值將真正改變