人に聞けない痔の悩み、これでスッキリ >>

C言語の問題で次のようなものがあるのですが、
考えてもどんなコードになるのかどうしてもわかりません。
どなたかお分かりになる方はいらっしゃいませんでしょうか?
お願いいたします。

~問題~
2桁の16進数('41~49','50~'59')を入力すると対応する文字を表示する。
ただし%xは使用しないこと。
なお、入力に間違いはないものとする。
(ヒント:入力は一つの数値か、二つの文字か?)

実行結果
2桁の16進数('41~49','50~'59')を入力してください:53
文字コード「53」の文字は「S」です。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

#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');
}

でいかがでしょうか。
    • good
    • 0
この回答へのお礼

あの後なんとか自己解決してすっかり忘れてしまい御礼が遅くなり申し訳ありませんでした。
問題としては配列が使えない条件だったので、arukamunさんの回答ではNGだったのですが、違うやり方もあるのだと知れてよかったです。
どうもありがとうございました。

お礼日時:2003/05/30 20:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング