永发信息网

c语言编写万年历

答案:2  悬赏:50  手机版
解决时间 2021-04-01 19:06
  • 提问者网友:不爱我么
  • 2021-03-31 22:35
c语言编写万年历
最佳答案
  • 五星知识达人网友:独钓一江月
  • 2021-03-31 23:12
#include
#define N 7void print(int day,int tian)
{
int a[N][N],i,j,sum=1;
for(i=0,j=0;j<7;j++)
{
if(j printf(" ");
else
{
a[i][j]=sum;
printf("%3d ",sum++);
}
}
printf("\n");
for(i=1;sum<=tian;i++)
{
for(j=0;sum<=tian&&j<7;j++)
{
a[i][j]=sum;
printf("%3d ",sum++);
}
printf("\n");
}

}int duo(int year)
{
if(year%4==0&&year%100!=0||year%400==0)
return 1;
else
return 0;
}
int rili(int year,int month)
{
int day,tian,preday,strday;
//printf("\n");

printf("%d月 %d年\n",month,year);
printf("Sun Mon Tue Wed Thu Fri Sat\n");
switch(month)
{
case 1:
tian=31;
preday=0;
break;
case 2:
tian=28;
preday=31;
break;
case 3:
tian=31;
preday=59;
break;
case 4:
tian=30;
preday=90;
break;
case 5:
tian=31;
preday=120;
break;
case 6:
tian=30;
preday=151;
break;
case 7:
tian=31;
preday=181;
break;
case 8:
tian=31;
preday=212;
break;
case 9:
tian=30;
preday=243;
break;
case 10:
tian=31;
preday=273;
break;
case 11:
tian=30;
preday=304;
break;
default:
tian=31;
preday=334;
}
if(duo(year)&&month>2)
preday++;

if(duo(year)&&month==2)
tian=29;
day=((year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+preday+1)%7; print(day,tian);

}int main()
{
int year,month,con=1;
while(con)
{
printf("请输入你想打印的年份:");
scanf("%d",&year);
while(1)
{
printf("请输入你想打印的月份:");
scanf("%d",&month);
if(month>12||month<1)
printf("请输入正确的月份!!");
else
break;
}

rili(year,month); printf("是否继续 1或者0");
scanf("%d",&con);
}
getch();
}
全部回答
  • 1楼网友:痴妹与他
  • 2021-04-01 00:44
#include"stdio.h"
#include"stdlib.h"
#include"windows.h"
void welcome();
void getday(int year,int month);
void shuru();
void end();
long year;
long month;
void welcome()
{
printf("【万年历程序加载中");
for(int i=0;i<30;i++)
{
printf("★");
Sleep(100);
}
system("cls");
printf("【万年历程序加载中】\n");
Sleep(1000);
printf("☆~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~☆\n");
Sleep(1000);
printf(" ~~~谢谢使用【菠菜】制作的万年历~~~~\n");
Sleep(100);
printf("☆~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~☆\n");
Sleep(1000);
}
void end()
{
printf("【万年历关闭中");
for(int i=0;i<30;i++)
{
printf("★");
Sleep(100);
}
system("cls");
printf("【万年历关闭完成】\n");
Sleep(1000);
printf("☆~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~☆\n");
Sleep(1000);
printf(" ~~~谢谢使用【菠菜】制作的万年历~~~~\n");
Sleep(100);
printf("☆~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~☆\n");
Sleep(1000);
exit(0);
}
void shuru()
{
int a;
printf("☆~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~☆\n");
printf(" ≮欢迎使用万年历≯\n");
printf("☆~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~☆\n");
while(1)
{
printf("请输入年份:");
scanf("%d",&year);
if(year>0)
break;
else
{
printf("\n");
printf("你输入的年份有误,请重新输入\n"); } }
printf("\n");
while(1)
{
printf("请输入月份:");
scanf("%d",&month);
if(month>=1&&month<=12)
break;
else
{
printf("\n");
printf("你输入的月份有误,请重新输入\n"); } }
getday(year,month);
}
void getday(int year,int month)
{
int week; //星期几
int nowday=0; //该月前的总天数
long allday; //从公元1年起的总天数
int dayofmonth[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(year%4==0&&year%100!=0||year%400==0)
dayofmonth[2]=29;
for(int m=0;m {
nowday=nowday+dayofmonth[m];
}
allday=nowday+year*365+year/4-year/100+year/400; //公元一年到现在用了多少天
week=allday%7; //求出这个月第一天是星期几
printf(" %d 年 %d 月\n",year,month);
printf("日 一 二 三 四 五 六\n");
for(int j=0;j {
printf(" ");
}
for(int i=1;i<=dayofmonth[month];i++)
{
if(week==7)
{
printf("\n");
week=0; }
printf("%2d ",i);
week++; }
printf("\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
}
void main()
{
char a;
welcome();
while(1)
{
shuru();
printf("你还需要继续吗?");
fflush(stdin); //清空输入缓冲区,避免缓冲区内残存读取函数无法取走的内容!
scanf("%c",&a);
if(a=='n')
break;
}
end();
}
这个万年历比较好看哈!你可以试试这个?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