第7回演習問題


問1(基礎) :int, float, double型の変数a, b, cを宣言し,それぞれに,1, 1.2, 1.23を代入せよ.また変数a, b, cへのポインタ変数pa, pb, pcを宣言し,それらを使ってa, b,cの値を表示せよ.

問2(基礎):次の順に条件を満たすプログラムを書け.
(1)char,int,float,double型の変数,ポインタを宣言し,それぞれの変数のアドレスをポインタにセットする.
(2)その後,現在のポインタの値を表示する.
(3)次にそのポインタをインクリメントし,各々のポインタがどう変化するかを表示する.
(4)最後にインクリメントしたポインタをデクリメントし,int,floatの変数の値にそれぞれ1を代入し,ポインタとインクリメント演算子を用いて変数の値を増加させて表示せよ.

問3(応用):10個の要素を持つ配列xを宣言し,各要素に初期値として,0から9までの値を順に代入せよ.次に,その配列の各要素をポインタ変数を使って読み出し表示せよ.

問4(応用):文字列srcを渡すとsrcを逆向きに並べた文字列destを作成する関数,
void reverse_string(char src[], char dest[])を作成せよ.main関数ではユーザから
文字列を読み込み,reverse_stringによって逆向き文字列を得て,それを表示すること.

問5(応用):2個のint型変数の値を入れ替える関数 void swap(int *x, int *y) を作成せよ.
main関数は次の処理をすること.
main(){
2個の入力値を受け付ける.
それぞれの値を表示する.
swap()関数を呼び出す.
2個の値を再び表示する.
}

問6(応用):上記の関数swapを用いて,3つのint型変数の値を小さい順に並び替える関数
void sort(int *x, int *y, int *z){}
を作成せよ.例えば,a, b, cがそれぞれ5, 3, 7のときにsort(&a, &b, &c)
と呼び出した後は,aには3,bには5,cには7が格納されていなければならない.

問7(応用):上記の関数sortを用いて,4つのint型変数の値を小さい順に並び替える関数
void sort2(int *w, int *x, int *y, int *z){}
を作成せよ.例えば,a, b, c, dがそれぞれ5, 3, 7, 2のときにsort2(&a, &b, &c, &d) と呼び出した後は,aには2,bには3,cには5,dには7が格納されていなければならない.

問8(発展):ランダムに並べ替えられた{0,1,2,3,4}の5つの数字から0が何番目にあるかを当てるゲームを作成せよ.ランダムに並べ替えるのにはrand()とtime()を利用すれば良い.
例えば30124というふうにプログラムで適当に並べ替えられ,ユーザは0が左から1〜5番目のどこにあるかを当てる.この時,ユーザが3と入力すると,実際には2番目なのでlowと出力するようにし(高ければhighを),当たるか,3回入力が終わるとゲームが終了するようにすること.

問9(発展):第6回で,52枚のトランプをシャッフルし,5枚ずつユーザに配布し,さらに任意のカードを交換するプログラムした.それを用いて,ユーザに配布されたトランプが表示される毎にPokerの役になっていればそれを表示するプログラムを作成せよ.
ポーカーの役はワンペア,ツーペア,スリーカード,ストレート,フラッシュ,フルハウス,フォーカード,ストレートフラッシュ,ロイヤルストレートフラッシュで,後になるほど強くなっており,強いものを優先して表示するものとする.

出力例:
  ハート  スペード    ハート    クラブ    ダイヤ
    K        10          6         7         K
役:ワンペア
Trade(1~5)?, End(9)?:2,4      ←ユーザ入力

  ハート   クラブ     ハート     ハート    ダイヤ
    K        K          6          3         K
役:スリーカード
Trade(1~5)?, End(9)?:

備考:ストレートについて
ストレートになるシークエンスとして、AとKはつながります。(AKQJT)Aと2もつながります。(5432A)しかし、KとAと2が同時につながることはありません。すなわち、KA234、QKA23、JQKA2という組み合わせはストレートとはみなされません。)

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