#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 a[]);//判断月份天数的函数
int gyts(int year, int a[]);//计算公元一年一月一号到输入年份的总天数的函数
void memu();//是菜单呢
int all();//输出一年全部月份的函数
int exact();//输出精确月份的函数
void qdsx();//确定生肖的函数
void qdsx_d();//仅查寻生肖的函数
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|输入3仅查找生肖\n|输入0退出\n");
scanf("%d", &v);
system("cls");
switch (v) {
case 1://输入1查全年日历
all();
break;
case 2://输入2精准查找单个或几个月份的日历
exact();
break;
case 3:qdsx_d();
case 0:break;
default:system("cls"); break;
}
}
}
void qdsx_d() {//仅查寻生肖的函数
int year = 1;
printf("请输入年份\n");
scanf("%d", &year);
printf("\n\n\t");
qdsx(year);
printf("\n\n");
}
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);
qdsx(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]);
}
qdsx(year);
gyts(year, a);
}
void qdsx(int year){//确定生肖的函数
int ys;
ys = year % 12;
switch (ys) {
case 0:printf("猴\n"); break;
case 1:printf("鸡\n"); break;
case 2:printf("狗\n"); break;
case 3:printf("猪\n"); break;
case 4:printf("鼠\n"); break;
case 5:printf("牛\n"); break;
case 6:printf("虎\n"); break;
case 7:printf("兔\n"); break;
case 8:printf("龙\n"); break;
case 9:printf("蛇\n"); break;
case 10:printf("马\n"); break;
case 11:printf("羊\n"); break;
}
}
生肖的年份
最新推荐文章于 2024-11-11 23:32:39 发布