当前位置:首页 » 编程语言 » c语言年历显示

c语言年历显示

发布时间: 2022-07-14 00:36:43

c语言课程设计,关于年历显示。下面是要求: (1) 输入一个年份,输出是在屏幕上显示该年的日历。假定输

#include<stdio.h>
int monthCode[12]={1,4,4,7,2,5,7,3,6,1,4,6};
int monthday[12]={31,28,31,30,31,30,31,31,30,31,30,31};
char monthname[12][20]={"Januray 1","February 2","March 3"," April 4","May 5","June 6","July 7","August 8",
"September 9","October 10","November 11","December 12"};
char weekname[7][10]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
int isLeapYear(int year); //是返回1,否则返回0;
int calcYear(int year);
int calcMonth(int month);
int calcDay(int day);
int calcweek(int year,int month,int day);
int main()
{
int i;
int j;
int k;
int inputyear;
int firstweek; //每个月份第一天,星期几。
int line =0;
scanf("%d",&inputyear);
if(isLeapYear(inputyear))
{
monthday[1]++;
}
printf("************** %d **************\n",inputyear);
for(i = 0;i<12;i++) //先一个月份一个月份的输出。
{
printf("\n===================================\n");
printf("%s\n",monthname[i]);
for(j = 0;j<7;j++)
{
printf("%5s",weekname[j]);
}
for(j =0;j<monthday[i];j++)
{
if(j == 0) //每个月份的第一天,第一行最难。
{
firstweek = calcweek(inputyear,i+1,j+1);
printf("\n");
for(k=0;k<firstweek;k++)
printf(" ");
printf("%5d",j+1);
line = firstweek+1;
}
else
{
if(line%7 == 0)
{
printf("\n");
}
printf("%5d",j+1);
line++;
}
}
}
return 0;
}
int isLeapYear(int year)
{
if((year%4 == 0 && year%100 !=0) || year%400 ==0)
{
return 1;
}
else
{
return 0;
}
}
int calcYear(int year)
{
int yushu;
int shangshu;
if(year == 2000)
{
return 4;
}
else if(year > 2000)
{
shangshu = (year - 2000)/4;
yushu = (year - 2000)%4;
return 4-2*shangshu+yushu+1;
}
else
{
shangshu = (2000 - year)/4;
yushu = (2000 - year)%4;
return 4+2*shangshu-yushu;
}
}
int calcMonth(int month)
{
return monthCode[month-1];
}
int calcDay(int day)
{
return day;
}
int calcweek(int year,int month,int day)
{
return (calcYear(year)+calcMonth(month)+calcDay(day))%7;
}

❷ C语言设计年历显示程序

你好!有一个类似的程序,部分满足要求

❸ C语言编写年历

只找到这个打印的,
你自己看看,

#include <stdio.h>
void main()
{
int i,j,k,year,week;
int day[]={31,28,31,30,31,30,31,31,30,31,30,31};
char month[12][10]={"January","February","March","April","May","June","July","August","September","October","November","December"};

printf("Input year you want to print:");
scanf("%d",&year);

if((year%4==0&&year%100!=0)||(year%400==0)) day[1]++; //判断是否闰年
week=(35+year+year/4-year/100+year/400)%7; //计算当年的1月1日是周几的公式

for(i=0;i<12;i++)
{
printf("\n%s\n",month[i]); //输出月份的英文
printf("Sun Mon Tue Wed Thu Fri Sat\n"); //输出表头
for(k=0;k<week;k++) printf(" "); //每月一号对齐它的星期数
for(j=1;j<=day[i];j++)
{
printf("%3d ",j);
if(++week>=7)
{
printf("\n");
week=week%7;
}
}
printf("\n");
}
}

❹ C语言万年历

