c语言简单日历,万年历;

emmm,主要是通过1计算总天数,2判断润年,3每月一号前的空格,4还有一星期换行这4个函数来写。

代码在下面,

#define _CRT_SECURE_NO_WARNINGS//Vs特性防止scanf报错
#include <stdio.h>
int main() {
	int sbsrn(int year);//判断是不是闰年的函数
	int sc(int n, int d1,int i1);//输出每个月的日历的函数
	int yfts(int n, int year);//判断月份天数的函数
	int gyts(int year);//计算公元一年一月一号到输入年份的总天数的函数
	int year=1;
	for (; year != 0;) {//输入0退出循环
		printf("请输入年份(输入0退出)");
		scanf_s("%d", &year);
		system("cls");//清屏
		printf("%d年的日历\n", year);
		gyts(year);
	}
	return 0;
}
int sbsrn(int year) {//判断是不是闰年的函数
	if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
		return 1;
	}
	else return 0;
}
int sc(int n,int d1,int i1) {//输出每个月的日历的函数
	int t,i;
	printf("\t\t\t%d月份\n\n", i1);
	printf("一\t二\t三\t四\t五\t六\t日\n\n");
	t = n % 7;
	
	for (i = 0; i < t; i++) {//输出每月一号前的空格
		printf("\t");
	}
	for (i = 1; i <= d1; i++) {
		
			printf("%d\t", i);
		
		if ((i + n) % 7 == 0) {
			printf("\n\n");
		}
	}
	printf("\n____________________________________________________\n");
	return 0;
}
int yfts(int n,int year) {//判断月份天数的函数
	int i;
	int d1;
	for (i = 1; i < 13; i++) {
		switch (i) {
		case 1:case 3:case 5:case 7:case 8:case 10:case 12:
			d1 = 31;
			sc(n, d1,i);
			break;
		case 2://二月的通过判断闰年函数来判断天数
			if (sbsrn(year) == 1) {
				d1 = 29;
			}
			else { d1 = 28; }
			sc(n,d1,i);
			break;
		default:
			d1 = 30;
			sc(n, d1,i);
			break;
		}
		n += d1;//每输出一个月的日历,总天数加上输出的那个月的天数
	}
}
int gyts(int year) {//计算公元一年一月一号到输入年份的总天数的函数
	int i;
	int n=0;
	for (i = 0; i < year; i++) {
		if (sbsrn(year) == 0) {
			n += 365;
		}
		else { n += 366; }
	}
	n = n - 1;//公元一年一月一号是星期日,所以我减一了
	yfts(n, year);
}

效果如下

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值