実際には出題されなかったものも含まれている。
出題者: 大駒、佐藤、広瀬 持ち込み: 参考書、ノート,コピー、メモ、電卓は可、パソコンは不可。 回収: 解答用紙のみ回収する、問題用紙は持ち帰ってよい。 (1)標準入力から読み込んだ携帯電話番号について,携帯電話 かPHSかを判定して結果を表示するプログラムを作成せよ。 ただし、携帯電話の番号は090-XXXX-XXXXまたは 080-XXXX-XXXX、PHS電話番号は070-XXXX-XXXXのような書式とする。 (2)標準入力から読み込んだ文字列について、アルファベット の小文字を大文字に変えて出力するプログラムを作成せよ。 (3)文字列を引数として受け取って、その中の数字の個数を返すメソッドを作れ。 例: suuji("Jan. 20, 2004 Tuesday")→6 (4)次のプログラムを実行したときの出力を示せ。 s=[10,96,50,21,-15,86,-20] s.sort{|x,y|(y<=>x)}.each do |number| printf "%s\n",number end (5)次は何をするプログラムであるか、簡単に文章で記せ。 while line=gets line.split(/[\s\,\.\-\(\)]+/).each do |word| if word=~/ed$/ printf "%s\n",word end end end (6)次のプログラムを実行すると文字列が3行出力される。出力される文字列をそ れぞれ答えよ。 1行目: ~~~~~~~~~~~~~~~~~~~~~~~ 2行目: ~~~~~~~~~~~~~~~~~~~~~~~ 3行目: ~~~~~~~~~~~~~~~~~~~~~~~ 【プログラム】 string="BM eIrbrqyq zC hOrfixs tZmfabss!" len=string.length printf "%d文字です\n", len i=1 while (i<string.length) printf "%c", string[i] i+=2 end printf "\n" i=0 while (i<string.length) ch = string[i, 1] if /[A-Z]/i =~ ch ch[0] -= 1 end printf "%c", ch[0] i+=2 end printf "\n" (7)整数が複数個入っている配列を引数として受け取り、その平均値を 返すメソッド avg() を作成せよ。 (8)以下のように、「カタカナ苗字」、「カタカナ名前」、「漢字苗字」、「漢 字名前」、「電話番号」がカンマで区切られて1行を構成するデータがある。 コウエキ,タロウ,公益,太郎,090-9999-1234 イイモリ,ハナコ,飯森,花子,090-9999-5678 ヤマガタ,ジロウ,山形,次郎,090-9999-9999 : 〜以下同様のデータが多数続く〜 このようなデータファイルの中から特定の条件を満たす行だけを選別したい。 各設問の条件を満たすデータのみを選びたい場合に適切な正規表現を記せ。 例: 電話番号の下4桁が全部同じ人を選びたい場合 (答) /(\d)\1\1\1$/ 問: (a) 電話番号が070-で始まる人だけを選びたい場合 (b) 苗字が「アツミ」の人だけを選びたい場合 (c) 名前が「アツミ」の人だけを選びたい場合 (d) 苗字が「タカタ」または「タカダ」の人だけを選びたい場合 (e) 苗字が2文字の人だけを選びたい場合 (f) 苗字(カタカナ)の1文字目と名前(カタカナ)の1文字目が同じ 人だけを選びたい場合