PIC16F877A LCD1602液晶式万年历
默认分类 2011-03-23 23:27:51 阅读10 评论0   字号:大中小 订阅
#include<pic.h>#define uchar unsigned char#define uint  unsigned int#define RS RA1#define RW RA2#define E  RA3#define s1 RB1#define s2 RB2#define s3 RB3 __CONFIG(0x1832);int Hours=0;//定义小时int Minutes=0;//定义分钟int Seconds=0;//定义秒int Day=20;int Months=03;int Years=2011;const char Table[]="0123456789";   ////1602:0-9 数字uint Y[16]; //8字节的显示缓冲区uchar set_2=0;int incone(int n);int decone(int m);void delay(uint x)///延时 { uint a,b;  for(a=x;a>0;a--)   for(b=30;b>0;b--);   }
void interrupt time0 (){uchar temp,intnum;    T0IF=0;    TMR0=63;    intnum++;   if(intnum==40)     {   intnum=0;        Seconds++;  if(Seconds==60)    {   Seconds=0;   Minutes++;   if(Minutes==60)     {    Minutes=0;    Hours++;    if(Hours==24)      {     Hours=0;                    Day++;                  if(Day==31)                    {       Day=0;                      Months++;                                         if(Months==12)                       {                         Months=0;                         Years++;                       }                     }                 }                  }    }     }  }
void write_Directive(uchar a)//写指令{RS=0;RW=0;delay(1);E=0;PORTD=a;delay(1);E=1;delay(1);E=0;delay(1);}
void write_Data(uchar a)//写数据{RS=1;RW=0;delay(1);E=0;PORTD=a;delay(1);E=1;delay(1);E=0;delay(1);
}void init()//初始化{   ADCON1=0X07;  PORTB=0xFF;  TRISB=0XFF;  PORTC=0x00;  TRISC=0X00;  TRISD=0;  TRISA=0;  OPTION=0X06;  TMR0=63;  INTCON=0XA0;Y[14]=':';delay(15);write_Directive(0x38);delay(5);write_Directive(0x38);delay(5);write_Directive(0x38);write_Directive(0x01);write_Directive(0x02);//初始化后数据地址为0x80;即第一行,第一个位置write_Directive(0x0c);//不显示光标}
void write_Data_String()//显示时间函数{ Y[0]=Hours/10;//转换成10进制显示Y[1]=Hours%10;Y[2]=Minutes/10;Y[3]=Minutes%10;Y[4]=Seconds/10;Y[5]=Seconds%10;Y[6]=Years/1000;Y[7]=Years/100%10;Y[8]=Years/10%10;Y[9]=Years%10;//Y[6]=Years/1000;//Y[7]=Years%1000/100;//DispBuf[8]=Years%100/10;//DispBuf[9]=Years%10;Y[10]=Months/10;Y[11]=Months%10;Y[12]=Day/10;Y[13]=Day%10;Y[14]=':';Y[15]='.';Y[0]=Table[Y[0]];//查表取字符Y[1]=Table[Y[1]];Y[2]=Table[Y[2]];Y[3]=Table[Y[3]];Y[4]=Table[Y[4]];Y[5]=Table[Y[5]];Y[6]=Table[Y[6]];//查表取字符Y[7]=Table[Y[7]];Y[8]=Table[Y[8]];Y[9]=Table[Y[9]];Y[10]=Table[Y[10]];Y[11]=Table[Y[11]];Y[12]=Table[Y[12]];Y[13]=Table[Y[13]];write_Directive(0x80+0x04);//第一行,第五个位置地址
write_Data(Y[0]);//第一行,第五个位置write_Data(Y[1]);//第一行,第六个位置
write_Data(Y[14]);//第一行,第七个位置
write_Data(Y[2]);//第一行,第八个位置write_Data(Y[3]);//第一行,第九个位置
write_Data(Y[14]);//第一行,第十个位置
write_Data(Y[4]);//第一行,第十一个位置write_Data(Y[5]);//第一行,第十二个位置
write_Directive(0x80+0x43);//第二行,第四个位置地址
write_Data(Y[6]);//第二行,第四个位置write_Data(Y[7]);//第二行,第五个位置write_Data(Y[8]);//第二行,第六个位置write_Data(Y[9]);//第二行,第七个位置
write_Data(Y[15]);//第二行,第八个位置
write_Data(Y[10]);//第二行,第九个位置write_Data(Y[11]);//第二行,第十个位置
write_Data(Y[15]);//第二行,第十一个位置
write_Data(Y[12]);//第二行,第十二个位置write_Data(Y[13]);//第二行,第十三个位置}void key_set() //时间按键设置{if(s1 == 0){   delay(20);   if(s1 == 0)   {    set_2++;    while(!s1);    if(set_2 == 8)    {     set_2 = 0;    }   }}}void set_time()   //设置时间函数{   if(set_2==1)     {      RC0=1;     }      if(set_2==2)          ////s2即RB1按1次调秒     {     Seconds=incone(Seconds);     if(Seconds>59)      {       Seconds=0;      }    Seconds=decone(Seconds);    if(Seconds<0)      {       Seconds=59;      }      }    if(set_2==3)             ////s2即RB1按2次调分    {     Minutes=incone(Minutes);     if(Minutes>59)       {        Minutes=0;       }    Minutes=decone(Minutes);    if(Minutes<0)       {       Minutes=59;       }     }    if(set_2==4)             ////s2即RB1按3次调时   {    Hours=incone(Hours);    if(Hours>23)    {     Hours=0;    }    Hours=decone(Hours);    if(Hours<0)    {     Hours=23;    }   }       if(set_2==5)          ////s2即RB1按4次调天     {     Day=incone(Day);     if(Day>31)      {       Day=1;      }    Day=decone(Day);    if(Day<1)      {       Day=31;      }     }    if(set_2==6)             ////s2即RB1按4次调月    {     Months=incone(Months);     if(Months>12)       {        Months=1;       }    Months=decone(Months);    if(Months<1)       {        Months=12;       }     }    if(set_2==7)             ////s2即RB1按5次调年   {    Years=incone(Years);    if(Years>2050)    {     Years=1986;    }    Years=decone(Years);    if(Years<1986)    {     Years=2010;    }   }   }
int incone(int n)   //加“1”函数{ if(s2==0)  {    delay(20);   if(s2==0)   {    n++;     while(!s2);     write_Data_String();   }  }}
int decone(int m)    //减“1”函数{ if(s3==0) {   delay(20);   if(s3==0)   {    m--;    while(!s3);    write_Data_String();   } }}void main(){init();while(1)   {   key_set();   set_time();   write_Data_String();   }}

