使用C语言怎么编写一个万年历功能-创新互联
本篇文章给大家分享的是有关使用C语言怎么编写一个万年历功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
成都创新互联公司成都网站建设按需求定制开发,是成都网站设计公司,为成都垃圾桶提供网站建设服务,有成熟的网站定制合作流程,提供网站定制设计服务:原型图制作、网站创意设计、前端HTML5制作、后台程序开发等。成都网站建设热线:13518219792具体内容如下
#include#include #include #define str " SUN MON TUE WED THU FRI SAT " void menu(); //操作菜单 int leap(int year); //判断某年是不是闰年 int days_month(int year, int month); //返回某月的天数 int someday(int year, int month, int day); //计算某天是星期几 void search_month(int year, int month); //输出某月的日历 void search_someday(int year, int month, int day); //查询某日是星期几 int main() { int i, year, month, day; int k1, k2, k3, k4; //用于判断输入的数据和操作是否正确,1代表正确,0代表错误 int a = 1; menu(); do { printf("请输入你要进行的操作(1-4):"); scanf_s("%d", &i); getchar(); switch (i) { case 1: printf("请输入你要查询的年份:"); scanf_s("%d", &year); for (a; a <= 12; a++) { printf("\n\n---------******* %d *******------------\n", a); search_month(year, a); } printf("---------*********************------------\n\n\n"); break; case 2: printf("请输入您所要查询的相关信息.\n"); printf("年份:"); scanf_s("%d", &year); printf("月份:"); scanf_s("%d", &month); k1 = 1; while (k1) { if (month > 12 || month < 1) { printf("你输入的月份有误,请重新输入!\n"); printf("月份:"); scanf_s("%d", &month); if (month < 1 || month>12) k1 = 1; } else k1 = 0; } search_month(year, month); printf("---------*********************------------\n\n\n"); break; case 3: printf("请输入你要查询的日期\n"); printf("年份:"); scanf_s("%d", &year); printf("月份:"); scanf_s("%d", &month); k2 = 1; while (k2) { if (month > 12 || month < 1) { printf("你输入的月份有误,请重新输入!\n"); printf("月份:"); scanf_s("%d", &month); if (month < 1 || month>12) k2 = 1; } else k2 = 0; } // printf("%d年%d月有%d天\n",year,month,days_month(year,month)); 调试观察输入的日期是否有误,可忽略 printf("日期:"); scanf_s("%d", &day); k3 = 1; while (k3) { if (day > days_month(year, month) || day < 1) { printf("你输入的日期有误,请重新输入!\n"); printf("日期:"); scanf_s("%d", &day); if (day > days_month(year, month) || day < 1) k3 = 1; } else k3 = 0; } search_someday(year, month, day); printf("---------*********************------------\n\n\n"); break; case 4:exit(0); printf("---------*********************------------\n\n\n"); break; default: k4 = 1; while (k4) { printf("你输入的数据有误,请重新输入你要进行的操作(1-4):"); scanf_s("%d", &i); if (i < 1 || i>4) k4 = 1; else k4 = 0; } break; } } while (i > 0 && i < 5); return 0; } void menu() { int i = 1; printf("\n\n\t\t----------------------------------------\n"); printf("\t\t|--------------------------------------|\n"); printf("\t\t| %d. 输出某年的日历 |\n", i); printf("\t\t| %d. 输出某月的日历 |\n", i + 1); printf("\t\t| %d. 查询某日是星期几 |\n", i + 2); printf("\t\t| %d. 退出系统 |\n", i + 3); printf("\t\t|--------------------------------------|\n"); printf("\t\t----------------------------------------\n\n"); } int leap(int year) { if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return 1; else return 0; } int days_month(int year, int month) { int days_month; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days_month = 31; break; case 4: case 6: case 9: case 11:days_month = 30; break; case 2: if (leap(year) == 1) { days_month = 29; break; } else days_month = 28; break; } return days_month; } int someday(int year, int month, int day) { //该函数运用了特殊的计算公式,详细可参见 http://blog.163.com/hexin_mars_blog/blog/static/248215040201571351115699/ int someday, m, n, i; //someday表示查询的日子是星期几 m = year - year / 1000 * 1000; n = m - m / 100 * 100 - 1; //用于获得年份的后两位数 int days = 0; for (i = 1; i < month; i++) days = days + days_month(year, i); days = days + day; someday = (n + n / 4 - n / 100 + n / 400 + days) % 7; return someday; } void search_someday(int year, int month, int day) { char weekname[20]; switch (someday(year, month, day)) { case 0:strcpy_s(weekname, "星期天"); break; case 1:strcpy_s(weekname, "星期一"); break; case 2:strcpy_s(weekname, "星期二"); break; case 3:strcpy_s(weekname, "星期三"); break; case 4:strcpy_s(weekname, "星期四"); break; case 5:strcpy_s(weekname, "星期五"); break; case 6:strcpy_s(weekname, "星期六"); break; } printf("你所要查询的日期是%s\n", weekname); } void search_month(int year, int month) { int i = 0, j, k = 0, m; //j用于记录某月的第一天是星期几 m用于记录某月的天数 k用于换行提示 char x[10] = " "; m = days_month(year, month); j = someday(year, month, 1); //输出某月的日历 printf("------------------------------------------\n"); printf("%s\n", str); for (; i < j; i++) { printf("%s", x); k++; } for (i = 1; i <= m; i++) { k++; if (k % 7 == 0) { if (i < 10) { printf(" %d ", i); printf("\n"); } else if (i >= 10) { printf(" %d ", i); printf("\n"); } } else { if (i < 10) { printf(" %d ", i); } else if (i >= 10) { printf(" %d ", i); } } } printf("\n------------------------------------------\n"); } void exit() { exit(0); }
以上就是使用C语言怎么编写一个万年历功能,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联网站建设公司行业资讯频道。
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章名称:使用C语言怎么编写一个万年历功能-创新互联
路径分享:http://hbruida.cn/article/eihih.html