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;
}

🍎

posted @ 2022-02-25 00:18  Link_kingdom  阅读(364)  评论(0编辑  收藏  举报