プログラミングII 実習 (2025) 課題

[E3] 第4章 制御の流れ(2)


(E3_1) 大学生協アプリに5000円チャージした.その翌日から昼食を毎日とるが,いつもランチセット390円を購入する.日々のカード残額を表示するプログラムを while 文を用いて作成せよ.ただし,残額がランチセットの値段を下回った時点で表示を終了する.
本問では break 文(4.3.5項)は使用せず,while 文の条件式で繰り返しの継続/終了を判定すること.

(E3_2) 大学生協アプリに5000円チャージした.その翌日から昼食を毎日とるが,いつもランチセット390円を購入する.日々のカード残額を表示するプログラムを while 文を用いて作成せよ.ただし,残額がランチセットの値段を下回った時点で表示を終了する.
本問では while 文の無限ループ(4.3.6項)を用い,if 文と break 文(4.3.5項)により繰り返しを終了すること.

(E3_3) for 文の 2 重ループを使って,掛け算の九九の表を下記のように表示するプログラムを作成せよ.なお,printf の書式は %3d を使用せよ.
(余裕があれば,%d,%-3d,%03d, %4d についても場合も試し,違いを確認せよ.これらの書式は右詰め,左詰め,ゼロ埋めなどを表す).

(E3_4) 0 ≤ i < j < 7 を満たす整数の組 (i, j) を以下の順番で表示するプログラムを for 文の 2 重ループを用いて作成したい.本問題では if 文を使用せず,for 文の初期値と継続条件を適切に与えて解答すること.

 ( 0, 1 )
 ( 0, 2 )
 ( 0, 3 )
 ( 0, 4 )
 ( 0, 5 )
 ( 0, 6 )
 ( 1, 2 )
 ( 1, 3 )
 ( 1, 4 )
 ( 1, 5 )
 ( 1, 6 )
 ( 2, 3 )
 ( 2, 4 )
 ( 2, 5 )
 ( 2, 6 )
 ( 3, 4 )
 ( 3, 5 )
 ( 3, 6 )
 ( 4, 5 )
 ( 4, 6 )
 ( 5, 6 )

次に,以下の表示をするプログラムを追加せよ.
 ( 0, 1 ) ( 0, 2 ) ( 0, 3 ) ( 0, 4 ) ( 0, 5 ) ( 0, 6 )
 ( 1, 2 ) ( 1, 3 ) ( 1, 4 ) ( 1, 5 ) ( 1, 6 )
 ( 2, 3 ) ( 2, 4 ) ( 2, 5 ) ( 2, 6 )
 ( 3, 4 ) ( 3, 5 ) ( 3, 6 )
 ( 4, 5 ) ( 4, 6 )
 ( 5, 6 )
さらに,以下の表示をするプログラムを追加せよ.
 ( 0, 6 ) ( 0, 5 ) ( 0, 4 ) ( 0, 3 ) ( 0, 2 ) ( 0, 1 )
 ( 1, 5 ) ( 1, 4 ) ( 1, 3 ) ( 1, 2 ) ( 1, 1 )
 ( 2, 4 ) ( 2, 3 ) ( 2, 2 ) ( 2, 1 )
 ( 3, 3 ) ( 3, 2 ) ( 3, 1 )
 ( 4, 2 ) ( 4, 1 )
 ( 5, 1 )
《余力があれば,他の規則的な数値組の表示を考えて,プログラムを追加するとよい(形状は上三角形でなくてもよい)》

(E3_5)以下のプログラムを作成せよ.

さらに,これを以下のように変更せよ.
 (表示例) a = 50 のとき
      t    for  公式
    -------------------
      1     1     1
      2     3     3
      3     6     6
      4    10    10
      5    15    15
      6    21    21
      7    28    28
      8    36    36
      9    45    45
   

(E3_6) 下の例題プログラムを入力, コンパイル, 実行し, どのような結果が得られるか観察せよ.表示内容の数字の増え方に注意すること.
次に, このプログラムを書き換えて,1 ≤ x ≤ y ≤ z < 5 を満たす ( x, y, z ) のみ表示するプログラムを作成せよ.本問では if 文を使用せず,for 文の初期値と継続条件を適切に与えることで解答すること.

(E3_7) キーボードから正の整数 n を受け取り, a2+b2=c2, a<b を満たすような n 以下の正の整数の組 (a, b, c) がいくつあるかを求めて表示するプログラムを作成せよ. 単に個数のみならず,(a, b, c) も表示することで結果を確認することを勧めます.

(E3_8*) キーボードからまず2種類の文字 s と t を,次に正の整数 n と m を受け取ると,下のサンプルのように,2 種類の文字を n x m 個(縦に n 個,横に m 個)並べたパターンを表示するプログラムを作成せよ.文字の並べ方は下のサンプルにこだわらないので,自由に面白いものを作成せよ.でき上がったプログラムを一つだけ提出せよ.入力部分については以下のコードを利用してよい.正常に動作すればもちろんこれ以外の書き方でもよい.

	printf("s, t = ");
	scanf("%c %c", &s, &t);
	printf("n, m = ");
	scanf("%d %d", &n, &m);

(表示例)

s='o', t='.', n=4, m=5 のとき

            o....
            oo...
            ooo..
            oooo.

    s='^', t='v', n=6, m=13 のとき

            ^v^v^v^v^v^v^
            v^v^v^v^v^v^v
            ^v^v^v^v^v^v^
            v^v^v^v^v^v^v
            ^v^v^v^v^v^v^
            v^v^v^v^v^v^v

    s='+', t='*', n=7, m=7 のとき

            +++++++
            +++*+++
            ++***++
            +*****+
            ++***++
            +++*+++
            +++++++

(E3_A) 「キックオフ C言語」の p. 104,6.5節 練習問題 1([3重ループ or 1重ループ+桁分解],153 は特別な数…)を解答せよ.