打印日历和计算日期

it2025-10-08  4

#include<stdio.h> #include<stdlib.h> int isrun(int year) { return ((year % 4==0 && year % 100!=0)|| year%400 == 0); } //首先写一个判断一年是否是闰年的函数,参数,返回值都为int类型,满足是闰年时返回1,不满足时返回0 int main(void){ int year,month; printf("input year month"); scanf("%d%d",&year,&month);//获取输入的年月 int daycount=31;//每月的天数设置为31 int total =0;//用来存放从1900.1.1到秒表年月的总天数 for(int i=1900;i<year;i++) { total=(isrun(i)?366:365)+total; }//total此时的数值是从1999.0.1到目标年的总天数,暂未加上月份 for(int i=1;i<=month;i++) { daycount=31; switch(i) { case 4:daycount=30; break; case 6:daycount=30; break; case 9:daycount=30; break; case 11:daycount=30; break; case 2:daycount =isrun(year)? 29:28;break; } if(i==month){ total=total+daycount;} } printf("%d\n",total);//打印总天数 daycount=31; switch(month) { case 4: case 6: case 9: case 11:daycount=30;break; case 2:daycount =isrun(year)? 29:28;break; } printf("st mo tue wes tu fr sun\n"); int zhou=total%7;//周记录的是当月一号是星期(zhou+1) for(int i=0;i<zhou+1;++i) { if(zhou==6){break;}//如果周等6,则当天是星期天,打印七个空格会使得第一排为空不美观 printf(" ");//打印固定长度的空格 } for(int j=1;j<daycount+1;j++) { printf("%-4d",j); if((j+zhou+1)%7==0) { printf("\n");//打印日历,每七个一行 } } } 2.打印日期 ```c #include<stdio.h> int isrun(int year) { return ((year%4==0 && year%100!=0)||(year%400==0)); } int daycount(year,month) { int daycount=31; if(month==4||month==6||month==9||month==11) { daycount=30; } if(month==2) { daycount=isrun(year)? 29:28; } return daycount; } int main() { int year,day; printf("input year\n"); scanf("%d",&year); printf("input day\n"); scanf("%d",&day); int month=1; while(day>daycount(year,month)) { day=day-daycount(year,month); month++; } printf("%d-%d",month,day); }
最新回复(0)