C语言输出某年某月日历
C语言输出某年某月日历
#include<stdio.h>
int datetoweekday(int year, int month, int day) {
int monthday[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int monthday1[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int weekday = 0;
unsigned long sumday = 0; //距离1900.1.1总间隔天数
if (year == 1900 && month <= 1 && month > 0) { //如果小于一个月
sumday = day;
} else if (year == 1900 && month > 1 && month <= 12) { //如果大于一个月但小于一年
for (int i = 0; i < month - 1; i++) {
sumday += monthday[i];
}
sumday += day;
} else if (year > 1900 && month >= 1 && month <= 12) { //如果大于一年
for (int i = 1900; i < year ; i++) { //计算一年前所有年的天数
if (i % 4 == 0) { //是闰年
sumday += 366;
if (i == 1900) { //1900不是闰年
sumday -= 1;
}
} else { //不是闰年
sumday += 365;
}
}
if (year % 4 == 0) { //当年是闰年
for (int i = 0; i < month - 1; i++) {
sumday += monthday1[i];
}
sumday += day;
} else { //当年不是闰年
for (int i = 0; i < month - 1; i++) {
sumday += monthday[i];
}
sumday += day;
}
}
weekday = sumday % 7;
return weekday;
}
int judgedatestyle(int year, int month, int day) {
int ret = 0;
if (year < 1900) {
printf("year is error.");
} else if (month < 1 && month > 12) {
printf("month is error.");
} else if (day < 0 && day > 31) {
printf("day is error.");
} else if ((month == 4 || month == 6 || month == 9 || month == 11) && day > 30) {
printf("date is wrong");
} else if (year % 4 != 0 && month == 2 && day > 28) {
printf("date is wrong");
} else if (year % 4 == 0 && month == 2 && day > 29) {
printf("date is wrong");
} else {
ret = 1;
}
return ret;
}
int main() {//打印日历
int year = 0, month = 0, day = 1;
scanf("%d%d", &year, &month);
int monthday[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int monthday1[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
printf(" 日 一 二 三 四 五 六\n");
for (int i = 0; i < datetoweekday(year, month, day); i++) {
printf(" ");
}
if(year%4!=0){
for (int i = 0; i < 7; i++) {
for(int i=datetoweekday(year,month,day);i<=6&&day<=monthday[month-1];i++){
printf("% 3d", day);
day++;
}
printf("\n");
}
}else{
for (int i = 0; i < 7; i++) {
for(int i=datetoweekday(year,month,day);i<=6&&day<=monthday1[month-1];i++){
printf("% 3d", day);
day++;
}
printf("\n");
}
}
return 0;
}
🍎
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人