❺ 用c语言编写万年历,要求输出任意一年的某月,能显示出这个月的日历

1、首先要判断一个年份是闰年还是平年,用一个子程序来做。

❻ C语言程序设计;"已知2000年1月1日为星期六,请输入任一年的年份后,打印该年的年历" 怎么设计啊,速求老师

C语言程序如下:

#include<stdio.h>

#defineYES1/*定义符号常数“是”*/

#defineNO0/*定义符号常数“否”*/

/*函数isleap():判断某年是否闰年*/

intisleap(intyear)

{

intleap=NO;

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

leap=YES;

returnleap;

}

/*函数week_of_newyears_day():求元旦是星期几*/

intweek_of_newyears_day(intyear)

{

intn=year-1900;

n=n+(n-1)/4+1;

n=n%7;

returnn;

}

intmain(intargc,char*argv[])

{

intyear,month,day,weekday,len_of_month,i;

printf(" 请输入某年年份:");

scanf("%d",&year);

printf(" 请输入某年1月1日:");

scanf("%d",&weekday);

/*因为你的要求是已知2000年1月1日是星期六,所以这里不用week_of_newyears_day去求星期六了*/

/*weekday=week_of_newyears_day(year);求元旦是星期几*/

printf(" %d年 ",year);/*打印年份*/

for(month=1;month<=12;month=month+1)/*打印12个月的月历*/

{

printf(" %d月份 ",month);

printf("------------------------------------------------------ ");

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

printf("------------------------------------------------------ ");

for(i=0;i<weekday;i=i+1)/*找当月1日的打印位置*/

printf("");

if(month==4||month==6||month==9||month==11)

len_of_month=30;

elseif(month==2)

{

if(isleap(year))

len_of_month=29;

else

len_of_month=28;

}

else

len_of_month=31;

for(day=1;day<=len_of_month;day=day+1)/*打印当月日期*/

{

printf("%2d",day);

weekday=weekday+1;

if(weekday==7)/*打满一星期应换行*/

{

weekday=0;

printf(" ");

}

}

printf(" ");/*打完一月应换行*/

}

return0;

}

