2015-12-21 32 views
-1

我想轉換for循環到DO同時:我沒有得到我的錯在改變循環

for(i=1;i<=n;i++) 
{ 
if(n%i==0) 
    { cout<<" "<<i; 
    d++; 
    s+=i; 
    } 
i++ 
} 

我轉換成這本。但我沒有得到正確的輸出

do 
{ 
    if(n%i==0) 
    { cout<<" "<<i; 
    d++; 
    s+=i; 
    } 
    i++; 
} 
while(i>n); 

請告訴我我在哪裏wWrong。

+2

爲什麼你有兩次「i ++」? – lkanab

回答

1

看到下面的代碼與我的編輯:我得到了將1 2 5 10設爲n,任意設置爲10.

int i = 0; 
    int n = 10; 
    int d = 0; 
    int s = 0; 

for(i=1;i<=n;i++) 
{ 
if(n%i==0) 
    { 
    cout<<" "<<i; 
    d++; 
    s+=i; 
    } 
//i++; //commented this out. i already increments 
} 

cout << endl; 

    // reset variables for do while loop 
    i = 1; 
    n = 10; 
    d = 0; 
    s = 0; 

do 
{ 
    if(n%i==0) 
    { cout<<" "<<i; 
    d++; 
    s+=i; 
    } 
    i++; 
} 
while(i<=n); //changed condition 
+0

條件在do-while是不正確的。檢查出建議的編輯。 –

+1

當前代碼'while(i <= n)'將返回true直到i = 11。你的代碼while(i NinjaLlama

+1

很抱歉!!明白了! –

1

您的do while循環需要以while (i < n)而不是while (i > n)結束。

+0

瞭解我的錯誤,謝謝 –

3

第二部分的循環應該是(i <= n)。此外,您需要初始化您的變量i(在循環開始處添加i = 1)。此外,在第一個循環中i++行中缺少; - 還要注意這是不必要的,因爲您已經在for循環中增加了i。在for循環的末尾添加i++;使得i在每次迭代中增加兩次。更正後的代碼看起來是這樣的:

第一循環(對於):

for(i=1;i<=n;i++) 
{ 
    if(n%i==0) 
    { 
     cout<<" "<<i; 
     d++; 
     s+=i; 
    } 
} 

第二環(DO-一會兒):

i= 1; 
do 
{ 
    if(n%i==0) 
    { 
     cout<<" "<<i; 
     d++; 
     s+=i; 
    } 
    i++; 
} 
while(i<=n); 
+0

好吧得到它謝謝 –

+0

我已經糾正了你說的,但它仍然不給我的輸出種類我期望我= 1; do '{ if(n%i == 0) {cout <<「」<< i; d ++; s + = i; } i ++; } while(i

+0

您是否意味着每次interation增加一次或兩次? –

1

誤差basicallly在for循環您已聲明我= 1和在做 - 雖然你還沒有宣佈也是主要的錯誤是你做錯了條件檢查做,而它應該是(i<n)

相關問題