関数を使って2
Posted: 2006年11月07日(火) 15:43
次のも教えて下さい。
西暦年、月、日を読み込み、その日が何曜日であるかを表示するプログラムを以下の手順で作成せよ。
3-1
西暦年を読み込み、その値を返す関数
int get_year(void)
を作成せよ。なお1900未満の値が入力された場合のには再入力を促し、1900以上の値が入力されるまで処理を繰り返させること。
また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。
3-2
月を読み込み、その値を返す関数
int get_month(void)
を作成せよ。なお0以下または13以上の値が入力された場合には再入力を促し、1以上12以下の値が入力されるまで処理を繰り返させること。
また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。
3-3
西暦年year を受け取り、その年が閏年ならば1をそうでなければ0を返す関数
int judge_uru(int year)
を作成せよ。また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。
なお、グレゴリオ暦では以下の規則に基づいて、閏年が設けられる。
(1)4で割り切れる年は閏年である。
(2)ただし、100で割り切れるが、400で割り切れない年は、閏年ではない。
たとえば、2004年は閏年であり、また1900年や2100年は閏年ではなく、2004年は閏年である。
3-4
西暦年yearと月monthを受け取り、year年 month月の最終日を返す関数
int get_lastday(int year,int month)
を作成せよ。たとえば、yearに2004をmonthに2を受け取ると、2004年の2月は29日までなので29を返す事になる。
なお、関数get_lastdayの中で3-3で作成したjudge_uruを呼び出して使うようにする事。また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。
3-5
日を読み込み、その値を返す関数
int get_day(int year, int month)
を作成せよ。なお、この関数は、西暦年yearと月monthを受け取り、これらの値に基づき、その月の最終日を求める。そして0以下または最終日より大きな値が入力された場合には、再入力を促し、正しい値が入力されるまで処理を繰り返す。
なお、関数get_dayの中では、3-4で作成した関数get_lastdayを呼び出して使うことにすること。(言うまでもなく、関数last_dayの中では、3-3で作成されたjudge_uruが呼び出されることになる)また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。
3-6
西暦年yearを受け取り、1900年からyear年までのトータル日数を返す関数
int get_year_offset(int year)
を作成せよ。たとえば、この関数は1902年を受け取ると、1900から1901年までのトータル日数を返す。すなわち、1900年も1901年も閏年ではないため、365+365=730を返すことになる。
なお、関数get_yesr_offsetの中で、3-3で作成した関数をjudg_uruを呼び出して使うようにすること。また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。
3-7
西暦年yearと月monthを受け取り、year年の1月からmonth月の前の月までのトータル日数を返す関数
int get_month_offset(int year,int month)
を作成せよ。たとえば、この関数は、yearに2,004を、monthに3を受け取ると、2004年の1月から2月までのトータル日数を返す。すなわち、2004年は閏年であるため、31+29=60を返すことになる。
なお、関数get_month_offsetの中で3-4で作成した関数get_lastdayを呼び出して使うようにする事。また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。
3-8
世暦年year、月month、日dayを受け取り、year年、month月、day日が何曜日であるかを表示する関数
void put_what_day(int year,int month)
を作成せよ。
なお、この関数のyearには1900年以降の年が与えられるものとする。また、1900年1月1日は月曜日であることを利用して、該当の曜日を求めることにする。
なお、関数put_what_dayの中で、3-6で作成した関数get_year_offsetと3-7で作成した関数 get_month_offsetを呼び出して使うようにする事。また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。
3-9
3-1から3-8で作成した関数を用いて、以下に示すように、西暦年、月、日、を読み込み、その日が何曜日であるかを表示するプログラムを作成せよ。
例1
西暦年・月・日を入力して下さい
西暦年:2005 return
月 :10 return
日 :15 return
<結果>
2005年10月15日は、土曜日です
例2
西暦年・月・日を入力して下さい
西暦年:1899 return
1900年以降の年を入力してください
西暦年:2005 return
月 :15 return
1~12月を入力してください
月 :10 return
日 :35 return
1~31日を入力してください
日 :15 return
<結果>
2005年10月15日は、土曜日です
一応出来たのはここまでです。
#include <stdio.h>
int get_year(void)
{
int nen;
printf("西暦年・月・日を入力して下さい\n");
printf("西暦年:");
scanf("%d",&nen);
while(nen<1900){
printf("1900年以降の年を入力してください\n");
printf("西暦年:");
scanf("%d",&nen);
}
}
int get_month(void)
{
int tuki;
printf("月:");
scanf("%d",&tuki);
while(tuki<1||tuki>12)
{
printf("1~12月を入力して下さい\n");
printf("月:");
scanf("%d",&tuki);
}
}
int main(void)
{
int a,b;
a=get_year();
b=get_month();
return 0;
}
西暦年、月、日を読み込み、その日が何曜日であるかを表示するプログラムを以下の手順で作成せよ。
3-1
西暦年を読み込み、その値を返す関数
int get_year(void)
を作成せよ。なお1900未満の値が入力された場合のには再入力を促し、1900以上の値が入力されるまで処理を繰り返させること。
また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。
3-2
月を読み込み、その値を返す関数
int get_month(void)
を作成せよ。なお0以下または13以上の値が入力された場合には再入力を促し、1以上12以下の値が入力されるまで処理を繰り返させること。
また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。
3-3
西暦年year を受け取り、その年が閏年ならば1をそうでなければ0を返す関数
int judge_uru(int year)
を作成せよ。また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。
なお、グレゴリオ暦では以下の規則に基づいて、閏年が設けられる。
(1)4で割り切れる年は閏年である。
(2)ただし、100で割り切れるが、400で割り切れない年は、閏年ではない。
たとえば、2004年は閏年であり、また1900年や2100年は閏年ではなく、2004年は閏年である。
3-4
西暦年yearと月monthを受け取り、year年 month月の最終日を返す関数
int get_lastday(int year,int month)
を作成せよ。たとえば、yearに2004をmonthに2を受け取ると、2004年の2月は29日までなので29を返す事になる。
なお、関数get_lastdayの中で3-3で作成したjudge_uruを呼び出して使うようにする事。また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。
3-5
日を読み込み、その値を返す関数
int get_day(int year, int month)
を作成せよ。なお、この関数は、西暦年yearと月monthを受け取り、これらの値に基づき、その月の最終日を求める。そして0以下または最終日より大きな値が入力された場合には、再入力を促し、正しい値が入力されるまで処理を繰り返す。
なお、関数get_dayの中では、3-4で作成した関数get_lastdayを呼び出して使うことにすること。(言うまでもなく、関数last_dayの中では、3-3で作成されたjudge_uruが呼び出されることになる)また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。
3-6
西暦年yearを受け取り、1900年からyear年までのトータル日数を返す関数
int get_year_offset(int year)
を作成せよ。たとえば、この関数は1902年を受け取ると、1900から1901年までのトータル日数を返す。すなわち、1900年も1901年も閏年ではないため、365+365=730を返すことになる。
なお、関数get_yesr_offsetの中で、3-3で作成した関数をjudg_uruを呼び出して使うようにすること。また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。
3-7
西暦年yearと月monthを受け取り、year年の1月からmonth月の前の月までのトータル日数を返す関数
int get_month_offset(int year,int month)
を作成せよ。たとえば、この関数は、yearに2,004を、monthに3を受け取ると、2004年の1月から2月までのトータル日数を返す。すなわち、2004年は閏年であるため、31+29=60を返すことになる。
なお、関数get_month_offsetの中で3-4で作成した関数get_lastdayを呼び出して使うようにする事。また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。
3-8
世暦年year、月month、日dayを受け取り、year年、month月、day日が何曜日であるかを表示する関数
void put_what_day(int year,int month)
を作成せよ。
なお、この関数のyearには1900年以降の年が与えられるものとする。また、1900年1月1日は月曜日であることを利用して、該当の曜日を求めることにする。
なお、関数put_what_dayの中で、3-6で作成した関数get_year_offsetと3-7で作成した関数 get_month_offsetを呼び出して使うようにする事。また、関数の動作を確認するための適切なmain関数も作成し、完成したプログラムとして動作テストを行うこと。
3-9
3-1から3-8で作成した関数を用いて、以下に示すように、西暦年、月、日、を読み込み、その日が何曜日であるかを表示するプログラムを作成せよ。
例1
西暦年・月・日を入力して下さい
西暦年:2005 return
月 :10 return
日 :15 return
<結果>
2005年10月15日は、土曜日です
例2
西暦年・月・日を入力して下さい
西暦年:1899 return
1900年以降の年を入力してください
西暦年:2005 return
月 :15 return
1~12月を入力してください
月 :10 return
日 :35 return
1~31日を入力してください
日 :15 return
<結果>
2005年10月15日は、土曜日です
一応出来たのはここまでです。
#include <stdio.h>
int get_year(void)
{
int nen;
printf("西暦年・月・日を入力して下さい\n");
printf("西暦年:");
scanf("%d",&nen);
while(nen<1900){
printf("1900年以降の年を入力してください\n");
printf("西暦年:");
scanf("%d",&nen);
}
}
int get_month(void)
{
int tuki;
printf("月:");
scanf("%d",&tuki);
while(tuki<1||tuki>12)
{
printf("1~12月を入力して下さい\n");
printf("月:");
scanf("%d",&tuki);
}
}
int main(void)
{
int a,b;
a=get_year();
b=get_month();
return 0;
}