2017-06-16 42 views
-1

我想編寫一個程序,從用戶需要數字(A和B),然後 ,程序會從1數到X(這是)和輸出每次迭代中的數字是否可以被y(這是b)整除。檢查X是否是由Y整除,即沒有剩餘

//while loop deciding if a is divided by b 
    for (count = 1; count <= a; count++) { 
     if (a/b == 0) { 
      printf("%d is divisible by %d\n", a, b); 
     } 
     else if (a/b != 0) { 
      printf("%d is not divisible by %d\n", a, b); 
     } 
    } 
    return 0 ; 
} 

但是當我爲輸入10和2b的輸出是

10 is not divisible by 2 

十倍

如何更改代碼,以便每次迭代被檢查?

+0

爲什麼你會期望一個不同的結果,如果你爲每次迭代使用相同的'a'和'b'值?你能弄清楚哪個變量是每次迭代中實際變化的變量嗎? – kaylum

+3

問題標題有誤導性 – kuro

+1

首先'a%b == 0'表示a被b整除。你想解決這個問題。你也可以指出循環的需要。你想一次打印同樣的信息嗎?最後'if'和'else if'條件是完全相反的。你不需要「其他」。簡單的'else'會做 – kuro

回答

3

首先 - a/b告訴a可以除以b,例如, 9/2會給你4

要知道除法是產生一個提醒,你必須使用a % b == 0。例如:9 % 2會給你18 % 2會給你0

下一頁 - 您繼續使用ab爲循環內的計算。您需要使用count而不是a。這也適用於printf

而且 - 你不需要在else部分的條件。

試着這麼做:

for (count = 1; count <= a; count++) { 
    if (count % b == 0) { 
     printf("%d is divisible by %d\n", count, b); 
    } 
    else { 
     printf("%d is not divisible by %d\n", count, b); 
    } 
} 
0

你的程序有兩個邏輯錯誤 -

  • 您正在運行一個for循環來從1a,但沒有使用循環變量count任何地方在循環內。
  • a/b == 0不能用於檢查b是否分爲a,而是使用a%b == 0%是模數運算符,當a除以b時返回餘數。
    正確的代碼 -

    for (count = 1; count <= a; count++) { 
        if (count%b == 0) { 
         printf("%d is divisible by %d\n", count, b); 
        } 
        else { 
         printf("%d is not divisible by %d\n", count, b); 
        } 
    } 
    
-1

您使用相同的值每次迭代,那麼你可以使用計數的變量和變量的最後打印值。 你可以這樣寫,

for (count = 1; count <= a; count++) 
    { 
      if (count % b == 0) 
      { 
        printf("%d is divisible by %d\n", a, b); 
        n += 1; 
      } 
    } 
    printf("count : %d\n",n); 

它會顯示計數。

+0

你的答案沒有解決不使用'count' –

+0

am使用變量'n'計數的問題。它會計數不。分裂發生的時間。 – suraj

+0

這與問題沒有任何關係 - 去閱讀其他答案,看看它們爲什麼是正確的,這不是 –

相關問題