このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1339338438/720
#  [1] 授業単元: c言語  
#  [2] 問題文(含コード&リンク):   
#  ASCIIコード表示関数 
#  Char型のASCII文字を第1引数として与え,第2引数に十進整数値の10または16を与えると、第1引数に対応する文字コードを十進記数法または十六記数法で画面に表示する関数を作成せよ。ただし、この関数内で用いてよいライブラリ関数はputs()のみとする。 
#  例えば、printascii(‘j’,16)と実引数を指定して呼び出した場合、画面に4aを表示する。ASCII文字コードすべての範囲(0~127)に対応するように設計すること。 
#  このような関数をprintascii()という名前で作成した上で、キーボードから任意の1文字を入力し、対応する文字コードの十進および十六進表現をprintascii()によって出力するプログラムを作成せよ。 
#  なおprintascii()関数以外の場所では、入力すべき内容を指定したり1文字を読み込むためにputs()以外のライブラリ関数を用いてもよい。 
#  

'第1引数に対応する文字コードを十進記数法または十六進記数法で画面に表示する'(_文字,_10進数_または_16進数) :-
        'ASCII文字ならび'(_ASCII文字ならび),
        nth0(N,_ASCII文字ならび,_文字),
        '第1引数に対応する文字コードを十進記数法または十六進記数法で画面に表示する'(_10進数_または_16進数,N).

'第1引数に対応する文字コードを十進記数法または十六進記数法で画面に表示する'(10,N) :-
        writef('%t',[N]),!.
'第1引数に対応する文字コードを十進記数法または十六進記数法で画面に表示する'(16,N) :-
        D_1 is N // 16,
        D_2 is N mod 16,
        十六進記数(D_1,_十六進記数_1),
        十六進記数(D_2,_十六進記数_2),
        writef('0x%t%t',[_十六進記数_1,_十六進記数_2]).

十六進記数(D,D) :-
        D < 10,
        atom_number(A,D),!.
十六進記数(D,A) :-
        Code_2 is D + 65 - 10,
        char_code(A,Code_2).