[attach]274[/attach] 帮忙啊,万年历的程序,长了点,望耐着性子看完。
老师搞了半个钟头硬是没搞出来,星期一要交作业的~~
#include<stdio.h>
void printmonth(int m); /*函数说明*/ void printhead(int m); /*函数说明*/ int daysofmonth(int m); /*函数说明*/ int isleap(int y); /*函数说明*/ int firstday(int y); /*函数说明*/
int year; int weekday; /*全局变量说明*/
void main () { int i ; printf("输入年份:"); scanf("%d",&year); weekday=firstday(year); printf("\n\n"); printf("%d年\n",year); /*17个空格*/ for (i =1;i <=12;i ++) { printmonth(i ); printf("\n"); getch(); } printf("\n\n"); }
void printmonth(int m) { int i ,days=0; printhead(m); days=days+daysofmonth(m); for(i =1;i <=days;i ++) { printf("%5d",i ); weekday=(weekday=1)%7; if(weekday==0) /*打印下一个之前是否换行*/ printf("\n"); /*3个空格*/ } }
void printhead(int m) {int i ; printf("\n%d月 日 一 二 三 四 五 六\n",m); printf(" "); /*3个空格*/ for(i =0;i <weekday;i ++) printf(" " ); /*五个空格*/ }
int daysofmonth(int m) /*返回y年m月的天数*/ { switch(m) { case 1: case 3: case 5: case 7: case 8: case 10: case 12:return 31; break; case 4: case 6: case 9: case 11:return 30; case 2:if(isleap(year))return 29; else return 28; break; default:exit(0); } return 0; }
int isleap(int y) /*判断y年是否为闰年*/ { return ( y%4==0&&y%100!=0||y%400==0); }
int firstday(int y) /*从公元第1天为星期天算出y年第1天是星期几*/ { long n=y*365; int i ; for(i =1;i<y;i ++) /*补上所以的闰年的天数*/ n+=isleap(i); return n%7; }
你的程序写的有点乱 而且你程序写的时候笔误太多 所以我尽量按你程序的是思路写了一下你自己看看吧 因为在网吧没办法调试 你自己调试一下 我想应该可以通过。 还有希望你以后问问题的时候能减少笔误 还有写程序别那么乱 不然让人去理解你的程序会很困难 大家时间都不富裕。 :)
#include "stdio.h" int year, weekday; int isleap(int year) { return (year%4==0&&year%100!=0||year%400==0); } int firstday(int year) { int i; long n=year*365; for(i=1;i<=year;i++) n+=isleap(i); return n%7; } int monthday(int month) { switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 4: case 6: case 9: case 11:return 30; case 2: { if(isleap(year)) return 29; else return 28; } } } void printfmonth(int month) { int i,day; prihead(month); day=monthday(month); for(i=1;i<=day;i++) { printf("%4d",i); weekday=(weekday+1)%7; if(weekday==0) { printf("\n"); } } } prihead(int month) { int i; printf("\n%dmonth\n",month); printf(" SUN MON TUE WED THU FRI SAT\n"); for(i=0;i<weekday;i++) printf(" "); } main() { int i; printf("input year:"); scanf("%d",&year); weekday=firstday(year); printf("%d",weekday); printf("\n\n"); printf("%d year\n",year); for(i=1;i<=12;i++) { printfmonth(i); printf("\n"); getch(); } printf("\n\n"); }