c语言,万年历日历(可精确查找月份)(附代码)(比较简单)-创新互联

大概是我上一个简单日历加了些东西;详情如下;c语言简单日历,万年历;_flowkite_8097的博客-博客y

创新互联是专业的茶陵网站建设公司,茶陵接单;提供成都网站建设、成都做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行茶陵网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

完整代码如下:

#define _CRT_SECURE_NO_WARNINGS//Vs特性防止scanf报错
#includeint main() {
	int sbsrn(int year);//判断是不是闰年的函数
	int sc(int n, int d1,int i1);//输出每个月的日历的函数
	int yfts(int n, int year,int a[]);//判断月份天数的函数
	int gyts(int year,int a[]);//计算公元一年一月一号到输入年份的总天数的函数
	int year=1;
	int b[12] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
	int a[12] = { 0 };
	int n,i,v=-1;
	for (; v!= 0;) {//输入0退出循环
		printf("|输入1查全年日历\n|输入2精准查找单个或几个月份的日历\n|输入0退出\n");
		scanf("%d",&v);
		system("cls");
		switch (v) {
		case 1://输入1查全年日历
			printf("请输入年份\n");
			scanf_s("%d", &year);
			printf("%d年的日历\n", year);
			gyts(year, b);
			break;
		case 2://输入2精准查找单个或几个月份的日历
			system("cls");
			printf("请输入年份\n");
			scanf_s("%d", &year);
			printf("%d年的日历\n", year);
			printf("输入要查找的月份的个数\n");
			scanf("%d", &n);
			printf("输入要查找的月份数\n");
			for (i = 0; i< n; i++) {
				scanf("%d",&a[i]);
			}
			gyts(year, a);
			break;
		case 0:break;
		default:system("cls"); break;
		}
	}
	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 a[]) {//判断月份天数的函数
	int i,j;
	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;
			for (j = 1; j< 13; j++) {
				if (i == a[j- 1]) {
					sc(n, d1, i);
				}
			}
			break;
		case 2://二月的通过判断闰年函数来判断天数
			if (sbsrn(year) == 1) {
				d1 = 29;
			}
			else { d1 = 28; }
			for (j = 1; j< 13; j++) {
				if (i == a[j - 1]) {
					sc(n, d1, i);
				}
			}
			break;
		default:
			d1 = 30;
			for (j = 1; j< 13; j++) {
				if (i == a[j - 1]) {
					sc(n, d1, i);
				}
			}
			break;
		}
		n += d1;//每输出一个月的日历,总天数加上输出的那个月的天数
	}
}
int gyts(int year,int a[]) {//计算公元一年一月一号到输入年份的总天数的函数
	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,a);
}

每个函数的代码如下

主函数:

#define _CRT_SECURE_NO_WARNINGS//Vs特性防止scanf报错
#includeint main() {
	int sbsrn(int year);//判断是不是闰年的函数
	int sc(int n, int d1, int i1);//输出每个月的日历的函数
	int yfts(int n, int year, int a[]);//判断月份天数的函数
	int gyts(int year, int a[]);//计算公元一年一月一号到输入年份的总天数的函数
	void memu();//是菜单呢
	int all();//输出一年全部月份的函数
	int exact();//输出精确月份的函数
	memu();
	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 a[]) {//判断月份天数的函数
	int i, j;
	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;
			for (j = 1; j< 13; j++) {
				if (i == a[j - 1]) {
					sc(n, d1, i);
				}
			}
			break;
		case 2://二月的通过判断闰年函数来判断天数
			if (sbsrn(year) == 1) {
				d1 = 29;
			}
			else { d1 = 28; }
			for (j = 1; j< 13; j++) {
				if (i == a[j - 1]) {
					sc(n, d1, i);
				}
			}
			break;
		default:
			d1 = 30;
			for (j = 1; j< 13; j++) {
				if (i == a[j - 1]) {
					sc(n, d1, i);
				}
			}
			break;
		}
		n += d1;//每输出一个月的日历,总天数加上输出的那个月的天数
	}
}

计算公元一年一月一号到输入年份的总天数的函数:

