このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1308749241/293
#  【1】c言語 【2】二つの西暦で入力された年月日から、その間の日数を計算するプログラムを作成してください。  
#  ここに処理が入る というとこのプログラムをお願いします  
#  プログラムのベース  
#  int uruu(int y);  
#  int monthday(int y, int m);  
#  //----------------------------------------------------  
#  int main(){  
#  int year_a, month_a, day_a;  
#  int year_b, month_b, day_b;  
#  int days;  
#  int i;  
#  days = 0;  
#  printf("日数計算プログラム\n");  
#  printf("数え始める西暦年月日を入力してください\n");  
#  scanf("%d,%d,%d",&year_a, &month_a, &day_a);  
#  printf("数え終わる西暦年月日を入力してください\n");  
#  scanf("%d,%d,%d",&year_b, &month_b, &day_b);  
#  ここに処理が入いる  
#  printf("%d年%d月%d日から%d年%d月%d日までの日数は%d日です。\n", year_a, month_a, day_a, year_b, month_b, day_b, days);  
#  return 0; }  
#  //うるう年ならtrue(1)、そうでないならfalse(0)を返す関数  
#  int uruu(int y){  
#  int ret;  
#  ここに処理が入る  
#  return ret; }  
#  //年、月を受け取り、その月の日数を返す関数  
#  int monthday(int y, int m){  
#  int d;  
#  ここに処理が入る  
#  return d; }  
# 
# 

'二つの西暦で入力された年月日から、その間の日数を計算する' :-
        起点年月日の入力(_起点年,_起点月,_起点日),
        終点年月日の入力(_終点年,_終点月,_終点日),
        count(翌日(_起点年,_起点月,_起点日,_終点年,_終点月,_終点日,_,_,_),_日数),
        writef('日数は %t です。\n',[_日数]).

起点年月日の入力(_起点年,_起点月,_起点日) :-
        write('起点となる年を入力してください : '),
        get_integer(_起点年),
        write('起点となる月を入力してください : '),
        get_integer(_起点月),
        write('起点となる日を入力してください : '),
        get_integer(_起点日),!.

終点年月日の入力(_終点年,_終点月,_終点日) :-
        write('終点となる年を入力してください : '),
        get_integer(_終点年),
        write('終点となる月を入力してください : '),
        get_integer(_終点月),
        write('終点となる日を入力してください : '),
        get_integer(_終点日),!.

翌日(_集点年,_終点月,_終点日,_終点年,_終点月,_終点日,_翌日の年,_翌日の月,_翌日の日) :- !,fail.
翌日(_年,_月,_日,_終点年,_終点月,_終点日,_翌日の年,_翌日の月,_翌日の日) :-
        月末日の翌日(_年,_月,_日,_翌日の年,_翌日の月,_翌日の日).
翌日(_年,_月,_日,_終点年,_終点月,_終点日,_翌日の年,_翌日の月,_翌日の日) :-
        月末日ではない日の翌日(_年,_月,_日,_翌日の年,_翌日の月,_翌日の日).
翌日(_年,_月,_日,_終点年,_終点月,_終点日,_翌日の年,_翌日の月,_翌日の日) :-
        月末日の翌日(_年,_月,_日,_翌日の年_1,_翌日の月_1,_翌日の日_1),
        翌日(_翌日の年_1,_翌日の月_1,_翌日の日_1,_終点年,_終点月,_終点日,_翌日の年,_翌日の月,_翌日の日).
翌日(_年,_月,_日,_終点年,_終点月,_終点日,_翌日の年,_翌日の月,_翌日の日) :-
        月末日でないない日の翌日(_年,_月,_日,_翌日の年_1,_翌日の月_1,_翌日の日_1),
        翌日(_翌日の年_1,_翌日の月_1,_翌日の日_1,_終点年,_終点月,_終点日,_翌日の年,_翌日の月,_翌日の日).

月末日の翌日(_年,2,28,_年,2,29) :-
        うるう年(_年),!.
月末日の翌日(_年,2,28,_年,3,1) :-
        \+(うるう年(_年)),!.
月末日の翌日(_年,12,31,_年_2,1,1) :-
        _年_2 is _年 + 1,!.
月末日の翌日(_年,_月,31,_年,_月_2,1) :-
        _月_2 is _月 + 1,!.
月末日の翌日(_年,_月,30,_年,_月_2,1) :-
        member(_月,[4,6,9,11]),!.

月末日ではない日の翌日(_年,_月,_日,_年,_月,_日_2) :-
        _日_2 is _日 + 1,!.