- 締切済み
文字コードの問題
C言語の問題で次のようなものがあるのですが、 考えてもどんなコードになるのかどうしてもわかりません。 どなたかお分かりになる方はいらっしゃいませんでしょうか? お願いいたします。 ~問題~ 2桁の16進数('41~49','50~'59')を入力すると対応する文字を表示する。 ただし%xは使用しないこと。 なお、入力に間違いはないものとする。 (ヒント:入力は一つの数値か、二つの文字か?) 実行結果 2桁の16進数('41~49','50~'59')を入力してください:53 文字コード「53」の文字は「S」です。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- arukamun
- ベストアンサー率35% (842/2394)
#include <stdio.h> 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 <stdio.h> 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'); } でいかがでしょうか。
お礼
あの後なんとか自己解決してすっかり忘れてしまい御礼が遅くなり申し訳ありませんでした。 問題としては配列が使えない条件だったので、arukamunさんの回答ではNGだったのですが、違うやり方もあるのだと知れてよかったです。 どうもありがとうございました。