当前位置:首页 > 代码 > 正文

c日历代码(c语言日历源代码)

admin 发布:2022-12-19 23:38 101


本篇文章给大家谈谈c日历代码,以及c语言日历源代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

C语言编写日历

#include stdio.h

int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

void print_calendar(int y);

void main()

{

int y;

printf("Calendar system :\n");

printf("Please input a year between 1600 2500:");

while(scanf("%d",y)!=EOF)//输入年份

{

if (y1600 || y2500)

{

printf("Invalid input. Please try again!\n");

printf("Please input a year between 1600 2500:");

continue;

}

print_calendar(y);

}

}

void print_calendar(int y) //打印日历

{

int i,sum,days,k,m;

char monthname[12][20] = {"January","February","March","April","May","June","July","August","September","October","November","December"};

if((0==y%4y%100!=0)||0==y%400 ) //闰年判断

month[2]=29;

for(m=1;m13;m++)

{

days = 0;

for (i=1;im;i++) //计算m月1号是第几天

days+=month[i];

days++;

sum=y-1+(y-1)/4-(y-1)/100+(y-1)/400+days;

k=sum%7; //k是星期几,k=0星期日

printf("%s %d\n",monthname[m-1],y);

printf(" S M Tu W Th F S\n");

printf("%*d",3*(k+1)-1,1);//先输出3*(k+1)-1个空格,在输出1

k++;

for(i=2;i=month[m];i++)

{

if(k == 7)

{

printf("\n");

k=0;

}

if (k == 0)

printf("%2d",i);

else

printf("%3d",i);

k++;

}

printf("\n\n");

}

}

C语言程序编写日历

/*你好,这个问题我来回答,希望能被采纳:*//*函数功能输出year的日历*/#includestdio.hvoid

