本来写了一个,但是运行有问题,所以重新求一个,月份之间老是少一天,然后改程序之后,月份第一天是0,但是其他日期是对的,不太理解
这个程序怎么写?初学者等
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- a5156520 2022-09-04 18:06关注
参考下面的链接,修改了了一下,可以打印出题目所需要的日历。
参考链接:
c语言编写程序“输入任意一个年份和月份,打印当月日历。”_zhao_miao的博客-CSDN博客#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> //https://ask.csdn.net/questions/7782335?spm=1005.2025.3001.5141 int mon[2][13] = { { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } }; //判断闰年 int isleap(int year) { if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return 1; else return 0; } //年份的第一天 int first_day_of_year(int year) { int base_year = 2000; //定义一个基准年2000年 int first_day = 6; //基准天:2000年1月1号是星期6 int i = 2000; int total = 0; //天数总和 for (i = base_year; i < year; i++) { total = total + 365 + isleap(i); //isleap函数用于判断年份是否是闰年,如果是返回1,不是返回0 } return (total+first_day)%7; } //月份第一天 int first_day_of_month(int year, int month, int first_year) { int total = 0; //天数和 int i = 0; for(i = 1; i < month; i++) { total = total + mon[isleap(year)][i]; } return (total + first_year) % 7; } //展示日历 void show(int year,int month, int first_month) { int i = 0; printf("SUN MON TUE WED THU FRI SAT\n"); //修改了这里 for (i = 0; i < first_month; i++) //修改了这里 { printf(" "); //月份第一天是从first_month开始的,所以首先打印first_month-1个空格 } // int firstLine = 0; for (i = 1; i <= mon[isleap(year)][month]; i++) //修改了这里 { printf("%-5d", i); if ((first_month+i) % 7 ==0) //如果(数字+空格数)%7==0,则换行 { //printf("i=%d,first_month=%d,mon[isleap(year)][month]=%d\n",i,first_month,mon[isleap(year)][month]); printf("\n"); // firstLine=1; } // if(i==mon[isleap(year)][month]-1){ // // } // if(firstLine==1&&((first_month-1+i) % 7 ==0)){ // printf("\n"); // } } printf("\n"); } int main() { int year, month; printf("年-月:"); //输入你想打印的年份 scanf("%d-%d", &year, &month); int first_year = first_day_of_year(year);//年份第一天 int first_month = first_day_of_month(year, month, first_year);//月份第一天 show(year, month, first_month); system("pause"); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
- ¥15 vscode程序一直报同样的错,如何解决?
- ¥15 关于使用unity中遇到的问题
- ¥15 开放世界如何写线性关卡的用例(类似原神)
- ¥15 关于并联谐振电磁感应加热
- ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
- ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
- ¥66 如何制作支付宝扫码跳转到发红包界面
- ¥15 pnpm 下载element-plus
- ¥15 解决编写PyDracula时遇到的问题