运行效果如图

❼ c语言年历编程

#include<stdio.h>

staticintyear;
staticintweekDay;

boolisLeapYear(inty)//判断是否是闰年
{
return(y%4==0&&y%100!=0||y%400==0);//闰年的条件就是年份同时能被4和100整除或
//者能被400整除
}

longfirstDayOfYear(inty)//求出输入的那年第一天是星期几
{
longn;
n=y*365;
for(inti=1;i<y;i++)
if(isLeapYear(i))
n+=1;
returnn%=7;
}

voidprintHead(intm)//打印每个月的标题
{
if(m<10)
printf("%d月日一二三四五六 ",m);
else
printf("%d月日一二三四五六 ",m);
printf("");
for(inti=0;i<weekDay;i++)
printf("");
}

intdaysOfMonth(intm)//判断每个月有多少天
{
switch(m)
{
case1:
case3:
case5:
case7:
case8:
case10:
case12:return31;
case4:
case6:
case9:
case11:return30;
case2:if(isLeapYear(year))
return29;
else
return28;
}
return0;
}

voidprintMonth(intm)//打印每月的日历
{
printHead(m);
intdays=daysOfMonth(m);
for(inti=1;i<=days;i++)
{
if(i<10)
printf("%d",i);
else
printf("%d",i);
weekDay=(weekDay+1)%7;
if(weekDay==0)
{
printf(" ");
printf("");
}
}
}

voidmain()//主程序入口,接收输入的年份,调用函数打印日历
{
inty;
printf("请输入年份:");
scanf("%d",&y);
year=y;
if(year<1)
{
printf("输入年份不能小于1 ");
return;
}
weekDay=(int)firstDayOfYear(year);
printf("%d年 ",year);
printf("======================================== ");
for(inti=1;i<=12;i++)
{
printf(" ");
printMonth(i);
printf(" ");
}
}

可以显示公元1世纪以后的所有年份的日历,第2和第3问其实都包含在第1问里,程序看懂了自然也就会了(话说为什么不能上传附件?)

❽ C语言编写 年历显示程序

此题不是很难,我会前三个
关键是算那一年的第一天是周几
给你个基本算法,一年是365天,闰年366天
364是7的倍数,这样一年多出一天,中间多少个闰年,在加上相应的天数即可
400年多出来的天数是400+97=497也是7的倍数,那么400年一轮回,这样就算400年以内的即可
一个子函数,返回这一年的第一天是周几,很好做
int ye(int year)
{
int y=year%400;
int day=y;
int i;
for(i=0;i<y;i++)
if(闰年判断)
day++;
return day%7;

}
做一个月份天数的全局数组
int mo[12]={31,28,31,30,31,30,31,31,30,31,30,31};
需要时用一个if判断闰年改变m0[1]的值是28还是29

打印子函数,有一个小技巧,就是每个月前面的空缺部分,这个1月份是ye子函数的返回值,后面的你看和前面月份是不是重合啊,吧这个记录下来在下一月份用即可
1 2
3 4
这样月份排列更好打印一些,你的那个截图有点麻烦

int pr(int year)
{
int k=ye(year);
int i,j,;
if(闰年判断)
mo[1]=29;
else
mo[1]=28;
for(i=0;i<12;i++)
{
printf("周几英文的打印");
for(j=0;j<k;j++)
printf("一般是四个空格,就是月份前面空缺的打印");
for(j=1;j<=mo[i];j++)
{
printf("%4d",j);
k++;
if((k+j)%7==0)
printf("\n");

}
k%=7;
if(k!=0)
printf("\n");

}

}
如果像你那样,感觉需要赋值一个大一点的数组,在吧数组打印出来更好,呵呵