int gyts(int year, int a[]) {//计算公元一年一月一号到输入年份的总天数的函数
	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, a);
}

菜单:

void memu() {//菜单
	int v = -1;
	for (; v != 0;) {//输入0退出循环
		printf("|输入1查全年日历\n|输入2精准查找单个或几个月份的日历\n|输入0退出\n");
		scanf("%d", &v);
		system("cls");
		switch (v) {
		case 1://输入1查全年日历
			all();
			break;
		case 2://输入2精准查找单个或几个月份的日历
			exact();
			break;
		case 0:break;
		default:system("cls"); break;
		}
	}
}

输出一年全部月份的函数:

int all() {//输出一年全部月份的函数
	int b[12] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
	int year = 1;
	printf("请输入年份\n");
	scanf("%d", &year);
	printf("%d年的日历\n", year);
	gyts(year, b);
}

输出精确月份的函数:

int exact() {//输出精确月份的函数
	int year = 1;
	int a[12] = { 0 };
	int n, i, v = -1;
	system("cls");
	printf("请输入年份\n");
	scanf("%d", &year);
	printf("%d年的日历\n", year);
	printf("输入要查找的月份的个数\n");
	scanf("%d", &n);
	printf("输入要查找的月份数\n");
	for (i = 0; i< n; i++) {
		scanf("%d", &a[i]);
	}
	gyts(year, a);
}

最后还有完整的(拼函数版)

#define _CRT_SECURE_NO_WARNINGS//Vs特性防止scanf报错
#includeint main() {
	int sbsrn(int year);//判断是不是闰年的函数
	int sc(int n, int d1, int i1);//输出每个月的日历的函数
	int yfts(int n, int year, int a[]);//判断月份天数的函数
	int gyts(int year, int a[]);//计算公元一年一月一号到输入年份的总天数的函数
	void memu();//是菜单呢
	int all();//输出一年全部月份的函数
	int exact();//输出精确月份的函数
	memu();
	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 a[]) {//判断月份天数的函数
	int i, j;
	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;
			for (j = 1; j< 13; j++) {
				if (i == a[j - 1]) {
					sc(n, d1, i);
				}
			}
			break;
		case 2://二月的通过判断闰年函数来判断天数
			if (sbsrn(year) == 1) {
				d1 = 29;
			}
			else { d1 = 28; }
			for (j = 1; j< 13; j++) {
				if (i == a[j - 1]) {
					sc(n, d1, i);
				}
			}
			break;
		default:
			d1 = 30;
			for (j = 1; j< 13; j++) {
				if (i == a[j - 1]) {
					sc(n, d1, i);
				}
			}
			break;
		}
		n += d1;//每输出一个月的日历,总天数加上输出的那个月的天数
	}
}
int gyts(int year, int a[]) {//计算公元一年一月一号到输入年份的总天数的函数
	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, a);
}
void memu() {//菜单
	int v = -1;
	for (; v != 0;) {//输入0退出循环
		printf("|输入1查全年日历\n|输入2精准查找单个或几个月份的日历\n|输入0退出\n");
		scanf("%d", &v);
		system("cls");
		switch (v) {
		case 1://输入1查全年日历
			all();
			break;
		case 2://输入2精准查找单个或几个月份的日历
			exact();
			break;
		case 0:break;
		default:system("cls"); break;
		}
	}
}
int all() {//输出一年全部月份的函数
	int b[12] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
	int year = 1;
	printf("请输入年份\n");
	scanf("%d", &year);
	printf("%d年的日历\n", year);
	gyts(year, b);
}
int exact() {//输出精确月份的函数
	int year = 1;
	int a[12] = { 0 };
	int n, i, v = -1;
	system("cls");
	printf("请输入年份\n");
	scanf("%d", &year);
	printf("%d年的日历\n", year);
	printf("输入要查找的月份的个数\n");
	scanf("%d", &n);
	printf("输入要查找的月份数\n");
	for (i = 0; i< n; i++) {
		scanf("%d", &a[i]);
	}
	gyts(year, a);
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章名称:c语言,万年历日历(可精确查找月份)(附代码)(比较简单)-创新互联
本文路径:http://myzitong.com/article/hhogh.html