2016-10-11 2 views
-1

ここで私はすでに作られたプログラムです:乗算器3と5を印刷する方法はありますが、印刷乗数15は印刷できません。

#include <stdio.h> 

int main() 
{ 

    int i,n,t,t2; 

    printf("enter limit number: "); 
    scanf("%d", &n); 

    for (i = 1; i<=n; i++) 
    { 
     t = i * 3; 
     t2 = i * 5; 

     printf("%d, " ,t); 
     printf("%d, ",t2); 
    } 
} 

方法35の乗算器を印刷しますが、乗算器15を印刷しないように?乗数15を印刷乗数35を印刷し、なくする方法

+0

コードをインデントしてください。 –

+2

あなたは直面している問題は何ですか? –

+0

また、入力に必要な出力を表示してください。たとえば、2つの倍数を同じループに出力します。倍数が15の場合は、そのペアの1つをスキップしますか?そして、倍数が30,45などのときはどうですか? –

答えて

-1

?あなたは、このことから0として何の農産物残りは、その後ので、それは15の乗数は、これだけあればループの中で、あなたのprintf文を置くことはないだろう必要があります15で割ったときに印刷されている番号を知ることができるものだから、

このように:

if((t % 15) != 0) 
{ 
    printf("%d, " ,t); 
}  
if((t2 % 15) != 0) 
{  
    printf("%d, ",t2); 
} 

作業例のためにこれを参照してください。https://ideone.com/2k0qLW

+0

(私はあなたを落胆させた人ではありませんが、その答えはOPのコードのいくつかの問題に対処していませんが、問題に対処しています) – ikegami

1

整数剰余演算子を使用して、別で割り切れるかどうかをチェックすることができます。結果(剰余)がゼロの場合、それは均等に割り切れます。

あなたのコードは実際には限界で停止するわけではなく、番号の順序が乱れて印刷され、末尾にカンマが印刷され、終端改行が印刷されません。修正済み:

int matches = 0; 
for (i=1; i<=n; ++i) { 
    if ((i % 3) == 0 || (i % 5) == 0) { 
     if ((i % 15) != 0) { 
      if (matches++) { 
       printf(", "); 
      } 

      printf("%d", t); 
     } 
    } 
} 

if (matches) 
    printf("\n"); 
+0

それはありません。限度での停止 –

+0

制限が10の場合、50は印刷されますが48は印刷されません。制限を超えるだけでなく、いくつかの値が欠落します。 – ikegami

+0

ああ、ありがとう –

関連する問題