2017-06-16 73 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

这与问题没有任何关系 - 去阅读其他答案,看看它们为什么是正确的,这不是 –

相关问题