2016-08-27 54 views
1
int main(){ 

    char s[10]; 
    int t,n,i,a,w; 
    scanf("%d",&t); 
    while(t--) 
    { 
     w=0; 
     scanf("%d%s",&n,s); 
     for(i=0;i<n;i++) 
     { 
      scanf("%d",&a); 
      if(a%2==0) 
      w++; 
     } 
     if(n==1 && w==1 && strcmp(s,"Dee") == 0) 
     printf("Dee\n"); 
     else 
     printf("Dum\n"); 
    } 
    return 0;} 

while(t--)? 這是while(t=t-1)? 對於任何給定的整數t,這是不正確的?這對於while循環在C中意味着什麼?

+1

爲't'不爲0 – tkausl

+2

在每個循環執行它,只要真實的,'''噸'''會減1,並且循環將運行到t不是0. –

+0

@cLMaine - 請參閱http://stackoverflow.com/a/22362448/4386427 – 4386427

回答

4
while (t--) { 
    ... 
} 

手段評估是否t是真的還是假的,然後再遞減t之後。所以如果你爲t輸入一個1的值,那麼上面的循環實際上會迭代一次,然後終止。

如果,另一方面,你有以下循環:

while (--t) { 
    ... 
} 

如果輸入1t則循環根本不會執行一次,因爲它是由評估前t將變爲零循環。

2

t=t-1--t都是相同的。 --t只是一個簡短的符號。

while()退出時,如果任一它是false或大於0其他0。任何數目(可以是正或負)在迴路總是爲真後每次循環執行/迭代t值得到由1個值遞減。它一直持續到t的值變爲0並退出循環。

t--被稱爲後減量。它首先檢查並遞減值。

--t被稱爲預先減量。它首先遞減值然後檢查。

+0

謝謝,需要多長時間才能成爲一個好的程序員? 我剛剛完成了基礎知識。包括指針,數學函數等... –

+0

@cLMaine成爲一名優秀的程序員需要大量的實踐和強大的基礎知識。 –

2

while (t--)差不多相當於for(t = x; t>0; t--),除了案件t<0。當,t<0for循環不執行,但while循環執行無限時間並且代碼崩潰。

這裏,x是在運行while循環之前初始化t的值。

0

在while循環而(x)的{} ----,如果X> = 1,然後循環將執行,但是當X變得< = 0,環路將被終止。

所以,在這個問題上,我們可以說T = 2,如while條件語句值,循環將被執行但牛逼之前遞減到 。同樣,t遞減到並且循環將再運行一次。

現在,當循環嘗試運行的T值已經是0第三次,所以它會被終止