問 9(提出プログラム名:ex0309a.c)
※上級クラスは必須(中級クラスはできる人だけでよい)
(いずれも加点対象)
この問題は while 文または for 文による繰り返し構造を使った練習問題になっています.
なお,配列を使ってはいけません.
2 つの整数 x, n を読み込み,整数 x を左へ n 桁だけローテーション(以下の説明を参照)させて表示させるプログラムを作りなさい.ただし,提出するファイル名は ex0309a.c とすること.
なお,ここでは整数 x を常に 8 桁で表示させる(上位桁は 0 で埋める)こととし,x そのものは 0 以上で 108 未満の値(つまり 8 桁で表示できる値)であると仮定してよい.
「整数 x を左へ 1 桁だけローテーションさせる」とは,各桁の値をすべて左へずらし,はみ出した 1 桁を最下位桁へ移動させることをいう.
例えば,x = 1234567 であった場合,これを 8 桁で表示させると
01234567
となり,これを左へ 1 桁だけローテーションさせると
12345670
となる.
「n 桁のローテーション」とはこれを n 回連続で行うことを意味する.
ただし,n は 0 以上の整数と仮定してよい.
【ヒント】
x を 10000000 (=107)で割った商と余りに注目すると最上位桁の値とそれ以下の部分の値を得ることができます.
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
x と n を入力してください:1234567 1 12345670⏎
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
x と n を入力してください:1234567 3 34567012⏎
- 【プログラムの実行結果】(その3)※赤字は実行時にキーボードから入力する内容
x と n を入力してください:90216 130 09021600⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 上の実行例と出力が違っていることを見落としている.
■ 出力させる桁数が間違っていたり,上位桁を 0 で埋めていなかったりする.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
問 4 ~問 9 は 4/30(火)12:00 までに提出を済ませてください.※23:59 ではないので注意!
(ex0304a.c ~ ex0309a.c を Moodle から提出してください.)
くれぐれも各問題で記載されている注意事項や「過去にあったミス」を見落とさないようにしてください.
なお,提出後に間違いに気付いた場合,〆切前であれば差し替え(上書き)は可能です.
← [ 問 7 (ex0307a.c) ]
← [ 問 8 (ex0308a.c) ]