みなためラボ

【C言語課題解説】1から入力値までの「7の倍数」と「1の位が7の値」の総和を求めるプログラム

文字サイズ

はじめに

どうも! みなため(@MinatameT)です。

この記事で紹介するプログラムでは、以下の考え方が大切です。

ポイント
  • 7の倍数の判断
  • 1の位が7であることの判断

これらについては、ソースコード中のコメント文で説明してあります。

問題文

30以上の整数nを、キーボードから入力させます。1からnまでの整数のうち、「7の倍数」または「1の位が7の値」の総和を求めましょう。

nの入力の繰り返しには、for文を使ってください。また、キーボードからの入力が30未満の場合には、入力をやり直すようにプログラムしましょう。

例えば、n = 30の場合は、次のように出力させてください。

sum=7+14+17+21+27+28=114

解答例

#include<stdio.h>

int main(void)
{
  int n; //入力値
  int sum; //「7の倍数」または「1の位が7の値」の総和
  int x; //ループ用変数
  int y; //1の位が7の値かどうかを調べるときに使う変数

  sum = 0; //合計値の初期値は0。
  y = 17; //yの初期値は17。

  for(n=0; n<30; ) //nの値が30未満の場合は繰り返す。
  {
    printf("nの値>");
    scanf("%d",&n); //nの値の入力
    if(n<30) //入力されたnの値が30未満なら
    {
      printf("nの値は30以上にしてください。\n");
    }
  }

  printf("sum=");
	
  for(x=1; x<=n; x=x+1) //xが1ループごとに1ずつ増えていく。
  {
    if(x==y) //xの1の位が7なら
    {
      printf("%d",x);
      printf("+");
      sum = sum + x; //合計値に現在のxを足す。
      y = y + 10; //17、27、37……と確認していくために、10を足す。
    }
    else if((x%7)==0) //xが7の倍数なら
    {
      printf("%d",x);
      printf("+");
      sum = sum + x; //合計値に現在のxを足す。
    }
  }
	
  printf("\b"); //\bで現在の最後の1文字(+)を消去する。
  printf("=%d\n",sum); //合計値を表示して、改行する。

  return(0);
}

「1の位が7かどうか」の判断は、まずは17とxを比較し、一致すれば次からは27とxを比較し、一致すれば次からは37とxを比較し……と、17に10を足していった値とxを比較するようにしています。

このプログラムでは、例えば、90を入力すると、次のような実行結果になります。

nの値>90
sum=7+14+17+21+27+28+35+37+42+47+49+56+57+63+67+70+77+84+87=885

「7の倍数」と「1の位が7の値」の総和が正しく計算されていることがわかります!

ちなみに、0などの30未満の値を入力すると、次のような実行結果になります。

nの値>0
nの値は30以上にしてください。
nの値>

このように、再入力させられます。

今回はここまでです。皆さん、お疲れさまでした。


 

みなためじゃんけん

このコーナーは、私と擬似的にじゃんけんできるコーナーです。

みなためじゃんけん、じゃんけんぽん!

私が出したのは……





チョキ

チョキでした! グーの勝利です!



この記事をSNSでシェアする

プログラミングカテゴリーの最新記事(5件)

最新記事(10件)

管理人のTwitter

内部リンク集