2004年1月1日から2004年12月31日までの日付を入力し、その日の曜日を出力して終了するプログラムを作成してください。なお、2004年1月1日は木曜日です。また、2004年はうるう年です。
月(整数)
日(整数)
曜日
1
2
金曜日
重要な前提条件として、毎月の日数が分からなければなりません。それが分かれば、後は目的の日までの経過日数をカウントし、7で余り算すればいいです。
#include <stdio.h> int main(){ int m;//月 int d;//日 int o;//総日数 char s[7][3] ={"水","木","金","土","日","月","火"}; scanf("%d",&m); scanf("%d",&d); o=d; switch(m){//breakをつけないのがポイント case 12: o+=30; case 11: o+=31; case 10: o+=30; case 9: o+=31; case 8: o+=31; case 7: o+=30; case 6: o+=31; case 5: o+=30; case 4: o+=31; case 3: o+=29; case 2: o+=31; } printf("%s曜日\n",s[o%7]); return 0; }
#include <stdio.h> int main(){ int m;//月 int d;//日 int o;//総日数 char s[7][3] ={"水","木","金","土","日","月","火"}; //月から日を出す。 int m2d[13] = {0,0,31,60,91,121,152,182,213,244,274,305,335}; scanf("%d",&m); scanf("%d",&d); o = d + m2d[m]; printf("%s曜日\n",s[o%7]); return 0; }
加算方法としては、三つほどあると思います。
多分case文は書くのがめんどくさく、あらかじめ加算データを用意は計算がめんどくさいです。