質問: 文字コードの問題 c言語の問題で次のようなものがあるのですが、 考えてもどんなコードになるのかどうしてもわかりません。 どなたかお分かりになる方はいらっしゃいませんでしょうか? お願いいたします。 ~問題~ 2桁の16進数('41~49','50~'59')を入力すると対応する文字を表示する。 ただし%xは使用しないこと。 なお、入力に間違いはないものとする。 (ヒント:入力は一つの数値か、二つの文字か?) 実行結果 2桁の16進数('41~49','50~'59')を入力してください:53 文字コード「53」の文字は「s」です。
回答: #include main() { char str[3] ; printf("2桁の16進数('41~49','50~'59')を入力してください:"); gets(str); printf("文字コード「%s」の文字は「%c」です。",str,(str[0]-'0')*16+str[1]-'0'); } でいかがでしょうか? エラー判定とかは一切していません。 エラー判定するのであれば、 #include main() { char str[3] ; do { str[0] = str[1] = str[2] = '\0' ; printf("2桁の16進数('41~49','50~'59')を入力してください:"); gets(str); } while ( !( str[0] == '4' && str[1] >= '1' && str[1] <= '9' && str[2] == '\0' ) && !( str[0] == '5' && str[1] >= '0' && str[1] <= '9' && str[2] == '\0' ) ) ; printf("文字コード「%s」の文字は「%c」です。",str,(str[0]-'0')*16+str[1]-'0'); } でいかがでしょうか。