用C语言编写万年历
1、输入年份,判断是否为闰年
2、输入年月日,判断改日为星期几
3、输入年份,打出12个月历,输入月份,打出该月的日历
4、要求用多个函数实现
可发邮箱[email protected]
可以加分
C语言做万年历
答案:2 悬赏:20
解决时间 2021-02-28 16:52
- 提问者网友:前事回音
- 2021-02-28 07:24
最佳答案
- 二级知识专家网友:冷眼_看世界
- 2021-02-28 07:35
你想问啥??是不是打印日期的时候与其星期数不符?
我运行了一下,格式挺不错啊,就是你的星期数好像算的不太对
#include
void main()
{
int y,m,d,week,k=0,d,i,j,t;
int y1;//用于年数计算
printf("请输入年份\n");
scanf("%d",&y);
if(y%4==0&&y%100!=0||y%400==0)
d=29;
else d=28;
for (t=1;t<=12;t++)
{
printf(" %d月 \n",t);
printf("星期一 星期二 星期三 星期四 星期五 星期六 星期日\n");
switch(t)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: d=31;break;
case 9:
case 4:
case 6:
case 11: d=30;break;
default: d=d;
}
m=t;
if(m==1||m==2)
{
m=m+12;
y1=y-1;//-----------------小心你的y值
}
else
y1=y;
week=(2+2*m+3*(m+1)/5+y1+y1/4-y1/100+y1/400)%7;
if(week==0) week=7;
for(i=1;i
for(i=1;i<=8-week;i++)
printf("%4d ",i);
printf("\n");
k=0;//-----------------k值初始为0
for(j=9-week;j<=d;j++)
{
printf("%4d ",j);
k=k+1; if(k%7==0) printf("\n");
}
printf("\n\n\n");
}
printf("\n");
}
全部回答
- 1楼网友:统治我的世界
- 2021-02-28 08:15
#include <stdio.h>
int jisuan(int year,int month);
int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
void display(int day,int month)
{
int i;
printf(" %d月 \n",month);
printf("日 一 二 三 四 五 六 \n");
for(i=0;i<day;i++)
{
printf(" ");
}
for(i=1;i<=days[month-1];i++,day++)
{
if(i<=9)
{
printf(" ");
}
printf("%d ",i);
if(day%7==6)
{
printf("\n");
}
}
printf("\n********************\n");
}
void control(int set)
{
int year,month=1,day_1,i,m;
switch(set)
{
case 1:
{
printf("输入你想查询的年代?\n");
scanf("%d",&year);
for(i=1;i<=12;i++)
{
day_1=jisuan(year,month);
display(day_1,month++);
}
break;
}
case 2:
{
printf("输入你想查询的年代?\n");
scanf("%d",&year);
printf("输入你想知道的月份?\n");
scanf("%d",&month);
day_1=jisuan(year,month);
display(day_1,month);
break;
}
case 3:
{
printf("输入你想查询的年代?\n");
scanf("%d",&year);
if(year%4==0&&year%100!=0||year%100==0&&year%400==0)
{
printf("本年是闰年!!!!\n");
//days[1]+=1;
}
break;
}
case 4:
{
printf("输入你想查询的年代?\n");
scanf("%d",&year);
printf("输入你想知道的月份?\n");
scanf("%d",&month);
printf("输入你想知道的日子?\n");
scanf("%d",&m);
day_1=jisuan(year,month);
printf("该日为星期%d\n",(day_1+m)%7);
break;
}
default:break;
}
}
main()
{
int setting;
printf("您需要做什么操作?\n");
printf("1、打印年历\n");
printf("2、打印月历\n");
printf("3、判断是否为闰年\n");
printf("4、判断该日为星期几\n");
printf("请按数字选择(1-4)?\n");
scanf("%d",&setting);
control(setting);
}
int jisuan(int year,int month)
{
int zong_day=0,temp,t,i;
if(year%4==0&&year%100!=0||year%100==0&&year%400==0)
{
days[1]+=1;
}
for(i=0;i<month-1;i++)
{
zong_day+=days[i];
}
temp=year-1+(year-1)/4+(year-1)/400+(year-1)/100+zong_day+1;
t=temp%7;
return t;
}
大致是这样的,应该不会太难理解吧,求加分!!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