このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1286978599/86
#  [1] 授業単元:C言語  
#  [2] 問題文(含コード&リンク): 
#  例の関数int strlength(char s[])を、文字数を返すだけでなく、文字列の 
#  先頭がアルファベットの小文字の場合は大文字に変更して返すように変更せよ。 
#  ヒント:以下の2行をどこかに書き加える。 
#  if ('a' <= s[0] && s[0] <= 'z') 
#        s[0] = s[0] + 'A' - 'a'; 
#  

strlength([A|R],[B|R],Length) :-
        A >= 97,A =< 122,
        B is A - 32,
        strlength(R,Length1),
        Length is Length1 + 1.
strlength(L,L,Length) :-
        \+((A >= 97,A =< 122)),
        strlength(L,Length).

strlength([],0) :- !.
strlength([_|R],N) :- strlength(R,N1),N is N1 + 1.