C语言“打印日历”的程序是什么?

C语言“打印日历”的程序是什么?,第1张

#include \x0d\x0avoid main() \x0d\x0a{ \x0d\x0aint i,j,k,year,week\x0d\x0aint day[]={31,28,31,30,31,30,31,31,30,31,30,31}\x0d\x0achar month[12][10]={"January","February","March","April","May","June","July","August","September","October","November","December"}\x0d\x0a\x0d\x0aprintf("Input year you want to print:")\x0d\x0ascanf("%d",&year)\x0d\x0a\x0d\x0aif((year%4==0&&year%100!=0)||(year%400==0)) day[1]++//携宏物判断是否闰年辩液\x0d\x0aweek=(35+year+year/4-year/100+year/400)%7//计算绝衡当年的1月1日是周几的公式 \x0d\x0a\x0d\x0afor(i=0i=7) \x0d\x0a{ \x0d\x0aprintf("\n")\x0d\x0aweek=week%7\x0d\x0a} \x0d\x0a} \x0d\x0aprintf("\n")\x0d\x0a} \x0d\x0a}

/*

稍微改了下对齐格式,加了注释

*/

/*

1、闰年的算法:

如果某年能被4整除但不能游则敏被100整除,

或者能被400整除,

则该年是闰年.

用表达式表示就是

(year

%4

==

0

&&

year%100

!=

0)

||

(year%400

==

0)

2、计算某一天是星期几:

已知1900年的1月1号为神枝星期一,

然后就可以用某一天和1900年的1月1号相差的天数对7取余来求星期,

本题是用盯喊的公元1年的1月1号作为基准

*/

#include

<stdio.h>

#include<conio.h>

#include<stdlib.h>

int

IsLeapYear(int)

//函数定义

void

main()

{

int

i

int

day

int

year

int

temp

int

temp_i

long

int

Year_days

=

0

int

Year_Start

=

1

int

Per_Year_Days

int

month_day[]={31,28,31,30,31,30,31,31,30,31,30,31,29}

printf("Please

enter

the

year:

")

scanf("%d",&year)

//输入年份

while(Year_Start

<

year)

//从公元1年开始执行while循环,

该年的一月一号为星期一

{

if(

IsLeapYear(

Year_Start

)

)

Per_Year_Days

=

366

//如果是闰年,

则一年有366天

else

Per_Year_Days

=

365

//如果不是闰年,

则一年有365天

Year_days

=

Year_days

+

Per_Year_Days

//Year_days为从公元1年到输入年份的前一年的天数的总和

Year_Start++

}

for(

temp

=

1

temp

<=12

temp++

)

//temp从1到12,

对应一年内12个月

{

switch(

temp

)

//用switch语句将temp和12个月对应起来

{

case

1:

printf("

January(%d)\n",year)

//一月

break

case

2:

printf("

February(%d)\n",year)

//二月

break

case

3:

printf("

March(%d)\n",year)

//三月

break

case

4:

printf("

April(%d)\n",year)

//四月

break

case

5:

printf("

May(%d)\n",year)

//五月

break

case

6:

printf("

June(%d)\n",year)

//六月

break

case

7:

printf("

July(%d)\n",year)

//七月

break

case

8:

printf("

August(%d)\n",year)

//八月

break

case

9:

printf("

September(%d)\n",year)

//九月

break

case

10:

printf("

October(%d)\n",year)

//十月

break

case

11:

printf("

November(%d)\n",year)

//十一月

break

case

12:

printf("

December(%d)\n",year)

//十二月

break

}

i

=

Year_days

%

7

//每个星期有7天,

故用每年的天数对7取余

printf("Mon\tTue\tWed\tThu\tFri\tSat\tSun\n")

if(

i

!=

0

)

//如果余数不为零

for(

temp_i

=

0

temp_i

<

i

temp_i++)

printf("\t")

//则打印空格(这里用\t代替空格,

更加美观),

空格数为i

day

=

1

//初始化day为1,

为下面的while循环做准备

if(

IsLeapYear(year)

&&

temp

==

2)

//如果输入的年份是闰年,

并且月份为2

while(

day

<=

month_day[12]

)

//day为一循环变量,

取值为1-365(闰年的话为1-366)

{

if(

day

>1

)

//如果天数大于一

if(

Year_days

%

7

==

0

)

//如果是星期日,

则换行

printf("\n")

if(

day

>=

10

)

printf("%d\t",day)

//打印天数+空格

else

printf("%d\t",day)

Year_days++

day++

}

else

//如果不满足"输入的年份是闰年,

并且月份为2"

while

(day

<=

month_day[temp-1])

{

if(

day

>

1

)

if(

Year_days

%

7

==

0

)

printf("\n")

if(

day

>=10

)

printf("%d\t",day)

else

printf("%d\t",day)

Year_days++

day++

}

printf("\n")

if(

getch()

==

'q'

)

//如果输入为q,

则退出程序

exit(0)

}

getch()

//每按一次键,

打印一个月份

}

int

IsLeapYear(

int

year

)

{

//判断是否是闰年,

是则返回1,

否则返回0

if

((year

%4

==

0)

&&

(year

%

100

!=

0)

||

(year

%

400

==

0)

)

return

1

else

return

0

}

/*你好,这个问斗辩弯题我来回答,希望能被采纳:*//*函数功能输出year的日历*/#include<stdio.h>void

main(){int

a,b,c,d,e,f,i,j,k,n,m,yearprintf("input

the

year:\n")

scanf("%d",&year)

//输入数据的初始化;b=yearc=year%4d=year/4e=d*1461+c*365f=e%7j=f

//初始化Year年的第一天的星期m=jprintf("***%d年的日历***\n",year)for(a=1a<=12a++)

//函数的主要部分,主要实现日历的打印部分

{

if(a==1||a==3||a==5||a==7||a==8||a==10||a==12)k=31

else

if(a==4||a==6||a==9||a==11)k=30

else

if((year%4==0&&year%100!=0)||(year%400==0))k=29

else

k=28

printf("%d月份\n

STAT

SUN

MON

TUE

WED

THUR

FRI\n",a)

m=j

if(m<空闷=5)m=m+1

else

m=m-6

for(n=1n<=mn++)printf("

")

for(i=1i<=ki++,j++)

{if(j==7)j=0

if(i<10)printf("

%d"灶败,i)

else

printf("

%d",i)

if(j==5)printf("\n")

}

printf("\n\n\n")

}}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12508008.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存