❾ C语言年历显示程序设计

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
char* month[]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nev","Dec"};
char* week[]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};

int j_leapyear(int year) //定义函数检测输入年份是否为闰年
{
if((/*year%400==0*/year%4==0&&year%100!=0)||(year%400==0))
return (1);
// else if(year%4==0&&year%100!=0)
// return (1);
else return 0;
}

int month_day(int year,int month) //检测该年月份有多少天
{
int mon_day[]={31,28,31,30,31,30,31,31,30,31,30,31};
if(j_leapyear(year)&&month==2)
return 29;
else return (mon_day[month-1]);
}

int j_week(int year,int month,int day) //检测该天是星期几
{
int d=0,i; //d表示该天在该年份的累计天数
int w;
/* int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31};
if(j_leapyear(year)==1)
month_day[1]=29;
for(i=0;i<month;i++)
d+=month_day[i];
d=d+day;*/
for(i=1;i<month;i++)
d+=month_day(year,i);
d+=day;
w=(year-1)+(int)(year-1)/4-(int)(year-1)/100+(int)(year-1)/400+d;//网上公式
return ((int)w%7);
}

int allyear(int year) //输出全年日历
{
int i,j,b;
printf("\n%d 日历",year);
for(i=1;i<=12;i++)
{
printf("\n\n\t%s\n",month[i-1]);
// printf(" 7 1 2 3 4 5 6 \n");
printf(" S M T W T F S \n");
b=j_week(year,i,1);
for(j=1;j<=month_day(year,i)+b;j++)
{
if(j<=b)
printf(" ");
else if(j-b<10)
printf("%2d ",j-b);
else printf("%2d ",j-b);
//else printf("%2d ",j-b);
if(j%7==0)
putchar('\n');
}
putchar('\n');
}
return 0;
}
void month_print(int year,int month) //输入一个年月,输出这个月的日历
{

int i,c,d;
c=month_day(year,month);
printf("\n\n %d年%d月日历\n",year,month);

printf(" S M T W T F S \n");
d=j_week(year,month,1);
for(i=1;i<=c+d;i++)
{
if(i<=d)
printf(" ");
else printf("%2d ",i-d);
if(i%7==0)
putchar('\n');
}
putchar('\n');
}

int jisuan_day(int year,int month,int day,int x,int y,int z) //输入年月日,输出距x年y月z日有多少天,星期几,以及是否是公历节日
{
int i,a,b,c=0,d=0,days=0,m=0,n=0,t;
a=year>=x?year:x;
b=year<x?year:x;
if(a>b)
{
for(i=b+1;i<a;i++)
c+=j_leapyear(i);
}
else c=0;
if(year!=x)
d=a-b-1;
else d=0;
m=365*d+c;
if(year<x)
{
for(i=month;i<=12;i++)
n+=month_day(year,i);
days=m+n+z-day;
}
else if(year>x)
{
for(i=y;i<=12;i++)
n+=month_day(x,i);
for(i=1;i<month;i++)
n+=month_day(year,i);
days=m+n+day-z;
}
else
{
for(i=month>=y?y:month;i<(month>=y?month:y);i++)
n+=month_day(x,i);
days=abs(day-z)+n; //输出距离y月z日有多少天
}
printf("这天离%d年%d月%d号有%d天\n",x,y,z,days);
t=j_week(year,month,day);
if(t==0) //输出星期几
printf("这天星期日");
else if(t==1)
printf("这天星期一");
else if(t==2)
printf("这天星期二");
else if(t==3)
printf("这天星期三");
else if(t==4)
printf("这天星期四");
else if(t==5)
printf("这天星期五");
else if(t==6)
printf("这天星期六");
putchar('\n');
if(month==1&&day==1)
printf("这天是元旦节");
else if(month==2&&day==14)
printf("这天是情人节");
else if(month==3&&day==8)
printf("这天是妇女节");
else if(month==3&&day==12)
printf("这天是植树节");
else if(month==4&&day==1)
printf("这天是愚人节");
else if(month==4&&day==4)
printf("这天是清明节");
else if(month==5&&day==1)
printf("这天是劳动节");
else if(month==6&&day==1)
printf("这天是儿童节");
else if(month==8&&day==1)
printf("这天是建军节");
else if(month==9&&day==10)
printf("这天是教师节");
else if(month==10&&day==1)
printf("这天是国庆节");
else if(month==12&&day==25)
printf("这天是圣诞节");
else printf("这天不是特殊节日");
putchar('\n');
return days;
}

