本篇文章给大家谈谈日历系统c语言,以及年历c语言对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、用C语言编写一份日历系统2、如何用C语言编写一个万年历系统?3、怎样用C语言设计一个日历系统
用C语言编写一份日历系统
这个就是计算每年的第一天和每个月的第一天是周几的问题。显示很简单
计算每年第一天是周几
int yy(int ye)
{
int y=ye%400; //400年一轮回,你可以计算一下400年的所有天数刚好是7的倍数
int day=y-1; //一年365天,364是7的倍数,那么一年多出一天
for(i=0;iy;i++) //这里是加上闰年的一天
if(y%4==0y%100!=0)
day+=1;
return day%7;
}
定义一个数组
int c[12]={31,28,31,30,31,30,31,31,30,31,30,31}
if(y%4==0y%100!=0y%400==0) //判断闰年的公式,我忘记了,呵呵
c[1]=29;
else
c[1]=28;
这里用来存储每个月的天数。可以使全局数组,这样的话就是改变2月份的天数而已
要是打印一年的日历,不需要计算每个月的第一天是周几,要是打印单独的月份,需要计算
可以用一个全局数组来存储
int z[12];
void yue(int ye,int k)
{
int y=ye%400,i;
if(y%4==0y%100!=0)
c[1]=29;
for(i=1;i12;i++)
z[i]=(k+c[i-1])%7;
}
打印很简单
void pr(int k)
{
int i
}
如何用C语言编写一个万年历系统?
#include stdio.h
int day,year,month;
int isLeap()
{int isleap;
if(((year%4==0)!(year%100==0))||(year%400==0))isleap=1;
else isleap=0;
return isleap;}
int lastdayofmonth()
{int lastday,isleap;
switch (month)
{case 1: case 3: case 5: case 7:case 8: case 10: case 12: lastday=31;break;
case 4: case 6: case 9: case 11: lastday=30;break;
case 2: {isleap=isLeap();
if (isleap==1) lastday=29;
else lastday=28;}}
return lastday;}
int ValidDate()
{int valid;
int yearOK,monthOK,dayOK;
if ((year1811)(year=2012)) yearOK=1;
else yearOK=0;
if ((month0)(month=12)) monthOK=1;
else monthOK=0;
if ((day0)(day=lastdayofmonth())) dayOK=1;
else dayOK=0;
if(yearOK monthOK dayOK) valid=1;
else valid=0;
return valid;}
int getday(){printf(“Enter a month/a day/a year”);scanf(“%d %d %d”,month,day,year);
return ValidDate();}
void incrementdate()
{if (daylastdayofmonth()) day+=1;
else
{day=1;
if (month==12)
{month=1;year+=1;}
else month+=1;}}
void print()
if (ValidDate())printf(“nextday is %d/%d/%d”,month,day,year);elseprintf(“Date error”);}
void main(){getday();incrementdate();print();}
补充一下,又发现一个问题。输入之后虽然你做了输入检查,但是现在的写法,这个检查起不到任何作用。可以把main里的getday();改写成if(getday()==0){printf(“Date error”);return;}意思是如果输入的日期不正常的话打出出错信息并结束程序
主要功能包括
1.查询某年某月每一天对应星期几
2.可以查询某年某月的上个月或是下个月的日历情报
3.查询某年某月某日是这一年的第几天,并查询改天是星期几
4.判断该年是闰年还是平年,判断这一年的生肖
#include stdio.h
#include conio.h
#include dos.h
void rili(int,int);
int runniansub(int);
int week(int,int,int);
int monthday[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{ struct date d;
getdate(d);
printf(“今天是:%d年 %d月 %d日\n”,d.da_year,d.da_mon,d.da_day);
rili(d.da_year,d.da_mon-1);
system(“pause”);
return 0; }
void rili(int year,int month)
{ int d,w,i,s,c,p;
char x;
while(month11) {
month-=12;
year++; }
while(month0) { year–;
month+=12; }
if(runniansub(year)) monthday[1]=29;
printf(“%d年%d月\n”,year,month+1);
printf(“S M T W T F S\n”);
s=week(year,month+1,1);
for(i=0; i3*s; i++ ) printf(” “);
c=s;
for(d=1;d=monthday[month];d++) {
if(c6) {
printf(“\n”);
c=0; }
c++;
printf(“%d”,d);
printf(“%s”,(d10)?” “:” “); }
printf(“\n”);
printf(“下月N,上月P,退出Q”);
x=getch();
printf(“%c\n”,x);
if(x==’N’ || x==’n’) { rili(year,month+1); }
else if(x==’P’ || x==’p’) { rili(year,month-1); }
else { printf(“感谢使用!88\n”); return;} }
int runniansub(int year)
{ return ((year%4==0 year%100!=0) || (year%4==0 year%400==0)); }
int week(int y,int m,int d)
{ if((m==1)||(m==2)) {
m+=12;
y–; }
return ((d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)+1)%7;
#include stdio.h
int IsLeapYear(int); /*定义子函数*/
main()
{int i,day,year,temp,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(“We know that 2000.01.01 is saturday!\n”);
printf(“Please enter the year and month:”); /*提示信息*/
while(1)
{scanf(“%d %d”,year,temp);
if(getchar()==’q’)
exit(0);
while(Year_Start year)
{ if(IsLeapYear(Year_Start)) /*调用IsLeapYear函数判断是否为
闰年*/
Per_Year_Days=366; /*闰年一年366天*/
else
Per_Year_Days=365; /*平年一年365天*/
Year_days=Year_days + Per_Year_Days;
Year_Start++;
} /*输出每个月的日历*/
// for(temp=1;temp=12;temp++)
{switch(temp)
{ 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(“Auguest (%d) \n”,year); break;
case 9: printf(“September (%d) \n”,year);break;
case 10:printf(“October (%d) \n”,year);break;
case 11:printf(“Novermber (%d) \n”,year); break;
case 12:printf(“December (%d) \n”,year); break;
default:printf(“error\n”);
}
i=Year_days%7;
printf(“Mon Tue Wed Thu Fri Sat Sun\n”); /*星期提示信息*/
if(i!=0)
for(temp_i=0;temp_ii;temp_i++)
printf(” “);
day=1;
if(IsLeapYear(year)temp==2)
while(day=month_day[12])
{if(day1)
if(Year_days%7==0)
printf(“\n”);
if(day=10)
printf(“%d “,day);
else
printf(“%d “,day);
Year_days++;
day++;}
else
while(day=month_day[temp-1])
{ if(day1)
if(Year_days%7==0)
printf(“\n”);
if(day=10)
printf(“%d “,day);
else
printf(“%d “,day);
Year_days++;
day++; } /*依次输入日期*/
printf(“\n”) ;}}}
int IsLeapYear(int year) /*判断是否是闰年*/
{ if((year%4==0)(year%100!=0)||(year%400==0))
return 1;
else
return 0;}}
#include stdio.h
int leap (int year)
{if(year%4==0year%100!=0||year%400==0) //判断是否是闰年
return 1;
else return 0; }
int days_month (int month,int year) //判断大月和小月
{ if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) //找出大月
return 31;
if(month==4||month==6||month==9||month==11) //找出小月
return 30;
if(month==2leap(year)==1) return 29; //判断二月是29天还是29天
else return 28; }
int firstday(int month,int year)
{int w;
w=(1+2*month+3*(month+1)/5+year+year/4+year/400-year/100)%7+1; //判断每个月开始的第一天是星期几
return w; }
main()
{int i,j=1,k=1,a,b,month,year;
printf(“\n input month and year:\n”);
scanf(“%d%d”,month,year); //输入月和年
b=days_month(month,year);
a=firstday (month,year);
printf(” Sun Mon Tue Wed Thu Fri Sat \n”); //输出对应当月的日历
if(a==7)
{for(i=1;i=b;i++)
{printf(“%4d”,i);
if(i%7==0)
{printf(“\n”); } } }
if(a!=7)
{while (j=4*a)
{printf(” “);
j++; }
for(i=1;i=b;i++)
{printf(“%4d”,i);
if(i==7*k-a)
{printf(“\n”);
k++; } } }
printf(“\n”); }
怎样用C语言设计一个日历系统
刚回答了一个别人的问题,和你的题目是一样的,有源程序,要的是注释,我加上了注释,现在把它给你。
#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}; //每个月的天数,最后一个是闰年2月
printf(“Please enter the year: “);
scanf(“%d”,year); //输入年份
while(Year_Start year) //计算从公元1年1月1日到你所查询年份前一年的天数,是为了以后确定这一年的第一天是星期几
{
if( IsLeapYear( Year_Start ) ) //确定一年的天数,闰年为366天,一般为365天
Per_Year_Days = 366;
else
Per_Year_Days = 365;
Year_days = Year_days + Per_Year_Days;
Year_Start++;
}
for( temp = 1; temp =12; temp++ ) //循环输出每个月的日历
{
switch( temp )
{
case 1:
printf(” January(%d)\n”,year); //如 January(2008)
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; //计算这个月第一天是星期几
printf(“Mon Tue Wed Thu Fri Sat Sun\n”);
if( i != 0 )
for( temp_i = 0; temp_i i; temp_i++) //第一天不是星期一,在前面补空格,本来的空格少了,我加了两个
printf(” “);
day = 1;
if( IsLeapYear(year) temp == 2) //闰年的2月
while( day = month_day[12] )
{
if( day 1 )
if( Year_days % 7 == 0 ) //如果不是1号且昨天是星期天,输入回车, 换行
printf(“\n”);
if( day = 10 ) //如果大于或等于10号则输出日期并加2个空格,小于10号输出日期并加3个空格
printf(“%d “,day); //开始没想到这几行是干嘛用的,只要一个输出就好嘛,后来才想到是用来调整格式的
else //只是他并没有调整好,我做了下修改,现在很整齐了
printf(“%d “,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 “,day);
else
printf(“%d “,day);
Year_days++;
day++;
}
printf(“\n”);
if( getch() == ‘q’ ) //输入q退出程序
exit(0);
}
getch();
}
int IsLeapYear( int year ) //判断是否为闰年
{
if ((year %4 == 0) (year % 100 != 0) || //年份能被4整除且不能被100整除 或者 能被400整除的为闰年
(year % 400 == 0) )
return 1;
else
return 0;
}
关于日历系统c语言和年历c语言的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。