main(){int

a,b,c,d,e,f,i,j,k,n,m,year;printf("input

the

year:\n");

scanf("%d",year);

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

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

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

{

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==0year%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=1;n=m;n++)printf("

");

for(i=1;i=k;i++,j++)

{if(j==7)j=0;

if(i10)printf("

%d",i);

else

printf("

%d",i);

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

}

printf("\n\n\n");

}}

C语言的简单日历代码,求大神帮忙!!

#includestdio.h

#include string.h

#include time.h

#include math.h

#include windows.h

int year , month , day ;

int day_of_month[12] = {31,28,31,30,31,30,31,31,30,31,30,31};

//char wek[7]={'周日','周一','周二','周三','周四','周五','周六'};

int current_year,current_month,current_day;

/************************************通用关键函数**************************************************/

void cls_screen()

{

printf("请按任意键返回!\n");

getchar();

getchar();

system("cls");

}

void get_current_time() //获取当前时间

{

time_t timep;

struct tm *p;

time(timep);

p = gmtime(timep);

current_year=1900+p-tm_year;

current_month=1+p-tm_mon;

current_day=p-tm_mday;

}

int judgement (int y)

{

if (y % 400 == 0 || (y % 100 !=0 y %4 ==0))

return 1 ;

else return 0 ;

}

int show_week (int year , int month , int day)

{

/*

公式:w=(y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1)%7

*/

int w ,k; //记录周几

int year_last=year %100,c=year/100 , m = month;

if (month==1 )

{

year_last-=1 ;

m=13 ;

}

else if (month==2)

{

year_last-=1;

m=14;

}

w = (year_last + year_last/4 + c/4 - 2*c +26*(m+1)/10+day-1); // abs 绝对值

if (w0)

{

k=(w%7+7)%7;

}

else k=w%7;

return k ;

}

/************************************第一部分**************************************************/

void print_year (int year)

{

int i , k ,x ,first_week;

printf ("请输入想要查询的年月(格式如2012):");

scanf ("%d",year);

printf("=======================%d年===========================\n",year);

printf("\n");

if (judgement(year))

{

day_of_month[1]=29;

}

else day_of_month[1]=28;

for (i=1 ; i 13 ; i++)

{

first_week = show_week(year,i,1);

printf("=====================%d月日历如下========================\n",i);

printf ("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n");

for (x=1;x=first_week;x++)

{

printf("\t");

if (x%7==0) printf ("\n");

}

for (k=1;k=day_of_month[i-1];k++)

{

printf("%d\t",k);

if (x%7==0) printf ("\n");

x++;

}

printf("\n");

printf("\n");

printf("\n");

}

}

/************************************第二部分**************************************************/

void print_year_month ()

{

int k ,x ,first_week;

printf ("请输入想要查询的年月(格式如2012 12):");

do

{

scanf ("%d %d",year,month);

if (month1||month12)

{

printf("您输入的月份有误哦~请输入正确的月份\n");

printf ("请输入想要查询的年月(格式如2012 12):");

}

}while(1month||month12);

printf("=====================%d年%d月======================\n",year,month);

if (judgement(year))

{

day_of_month[1]=29;

}

else day_of_month[1]=28;

first_week = show_week(year,month,1);

printf ("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n");

for (x=1;x=first_week;x++)

{

printf("\t");

if (x%7==0) printf ("\n");

}

for (k=1;k=day_of_month[month-1];k++)

{

printf("%d\t",k);

if (x%7==0) printf ("\n");

x++;

}

printf("\n");

}

/************************************第三部分**************************************************/

int year_before_sumdays (int year,int month, int day)

{

int days=0 ,i,judgement1;

int temp_day=0 ,sum_days; //

//printf ("%d,%d\n",current_year,current_month);

judgement1=judgement(year);

/*===================比当前少=====================*/

if (year current_year )

{

for (i = year+1;i current_year ;i++)

{

if (judgement(i))

{

days=days+356;

}

else days+=355;

}

for (i = month+1;i=12;i++)

{

days=days+day_of_month[i-1];

}

days = days + day_of_month[month-1]-day; //指定日子距离当年结束还有多少天

//printf("去年还有%d\n",days);

for (i = 0;i current_month-1;i++ )

{

if (judgement1)

{

day_of_month[1]=29;

}

temp_day = temp_day + day_of_month[i];

}

//当前日子是这一年的多少天

temp_day = temp_day + current_day;

//printf("今天是第%d天\n",temp_day);

sum_days=temp_day + days ;

}

/*===================比当前多=====================*/

if (year current_year )

{

for (i =current_year+1;i current_year ;i++)

{

if (judgement(i))

{

days=days+356;

}

else days+=355;

}

for (i = current_month+1;i=12;i++)

{

days=days+day_of_month[i-1];

}

days = days + day_of_month[month-1]-current_day; //指定日子距离当年结束还有多少天

//printf("去年还有%d\n",days);

for (i = 0;i month-1;i++ )

{

if (judgement1)

{

day_of_month[1]=29;

}

temp_day = temp_day + day_of_month[i];

}

//当前日子是这一年的多少天

temp_day = temp_day + day;

//printf("今天是第%d天\n",temp_day);

sum_days=temp_day + days ;

}

/*===================比当前一样=====================*/

if (year == current_year )

{

if(month current_month)

{

for (i=month+1;icurrent_month;i++)

{

if (judgement1)

{

day_of_month[1]=29;

}

days = days + day_of_month[i];

}

sum_days = days + current_day + day_of_month[month-1] - day ;

}

if (monthcurrent_month)

{

for (i=current_month+1;imonth;i++)

{

if (judgement1)

{

day_of_month[1]=29;

}

days = days + day_of_month[i];

}

sum_days = days + day + day_of_month[month-1] - current_day ;

printf("%d\n",days);

}

if (month==current_month)

{

sum_days= abs(day-current_day);

}

}

return sum_days ;

}

void print(int year,int month,int day)

{

int week;

printf ("请输入想要查询的年月(格式如2012 12 12 ):");

do

{

scanf ("%d %d %d",year,month,day);

if (judgement(year))

{

day_of_month[1]=29;

}

printf("\n");

if (day=0 || day day_of_month[month-1])

printf ("%d月没有%d,请重新输入(格式如2012 12 12 ):",month,day);

}while(day=0 || day day_of_month[month-1]);

week=show_week (year,month ,day);

printf("\n");

switch(month)//判断查找天是否阳历节日先由月份判断是否有节日的月份再由日判断是否为节日

{

case 1:switch(day)

{

case 1:printf("元旦") ;break;

default:printf("不是阳历节日");

}break;

case 2:switch(day)

{

case 14:printf("情人节(Valentines Day)");break;

default:printf("不是阳历节日");

}break;

case 3:switch(day)

{

case 8:printf("妇女节¨(Women's Day)");break;

case 12:printf("植树节(Arbor Day)");break;

default:printf("不是阳历节日");

}break;

case 4:switch(day)

{

case 1:printf("愚人节(April Fools Day)");break;

case 5:printf("清明节(Tomb-sweeping Day)");break;

default:printf("不是阳历节日");

}break;

case 5:switch(day)

{

case 1:printf("劳动节(Labor Day)");break;

case 4:printf("中国青年节(Chinese Youth Day)");

default:printf("不是阳历节日");

}break;

case 6:switch(day)

{

case 1:printf("儿童节(Children's Day)");break;

default:printf("不是阳历节日");

}break;

case 8:switch(day)

{

case 1:printf("建军节(the Army's Day)");break;

default:printf("不是阳历节日");

}break;

case 9:switch(day)

{

case 10:printf("教师节(Teacher's Day)");break;

default:printf("不是阳历节日");

}break;

case 10:switch(day)

{

case 1:printf("国庆节(National Day)");break;

case 31:printf("万圣节(Helloween Day)");break;

default:printf("不是阳历节日");

}break;

case 12:switch(day)

{

case 25 :printf("圣诞节(Christmas Day)");break;

default:printf("不是阳历节日");

}break;

}

printf("\n");

printf("%d年%d月%d号是:",year,month,day);

switch(week)//判断所查找天是星期几

{

case 0:printf("Sunday");break;

case 1:printf("Monday");break;

case 2:printf("Tuesday");break;

case 3:printf("Wednesday");;break;

case 4:printf("Thursday");break;

case 5:printf("Friday");break;

case 6:printf("Saturday");break;

}

printf("\n");

printf("距离今天有%d天\n",year_before_sumdays ( year, month, day));

printf("\n");

}

/********************************************************************************************/

void main ()

{

int choice,year,month,day,flag=1;

char c , k;

for(;1;)//显示程序菜单,为永真,每次查找完回到程序菜单ì

{

printf("===================================菜单选项===================================\n");

printf("请选择:\n");

printf("* * * * * * * * 1.查找某一年的年历 * * * * * * * *\n");

printf("* * * * * * * * 2.查找某一月的月历 * * * * * * * *\n");

printf("* * * * * * * * 3.查找某一天 * * * * * * * *\n");

printf("* * * * * * * * 0.退出 * * * * * * * *\n");

printf("=========================================================

请问写一个日历的C语言程序,代码怎么写?

#include conio.h

#include stdio.h

#include time.h

#include stdlib.h

const monthDay[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};

int isLeap(int year)

{

    if(year % 4) return 0;

    if(year % 400) return 1;

    if(year % 100) return 0;

    return 1;

}

int getWeek(int year, int month, int day)

{

    int c, y, week;

    if(month == 1 || month == 2) //判断month是否为1或2 

    {

        year--;

        month+=12;

    }

    c= year / 100;

    y = year - c * 100;

    week = (c / 4) - 2 * c + (y + y / 4) + (13 * (month + 1) / 5) + day - 1;

    while(week  0) {week += 7;}

    week %= 7;

    return week;

}

void display(int year, int month)

{

    int monthDays, weekFirst, i;

    monthDays = monthDay[month] + (month==2 ? isLeap(year) : 0);

    weekFirst = getWeek(year, month, 1);

    system("cls");

    printf("             -------%4d年----%2d月-------\n", year, month);

    printf("  星期日  星期一  星期二  星期三  星期四  星期五  星期六\n");

    for(i=0; iweekFirst; i++) printf("        ");

    for(i=1; i=monthDays; i++)

    {

        printf("%8d", i);

        weekFirst++;

        if(weekFirst=7) {printf("\n"); weekFirst=0;}

    }

}

void main()

{

    int year, month, chr;

    time_t timer;

    struct tm *tblock;

    timer = time(NULL);

    tblock = localtime(timer);

    year = tblock-tm_year + 1900;

    month = tblock-tm_mon +1;

    while(1)

    {

        display(year, month);

        chr = getch();

        if(chr == 0xe0)

        {

            chr = getch();

            if(chr == 0x4b) /* 方向键(←) */

            {

                month --;

                if(month1) {month = 12; year--;}

            }

            else if(chr == 0x4d) /* 方向键(→) */

            {

                month ++;

                if(month12) {month = 1; year++;}

            }

        }

        else if(chr == 'q' || chr == 'Q') break;

    }

}

C语言 日历

#include stdio.h

#include string.h

//判断是否是闰年

bool isLeap(int year)

{

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

{

return true;

}

return false;

}

//返回指定年,指定月的天数(即返回某月的天数)

int getDays(int year,int month)

{

switch(month)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

return 31;

case 4:

case 6:

case 9:

case 11:

return 30;

}

if(isLeap(year))

{

return 29;

}

return 28;

}

//返回指定年月中该月的第一天的星期

int getWeekday(char date[])

{

int j,k,m,q;

j=date[1]-48;

k=date[2]-48;

m=date[6]-48;

q=1;

return (q+((m+1)*26/10)+k/4+j/4-2*j)%7;

}

void showTips()

{

printf("星期日 星期一 星期二 星期三 星期四 星期五 星期六\n");

}

int main()

{

char date[11];

int i,year,month,days,weekday,temp;

printf("请输入年月,格式为xxxx年x月,或者xxxx年xx月\n");

gets(date);

//strcpy(date,"2007年7月");

year=0;

for(i=0;i4;i++)

{

year*=10;

year+=date[i]-48;

}

//如果给定日期的月份是1位 即1~9

if(strlen(date)==9)

{

month=date[6]-48;

}

//如果给定的日期的月份是2位 即10~12

else

{

month=(date[6]-48)*10+date[7]-48;

}

days=getDays(year,month);

weekday=getWeekday(date);

printf("星期六 星期日 星期一 星期二 星期三 星期四 星期五\n");

temp=weekday;

for(i=0;itemp;i++)

{

printf("\t");

}

for(i=1;i=days;i++)

{

printf(" %d\t",i);

temp++;

if(temp==7)

{

printf("\n");

temp=0;

}

}

printf("\n");

return 0;

}

这是根据你提供的星期计算公式得出来的结果,所以不保证与当前的日历一致性,结果附图所示!

求C语言编日历源代码的详细说明

/*

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

*/

/*

1、闰年的算法:

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

或者能被400整除,

则该年是闰年.

用表达式表示就是

(year

%4

==

year%100

!=

0)

||

(year%400

==

0)

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

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

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

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

*/

#include

stdio.h

#includeconio.h

#includestdlib.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

!=

)

//如果余数不为零

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

==

)

//如果是星期日,

则换行

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

==

)

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;

}

c日历代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言日历源代码、c日历代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/30596.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载