void fish_or_net(int year,int month,int day) //判断是打鱼还是晒网
{
int q;
int i,a,b,c=0,d=0,days=0,m=0,n=0;
a=year>=1990?year:1990;
b=year<1990?year:1990;
if(a>b)
{
for(i=b+1;i<a;i++)
c+=j_leapyear(i);
}
else c=0;
if(year!=1990)
d=a-b-1;
else d=0;
m=365*d+c;
if(year<1990)
{
for(i=month;i<=12;i++)
n+=month_day(year,i);
days=m+n+1-day;
}
else if(year>1990)
{
for(i=1;i<=12;i++)
n+=month_day(1990,i);
for(i=1;i<month;i++)
n+=month_day(year,i);
days=m+n+day-1;
}
else
{
for(i=month>=1?1:month;i<(month>=1?month:1);i++)
n+=month_day(1990,i);
days=abs(day-1)+n; //先确定这天离1990年1月1日有多少天
}

q=days%5+1;
if(q==1||q==2||q==3) //判断打鱼还是晒网
printf("渔人今天打鱼");
else printf("渔人今天晒网");
putchar('\n');
}

/*int main() //这部分内容用来校检
{
int j_leapyear(int year);
int month_day(int year,int month);
int j_week(int year,int month,int day);
int allyear(int year);
void month_print(int year,int month);
int jisuan_day(int year,int month,int day,int x,int y,int z);
void fish_or_net(int year,int month,int day);
int x,y,z,year,month,day;
// allyear(2015);
//month_print(2016,12);
printf("请输入今天的日期(按年,月,日输入,如2016,1,14表示2016年1月14日):");
scanf("%d,%d,%d",&x,&y,&z);
printf("\n请随便输入一个日期,格式同上:");
scanf("%d,%d,%d",&year,&month,&day);
jisuan_day(year,month,day,x,y,z);
// fish_or_net(x,y,z);
return 0;
} // 这部分内容是用来检测上述函数是否出错的
*/

int main()
{
int j_leapyear(int year);
int month_day(int year,int month);
int j_week(int year,int month,int day);
int allyear(int year);
void month_print(int year,int month);
int jisuan_day(int year,int month,int day,int x,int y,int z);
void fish_or_net(int year,int month,int day); //函数声明
int option,year,month,day,x,y,z;
char ny;
system("color 1f");
while (1)
{
printf("\n\n\t 欢迎来到由...编写的程序\n\n");
printf(" 请选择您需要的服务,输入编号回车结束\n");
printf(" 1.输入一个年份,输出该年的日历\n");
printf(" 2.输入年月,输出这个月的日历。\n");
printf(" 3.输入年月日,输出据今天还有多久,星期几,是否是公历节日。\n");
printf(" 4.某人自1990年1月1日开始打鱼,“三天打鱼,两天晒网”,输入一个1990年以后的日期,输出他这一天是打鱼还是晒网。\n");
printf(" 5.退出\n");
scanf("%d",&option);
switch(option) //switch分支结构
{
case 1:
while(1) //while循环,后面的1是常数,表示一直到break才结束循环
{
printf("请输入一个年份:");
scanf("%d",&year);
allyear(year);
printf("你想继续查询日历么?(y表示继续,n表示结束)");
scanf("%c",&ny);
if(ny=='n')
break;
}
break;
case 2:
while (1)
{
printf("输入年月:");
scanf("%d,%d",&year,&month);
month_print(year,month);
printf("你想继续查询日历么?(y表示继续,n表示结束):");
scanf("%c",&ny);
if(ny=='n')
break;
}
break;
case 3:
while (1)
{
printf("输入年月日:");
scanf("%d,%d,%d",&year,&month,&day);
printf("请输入今天的日期:");
scanf("%d,%d,%d",&x,&y,&z);
jisuan_day(year,month,day,x,y,z);
printf("你想继续查询么?(y表示继续,n表示结束):");
scanf("%c",&ny);
if(ny=='n')
break;
}
break;
case 4:
while (1)
{
printf("输入1990年1月1日以后的一个日期:");
scanf("%d,%d,%d",&year,&month,&day);
fish_or_net(year,month,day);
printf("你想继续查询渔人是打鱼还是晒网么?(y表示继续,n表示结束):");
scanf("%c",&ny);
if(ny=='n')
break;
}
break;
case 5:
while (1)
{
printf("确认么?y表示是的,n表示不是");
scanf("%c",&ny);
if(ny=='y')
exit(1); //表示退出程序
else if(ny=='n')
break;
}
break;
default:printf("对不起,暂时没有这个服务");
break;
}
}
return 0;
}

