#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
int a[31]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};
int main()
{
int Leap(int );
int Month(int );
void print(int k,int t,int day);
int i,j=0,k,m,n,t=-6;
int day;
int total=1;
printf("请输入年份:");
scanf("%d",&m);
printf("请输入月份:");
scanf("%d",&n);
getchar();
do
{
system("cls");
printf("%d年%d月:\n",m,n);
total=365*(m-1);
for(i=1;i<m;i++)
if(Leap(i)==1)
total+=1;
for(i=1;i<n;i++)
total=total+Month(i);
day=Month(n);
if(Leap(m)==1 && n==2)
day++;
if(total>1)
total--;
if(total==0)
k=(total+1)%7;
else
k=(total+2)%7;
print(k,t,day);
printf("请选择:");
switch(getch())
{
case '>':
if(n==12)
{
m++;
n=1;
}
else
n++;
break;
case '<':
if(n==1)
{
m--;
n=12;
}
else
n--;
break;
case '?':
printf("请输入年份:");
scanf("%d",&m);
printf("请输入月份:");
scanf("%d",&n);
break;
case '#':
j=1;
break;
}
if(j==1)
break;
putchar(10);
}while(1);
return 0;
}
int Month(int n)
{
int day;
switch(n)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day=31;
break;
case 2:
day=28;
break;
case 4:
case 6:
case 9:
case 11:
day=30;
break;
default:
printf("您输入的月份有错, 请重新输入!\n");
}
return day;
}
int Leap(int m)
{//闰年返回1,否则返回0。
int i=0;
if(m%4==0 && m%100!=0 || m%400==0)
i=1;
return i;
}
void print(int k,int t,int day)
{
FILE *fp;
if((fp=fopen("abc.txt","w"))==0)
{
printf("打开失败\n");
exit(1);
}
int i;
printf("\n日 一 二 三 四 五 六\n");
fprintf(fp,"\n日 一 二 三 四 五 六\n");
printf("-------------------------------------------------------------\n");
fprintf(fp,"---------------------------------------------------------\n");
for(i=1;i<=k;i++)
{
printf(" ");
fprintf(fp," ");
}
for(i=0;i<day;i++)
{
printf("%-8d",a[i]);
fprintf(fp,"%-8d",a[i]);
if(k==6)
{
printf("\n");
printf("-------------------------------------------------------------\n");
fprintf(fp,"\n");
fprintf(fp,"-----------------------------------------------------------\n");
t=0;
}
if(t!=0 && t%7==0)
{
printf("\n");
fprintf(fp,"\n");
printf("-------------------------------------------------------------\n");
fprintf(fp,"-----------------------------------------------------------\n");
}
k++;
t++;
}
printf("\n--------------------------\n");
printf(" 选 项 \n");
printf(" > 下一个月 \n");
printf(" < 上一个月 \n");
printf(" ? 自定义年月 \n");
printf(" # 退出 \n");
printf("--------------------------\n");
fclose(fp);
}
纯C语言写的日历
最新推荐文章于 2024-06-16 16:54:16 发布