プログラミングII 実習 (2025) 課題
[E3] 第4章 制御の流れ(2)
(E3_1) 大学生協アプリに5000円チャージした.その翌日から昼食を毎日とるが,いつもランチセット390円を購入する.日々のカード残額を表示するプログラムを while 文を用いて作成せよ.ただし,残額がランチセットの値段を下回った時点で表示を終了する.
本問では break 文(4.3.5項)は使用せず,while 文の条件式で繰り返しの継続/終了を判定すること.
次の結果が得られることを確認せよ.
0日目残額 5000円 1日目残額 4610円 2日目残額 4220円 3日目残額 3830円 4日目残額 3440円 5日目残額 3050円 6日目残額 2660円 7日目残額 2270円 8日目残額 1880円 9日目残額 1490円 10日目残額 1100円 11日目残額 710円 12日目残額 320円
(E3_2) 大学生協アプリに5000円チャージした.その翌日から昼食を毎日とるが,いつもランチセット390円を購入する.日々のカード残額を表示するプログラムを while 文を用いて作成せよ.ただし,残額がランチセットの値段を下回った時点で表示を終了する.
本問では while 文の無限ループ(4.3.6項)を用い,if 文と break 文(4.3.5項)により繰り返しを終了すること.
(E3_3)
for 文の 2 重ループを使って,掛け算の九九の表を下記のように表示するプログラムを作成せよ.なお,printf の書式は %3d を使用せよ.
(余裕があれば,%d,%-3d,%03d, %4d についても場合も試し,違いを確認せよ.これらの書式は右詰め,左詰め,ゼロ埋めなどを表す).
1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81
(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 文の初期値と継続条件を適切に与えることで解答すること.
#include <stdio.h> int main( void ) { int x, y, z; for ( x = 1; x < 5; x++ ) { for ( y = 1; y < 5; y++ ) { for ( z = 1; z < 5; z++ ) { printf("( %d, %d, %d ) \n", x, y, z ); } } } return 0; } |
(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 のとき +++++++ +++*+++ ++***++ +*****+ ++***++ +++*+++ +++++++