第3回演習問題


問1(基礎) int型の2個の値を引数とし,その和をlong型の値として返す関数sumを作成せよ.また,sumを使い,入力された2個の整数値の和を表示するプログラムを作成せよ.

問2(基礎)int型の2個の整数値 moto,beki(bekiは0以上)を入力すると,(moto)^(beki)(motoのbeki乗)を計算するプログラムをかけ.
ただし,int math_beki(int moto, int beki)の関数を作成すること

出力例:
moto = 5
beki = 3
5^3 = 125


問3(応用):N個の正の整数値を入力とし,最大値を出力せよ.(ただし,同じ値が2個以上入力されるケースは考えなくとも良い)

出力例:
与える整数の数は? 3(<-ユーザ入力)
1つ目 23(<-ユーザ入力)
2つ目 43(<-ユーザ入力)
3つ目 21(<-ユーザ入力)
最大値は 43


問4(応用):問3に加えて,二番目に大きい数字を出力するプログラムをかけ.(つまり,最大値と二番目に大きい数字を両方とも出力するプログラム)

問5(応用):以下のようなマップをクリアするアドベンチャゲームを作成せよ.

プレイヤはスタート地点から始め,右(0)か左(1)を0と1の数字を入力することで進んでいき,ゴールに到達すると終了する.また,分岐した後,どこに移動したかを表示する部分(例えば,”スタートへ戻る”等)を別の関数として作成せよ.

             ゴール   ゲームオーバ(落とし穴)
                |___________|
ゲームオーバ(毒矢)  |         スタートへ戻る
         |            |________________|
         |____________________|
                     |
                 スタート


問6(応用): 1000以下の正の整数のうち全桁の合計値が5の倍数であるものすべてを出力せよ.
例)
349の場合 3+4+9=16 となり,5の倍数ではないので表示しない.
294の場合 2+9+4=15 となり,5の倍数であるので表示する.
ヒント: 整数の全桁の合計値を計算する関数を作成する.

問7(応用) ユーザが入力した5桁の正の整数値(10000〜99999の範囲)の各桁を,5枚のトランプとみなし,ポーカーで言うところのワンペア以上の役ができているかどうかを判定するプログラム.つまり,5桁の数字中に同じ数値が2個以上含まれているかどうかを判定せよ.
ヒント:与えられた5桁の数字xの中に数値yが現れた回数zを調べて,zを戻り値として返す関数int count(int x, int y)を作るとよい.

問8(応用): 前問を拡張し,ワンペア(2つ同じものがある),スリーカード(3つ同じものがある),フォーカード(4つ同じものがある),ファイブカード(5つ同じものがある)を区別して判定するプログラムにせよ.

問9(発展): 前問をさらに拡張し,フルハウス(11333のように,同じものが2つと3つある)とツーペア(11335のように,同じもの2つが2組ある)も区別して判定するようにせよ.

問10(発展): 3つの整数,a, b, c を与えると,Y = aX^2 + bX + c (-10 <= X <= 10)のグラフをプロットするプログラムを作成せよ.

masa-n@cs.kobe-u.ac.jp
(C) Masahide Nakamura, Kobe University