forやifを使った問題

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
krgpsrrr

forやifを使った問題

#1

投稿記事 by krgpsrrr » 6年前

問題
整数a.bを入力すると100以下のaとbの公倍数を全て書き出し、その個数を教えてくれるプログラムを作成しなさい。
ただし、公倍数がひとつもない場合は"ありません"と表示させること。


整数を2つ入力せよ・・・>8 12
100以下の8と12の公倍数は
24 48 72 96
の4個です。

この問題なのですが、公倍数がない場合は出力できたのですが、ある場合にエラーがでてしまい、きっかけも掴めないためどうしようもないです。
先日forについて学んだばかりなので理解できてないのが要因だと思われます。教えていただきたいです。

かずま

Re: forやifを使った問題

#2

投稿記事 by かずま » 6年前

krgpsrrr さんが書きました:この問題なのですが、公倍数がない場合は出力できたのですが、ある場合にエラーがでてしまい、きっかけも掴めないためどうしようもないです。
きっかけを掴むために、公倍数がない場合に出力できた
というプログラムを、フォーラムルールにあるように
code タグを使って貼り付けてください。

krgpsrrrr

Re: forやifを使った問題

#3

投稿記事 by krgpsrrrr » 6年前

コード:

#include<stdio.h>
main()
{
 int a, b,i, sum = 0;
 printf("整数a,bを入力せよ・・・>");
 scanf_s("%d%d", &a, &b);
 printf("100以下の%dと%dの公倍数は\n", a, b);
 for (i = a; i <= 100; i++)
 {
  if (i%a == 0 && i%b == 0)
  {
   sum++;
   printf("%d\t", i);
  }
 }
 if (0 < sum )
 {
  printf("%d\t\nの%d個です。\n", i, sum);
 }
 else
  {
   printf("ありません\n", a, b);
  }

}


krgpsrrr

Re: forやifを使った問題

#4

投稿記事 by krgpsrrr » 6年前

初めてなため、ルールがよくわかってませんでした。あと一歩で完成できそうですがまだダメな部分がありそうです。よろしくお願いします。

かずま

Re: forやifを使った問題

#5

投稿記事 by かずま » 6年前

そのプログラムを実行すると、実行結果は

コード:

整数a,bを入力せよ・・・>8 12
100以下の8と12の公倍数は
24	48	72	96	101	
の4個です。
余計な 101 が出ているだけですから、
 printf("%d\t\nの%d個です。\n", i, sum);

 printf("\nの%d個です。\n", sum);
に変えるだけで完成だと思うんですが。

かずま

Re: forやifを使った問題

#6

投稿記事 by かずま » 6年前

些細なことですが、printf("ありません\n", a, b); は、
「, a, b」が余計ですね。

さらに、for文で a の倍数だけを候補にすると、
b で割り切れるかどうかだけで公倍数の判定ができます。

コード:

#include <stdio.h>

int main(void)
{
    int a, b, sum = 0;
    printf("整数 a, b を入力せよ・・・>");
    if (scanf("%d%d", &a, &b) != 2) return 1;
    printf("100以下の %d と %d の公倍数は\n", a, b);
    for (int i = a; i <= 100; i += a)
        if (i % b == 0) {
            sum++;
            printf("%d\t", i);
        }

    if (sum > 0)
        printf("\nの %d個です。\n", sum);
    else
        printf("ありません\n");
    return 0;
}

返信

“C言語何でも質問掲示板” へ戻る