C语言,遍历万年历

编程入门 行业动态 更新时间:2024-10-12 03:19:35

C语言,<a href=https://www.elefans.com/category/jswz/34/1771029.html style=遍历万年历"/>

C语言,遍历万年历

目录

int getWeekdayByYearday(int iY, int iM, int iD)

功能:判断某天是周几

参数:年、月、日

返回值:0~6   周日-周6

int MyYear(int year, int month)

功能:判断某年某月有几天(需判断闰年,平年)

参数:年、月

返回值:天数 28 29 30 31

int MyOutPut(int year, int month)

功能:打印某年某月的万年历

参数:年、月

返回值:-1 传参错误,0打印成功

主函数main


int getWeekdayByYearday(int iY, int iM, int iD)

功能:判断某天是周几

参数:年、月、日

返回值:0~6   周日-周6

int getWeekdayByYearday(int iY, int iM, int iD)
{int iWeekDay = -1;if (1 == iM || 2 == iM) {iM += 12;iY--;}iWeekDay = (iD + 1 + 2 * iM + 3 * (iM + 1) / 5 + iY + iY / 4 - iY / 100 + iY / 400) % 7;return iWeekDay;
}

int MyYear(int year, int month)

功能:判断某年某月有几天(需判断闰年,平年)

参数:年、月

返回值:天数 28 29 30 31

int MyYear(int year, int month)
{int day = 0;switch (month) {case 1:case 3:case 5:case 7:case 8:case 10:case 12:day = 31;break;case 4:case 6:case 9:case 11:day = 30;break;case 2:if ((0 == year % 4 && 0 != year % 400) || 0 == year % 400) {day = 29;} else {day = 28;}break;}return day;
}

int MyOutPut(int year, int month)

功能:打印某年某月的万年历

参数:年、月

返回值:-1 传参错误,0打印成功

int MyOutPut(int year, int month)
{int day = 0;int week = 0;if (year <= 0 && (month <= 0) || month > 13) {printf("参数传递错误,请重新输入:");return -1;}day = MyYear(year, month);printf("[%d  %d]:\n", year, month);printf("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n");for (int i = 1; i <= day; i++) {week = getWeekdayByYearday(year, month, i);if (1 == i) {switch (week) {case 0:printf("%-2d\t", i);break;case 1:printf("\t%-2d\t", i);break;case 2:printf("\t\t%-2d\t", i);break;case 3:printf("\t\t\t%-2d\t", i);break;case 4:printf("\t\t\t\t%-2d\t", i);break;case 5:printf("\t\t\t\t\t%-2d\t", i);break;case 6:printf("\t\t\t\t\t\t%-2d\n", i);break;}} else {switch (week) {case 0:case 1:case 2:case 3:case 4:case 5:printf("%-2d\t", i);break;case 6:printf("%-2d\n", i);break;}}}printf("\n\n");return 0;
}

主函数main

int main(int argc, char const* argv[])
{printf("********************************\n");printf("*****按year输出万年历*************\n");printf("*****按month输出万年历************\n");printf("********************************\n");printf("point '1.year' or '2.month':");int choose = 0;int year = 0;int month = 0;int day = 0;
rester1:scanf("%d", &choose);if (1 != choose && 2 != choose) {printf("输出错误!请重新输出 1 or 2:");goto rester1;}if (1 == choose) {rester2:printf("请输出具体的年份,如2019:");scanf("%d", &year);if (year <= 0) {printf("输出错误!请重新输入年份year>0:");goto rester2;}for (int i = 1; i <= 12; i++) {day = MyOutPut(year, i);}}if (2 == choose) {printf("请输出具体的年份,月份,如2019 10:");scanf("%d%d", &year, &month);if (year <= 0) {printf("输出错误!请重新输入年份year>0,month>0且month<13:");goto rester2;}day = MyOutPut(year, month);}return 0;
}

更多推荐

C语言,遍历万年历

本文发布于:2024-03-10 20:32:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1728964.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:遍历   万年历   语言

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!