このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1335517816/144
#  [1] 授業単元:プログラム設計応用 
#  [2] 問題文:入力した点数の合計(gokei)を表示 
#  人数は3、点数は80、70、60と入力し、最終的に「3名の合計点は210です。」と 
#  表示させるために、【___】に当てはまる式を答えよ 
#   
#  #include <stdio.h> 
#  main() 
#  { 
#   int n, ten, i, 【______】; 
#   printf("人数を入力:"); 
#   scanf("%d",&n); 
#   for(i=1;i<=n;i++){ 
#    printf("点数を入力:"); 
#    scanf("%d",&ten); 
#    if(ten>=80) 
#     printf("点数は %d 点です。合格です。\n",ten); 
#    else 
#     printf("点数は %d 点です。不合格です。\n",ten); 
#    【______】 
#   } 
#   【______】; 
#  } 
#    
#  

'入力した点数の合計を表示。人数は3、点数は80、70、60と入力し、最終的に「3名の合計点は210です。」と表示させる' :-
        入力した点数の合計(_人数,_入力した点数の合計),
        表示(_人数,_入力した点数の合計).

入力した点数の合計(_人数,_入力した点数の合計) :-
        人数は(_人数),
        点数は(_人数,_点数ならび),
        点数の合計(_点数ならび,_入力した点数の合計).

人数は(_人数) :-
        write('入力する人数は : '),
        get_line(Line),
        入力する人数診断(Line,_人数),!.
人数は(_人数) :-
        人数は(_人数).

入力する人数診断(Line,_人数) :-
        atom_to_term(Line,_人数,_),
        integer(_人数),
        _人数 > 0,!.
入力する人数診断(Line,_人数) :-
        writef('入力された %t からは適切な人数が得られません。再入力をお願いします。\n',[Line]),
        fail.

点数は(_人数,_点数ならび) :-
        length(_点数ならび,_人数),
        findall(_点数,(
                    append(L0,[_|_],_点数ならび),
                    点数入力([_|L0],_点数)),
                _点数ならび).

点数入力(Ln,_点数) :-
        length(Ln,N),
        writef('%t人目の点数 : ',[N]),
        get_line(Line),
        点数入力診断(Line,_点数),!.
点数入力(Ln,_点数) :-
        点数入力(Ln,_点数).

点数入力診断(Line,_点数) :-
        atom_to_term(Line,_点数,_),
        integer(_点数),
        _点数 >= 0,!.
点数入力診断(Line,_点数) :-
        writef('入力した %t からは点数が得られません。再入力をお願いします。\n',[Line]),
        fail.

点数の合計([],0).
点数の合計([_点数|R],_点数の合計) :-
        点数の合計(R,_点数の合計の一),
        _点数の合計 is _点数の合計の一 + _点数.

表示(_人数,_入力した点数の合計) :-
        writef('%t名の合計点は%tです。\n',[_人数,_入力した点数の合計]).