❿ c语言万年历程序

已经编译运行确认过。

#include <stdio.h>
#include <stdlib.h>

int leap(int); /*判断是否为闰年*/
int md(int m,int y); /*返回本月的天数*/
void prtweek(void); /*输出表头*/
int fw(int m,int y); /*返回本月一号是星期几*/
void prtmonth(int m); /*输出月份表头*/
int main(void)
{
int y,m,i,test,week;
printf("请输入您要查询的年份: ");
scanf("%d",&y);
for (m=1; m<=12; m++) {
test=1;
prtmonth(m);
prtweek();
week=fw(m,y);
if (week!=6)
for (i=0; i<=week; i++) {
putchar('\t');
test++;
}
for (i=1; i<=md(m,y); i++,test++) {
printf("%d\t",i);
if (test%7==0) {
putchar('\n');
}
}
putchar('\n');

system("pause");//暂停,以便观察输出
}
return 0;
}
int leap(int y)
{
return (y%4==0&&y%100||y%400==0)?1:0;
}
int md(int m,int y)
{
int d;
switch (m) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:d=31;break;
case 4:
case 6:
case 9:
case 11:d=30;break;
case 2:d=leap(y)?29:28;break;

}
return d;
}
void prtweek(void)
{
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n","Sun","Mon","Tue","Wed","Thur","Fri","Sat");
}
int fw(int m,int y)
{
int f;
if (m<3) {
m+=12;
y--;
}
f=(1+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
return f;
}
void prtmonth(int m)
{
switch (m) {
default:
case 1:puts("===January===");break;
case 2:puts("===February===");break;
case 3:puts("===March===");break;
case 4:puts("===April===");break;
case 5:puts("===May===");break;
case 6:puts("===June===");break;
case 7:puts("===July===");break;
case 8:puts("===August===");break;
case 9:puts("===September===");break;
case 10:puts("===October===");break;
case 11:puts("===November===");break;
case 12:puts("===December===");break;
}
}

热点内容
运行javajar 发布:2024-05-17 01:29:14 浏览:13
怎么找回访问密码 发布:2024-05-17 01:22:45 浏览:746
吉林苹果服务器网络时间地址 发布:2024-05-17 01:21:29 浏览:212
dns缓存ros 发布:2024-05-17 01:20:45 浏览:913
压缩机油洗 发布:2024-05-17 00:59:44 浏览:170
秋天的密码是什么 发布:2024-05-17 00:55:56 浏览:151
java培训的价格 发布:2024-05-17 00:38:43 浏览:136
茶杯头哪个配置最好 发布:2024-05-17 00:37:58 浏览:823
服务器kirin是什么意思 发布:2024-05-17 00:29:45 浏览:959
电脑服务器散热供暖 发布:2024-05-16 23:46:54 浏览:500