ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

C语言综合练习Day9

2026/8/10 12:13:23 拓冰建站 浏览量
C语言综合练习Day9

练习:用函数打印日历

步骤一:判断年份

平年和闰年的二月份天数不一样,导致总天数不一样。年份能被4整除且不能被100整除,或年份能被400整除都可判断为闰年

int isleapYear(int year) { int ret = 0; if(year%4==0 && year%100!=0 || year%400==0) { ret = 366; //闰年一年有366天 }else { ret = 365; } return ret; }

步骤二:判断每个月份的天数

1 3 5 7 8 10 12月有31天

4 6 9 11 月有30天

2月 平年有28天 闰年有29天

#include<stdio.h> int getMonthDays(int year,int month) { int ret; if(month !=2 && month==4 || month==6 || month==9 || month==11) { ret = 30; } else if(month!=2 && month==1 ||month==3||month==5||month==7||month==8||month==10||m==12) { ret = 31; }else if(month==2 && isleapYear(year) == 366) { ret = 29; }else if(month==2 &&isleapYear(year) == 365) { ret = 28; } return ret; }

步骤三 :

getAllDays函数用于计算从基准年份(1990年)到指定年份和月份之间的总天数,包括闰年和平年的天数累加。

int getAllDays(int year,int month) { int i = 0; int days = 0; for(i = 1990;i<=year;i++) { days = days + isleapYear(i); } for(i = 1;i<month;i++) { days = getMonthDays(i) + days; } return days; }

步骤四:判断输入的年份月份的1号是星期几

调用getAllDays(year, month)计算从某个固定日期(如1970 年 1 月 1 日)到输入的年月 1 日的总天数。使用% 7取模运算,将总天数转换为星期几的索引

int getWeekDay(int year,int month) { int week; week = getAllDays(year,month)%7; return week; }

步骤五:打印函数

void printCal(int year,int month) { printf("%5d%2d\n",year,month); printf("mon tues wed thur fri sut sun\n"); int i; for(i = 0;i<getWeekDay(year,month);i++) { printf(" "); } for(i=0;i<=getMonthDays(year,month);i++) { printf("%2d",i); } }

步骤六:头文件

外部声明打印函数

#ifndef _CAL_H_ #define _CAL_H_ #include<stdio.h> extern void printCal(int year,int Month); #endif

步骤七:添加主函数

#include<stdio.h> #include"work9.h" int main(void) { int year, month; printf("请输入要查询日历的年份和月数:"); scanf("%d %d", &year, &month); printCal(year, month); return 0; }