本来写了一个,但是运行有问题,所以重新求一个,月份之间老是少一天,然后改程序之后,月份第一天是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 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
- ¥15 Vue3地图和异步函数使用
- ¥15 C++ yoloV5改写遇到的问题
- ¥20 win11修改中文用户名路径
- ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
- ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
- ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
- ¥15 帮我写一个c++工程
- ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
- ¥15 关于smbclient 库的使用