問 3(提出プログラム名:ex0903a.c)
このプログラム(ex0903a.c)をダウンロードし,その中の関数 print_name_mail を完成させなさい.
このプログラムでは,氏名(姓と名を空白で区切ってアルファベット小文字で書いたもの)とメールアドレスを main 関数で読み込み,それらを別の関数 print_name_mail へ渡して
すべて大文字にした姓 先頭だけを大文字にした名 <メールアドレス>⏎
という形式で出力させるものとする(ただし, は半角の空白文字である).
なお,関数 print_name_mail の仮引数は,
name1 が(変換前の)姓, name2 が(変換前の)名, mail がメールアドレスに
それぞれ対応する.
また,姓,名,メールアドレスの長さはいずれも SIZE 文字未満とする(SIZE はマクロとして定義).
この問題では関数 main の内容は一切書き換えないこと.
なお,マクロ定義部分以外で 256 やこれに関係する数字を直接書いてはいけません.
【ヒント】
姓(name1)をすべて大文字へ変換する場合,先頭文字から順番に書き換えていくことになりますが,これを実現するのに
for ( i = 0; i < SIZE; i++ ){ ....
という for 文を書こうと考える人もいるかもしれません.
しかしながら,
文字列の場合はナル文字までが有効な内容なので,配列の最後まで見ていく必要はありません.
for 文で書くとすれば
for ( i = 0; name1[i] != '\0'; i++ ){ .....
と書くのが良いです.
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
※姓は全部大文字,名の方は1文字目だけ大文字になっていることを必ず確認せよ
氏名を入力してください:aman hirohisa メールアドレスを入力してください:aman@ehime-u.ac.jp AMAN Hirohisa <aman@ehime-u.ac.jp>⏎
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
氏名を入力してください:suzuki ichiro メールアドレスを入力してください:m520987x@mails.cc.ehime-u.ac.jp SUZUKI Ichiro <m520987x@mails.cc.ehime-u.ac.jp>⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 実行の画面出力が上の例と違う(きちんと確認していない).
特に大文字・小文字の出力が間違っている.
■ main 関数を書き換えてしまっている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
以上の 3 問は明日(6/13)の 16時までに提出を済ませてください.
(ex0901a.c ~ ex0903a.c を Moodle から提出してください.)
くれぐれも各問題で記載されている注意事項や「過去にあったミス」を見落とさないようにしてください.なお,コンパイルエラーや無限ループが含まれる場合は総合評価を 0 点とします.
提出後に間違いに気付いた場合,〆切前であれば差し替え(上書き)は可能です.
← [ 問 1 (ex0901a.c) ]
← [ 問 2 (ex0902a.c) ]
次のページ以降に問 4 ~問 9 があります.
問 4 以降を明日の16時までに早期提出した場合は加点の対象とします
(一部のみを早期提出してもよいです).
※なお,明らかに間違っている(まともに動かない)プログラムを早期提出するのは絶対にやめてください.不正に加点を得ようとした行為と見なして減点とします.
次の問題へ → [ 問4 (ex0904a.c) ]