2011-09-19 78 views
-2

我有這樣的:如何將while循環變成do while循環?

#include <iostream> 

using namespace std; 

int main() 
{ 
    char ch, max = 0; 
    int n = 0; 
    cout << "Enter number of characters! :"; 
    cin >> n; 
    cout << "Enter the number"; 
    while (n>0) 
    { 
     cin >> ch; 
     if(max<ch) 
      max = ch; 
     n=n-1; 

    } 
    cout << "max is : " << max; 
} 

我試圖把它變成一個do while循環 - 這是我有:

int main() 
{ 
char ch, max = 0; 
int n = 0; 
cout << "enter character"; 
cin >> n; 
cout << "enter two"; 
cin >> ch; 
do 
     (max<ch); 

while 
(max = ch); 
(n>0); 
n= n - 1; 

     cout << "max is : " << max; 
} 

我該如何解決這個問題?

+6

是您的實際代碼還是發佈時發生錯誤。 –

+2

你想做什麼? – cpx

+2

爲什麼你想把它變成一個'do {...} while(condition)'循環?如果用戶爲「字符數」輸入零,該怎麼辦? –

回答

2
while (test) block; 

用於提取後相當於

if (test) { 
    do block 
    while (test); 
} 

所以你的while循環將變成

if (n>0) { 
    do { 
    cin >> ch; 
    if(max<ch) 
     max = ch; 
    n=n-1; 
    } while (n>0); 
} 
4

第一個程序需要檢查EOF或其他故障:

#include <iostream> 
using namespace std; 

int main() 
{ 
    char ch, max = 0; 
    int n = 0; 
    cout << "Enter number of characters: "; 
    cin >> n; 
    cout << "Enter the number: "; 
    while (n > 0 && cin) 
    { 
     if (cin >> ch && max < ch) 
      max = ch; 
     n = n - 1; 
    } 
    cout << "max is : " << max << endl; 
    return 0; 
} 

我注意到,在代碼中沒有任何東西強制提示'它是一個數字'。此外,大多數使用戶對計算機可以計數的東西進行計數的接口都被誤導了。

有一個在轉換使用do ... while循環的代碼非常少點,但如果必須的話,那最終看起來像:

#include <iostream> 
using namespace std; 

int main() 
{ 
    char ch, max = 0; 
    int n = 0; 
    cout << "Enter number of characters: "; 
    cin >> n; 
    cout << "Enter the number: "; 
    if (n > 0 && cin) 
    { 
     do 
     { 
      if (cin >> ch && max < ch) 
       max = ch; 
      n = n - 1; 
     } while (n > 0 && cin); 
    } 

    cout << "max is : " << max << endl; 
    return 0; 
} 

注意,出現在while循環頂部的條件現在是一個單獨的if條件,並在do ... while (...)條件中重複。僅此一點就告訴你do ... while在這裏不合適;如果有工作要做,你只想通過循環,但是一個do ... while循環強制你循環一次。