打印英文年历C语言函数 C语言打印函数

输入一个年份,打印该年的年历,用C语言编写,老师布置的作业。

//-----------------------------------------

发展壮大离不开广大客户长期以来的信赖与支持,我们将始终秉承“诚信为本、服务至上”的服务理念,坚持“二合一”的优良服务模式,真诚服务每家企业,认真做好每个细节,不断完善自我,成就企业,实现共赢。行业涉及成都餐厅设计等,在网站建设公司成都全网营销、WAP手机网站、VI设计、软件开发等项目上具有丰富的设计经验。

//前端时间看到的一断代码看到不错就留下来了,不知道作者是谁,看到勿怪

#includestdio.h

long int f(int year,int month)

{//f(年,月)=年-月,如月3;否则,f(年,月)=年

if (month 3)

return year-1;

else

return year;

}

long int g(int month)

{//g( 月)=月+13,如月3;否则,g(月)=月+1

if(month3)

return month + 13;

else

return month + 1;

}

long int n(int year,int month,int day)

{

return 1461L*f(year,month)/4+153L*g(month)/5+day;

}

int w(int year,int month,int day)

{

return(int) ((n(year,month,day)%7-621049L%7+7)%7);

}

int date[12][6][7];

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

int main()

{

int sw,leap,i,j,k,wd,day;

int year;

char title[]="SUN MON TUE WED THU FRI SAT";

printf("Please input the yewr whose calendar you want to know:");

scanf("%d%*c",year);

sw=w(year,1,1);

leap=year%4==0year%100||year%400==0;//判断闰年

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

for (j=0;j6;j++)

for(k=0;k7;k++)

date[i][j][k]=0;//将日期表置0

for(i=0;i12;i++)//一年12个月

for(wd=0,day=1;day=day_tbl[leap][i];day++)

{//将i+1月的日期填入日期表

date[i][wd][sw]=day;

sw=++sw%7;//每星期7天,以0~6计数

if (sw==0)

wd++;//日期表每七天一行,星期天开始新的一行

}

printf("\n|====================The Calendar of Year %d====================|\n|",year);

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

{//先测算地i+1月和第i+7月的最大星期数

for(wd=0,k=0;k7;k++)//日期表的第六行有日期,则wd!=0;

wd+=date[i][5][k]+date[i+6][5][k];

wd=wd?6:5;

printf("%2d %s %2d %s |\n|",i+1,title,i+7,title);

for(j=0;jwd;j++)

{

printf(" ");

//左栏为i+1月,右栏为i+7月

for (k=0;k7;k++)

{

if(date[i][j][k])

printf("%4d",date[i][j][k]);

else

printf(" ");

}

printf(" ");

for(k=0;k7;k++)

{

if(date[i+6][j][k])

printf("%4d",date[i+6][j][k]);

else

printf(" ");

}

printf(" |\n|");

}

}

puts("=================================================================|");

puts("Please input any key to quit...");

getchar();

return(0);

}

求用C语言编写打印万年历的程序代码

#includestdio.h

int monthDay(int,int);

int IsLeapYear(int);

main()

{

int days,weekDay,year,month=1,d,i;

printf("please input the year:\n");

scanf("%d",year);

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

while(month=12){

printf("\t\t\t%d-%d\n",year,month);

printf("Sun\tMon\tTues\tWed\tThur\tFir\tSat\n");

d=1,i=1;

weekDay=(days+1)%7;

while(i=weekDay)

{

printf("\t");

i++;

}

while(d=monthDay(month,year))

{

weekDay=(days+1)%7;

if(weekDay==6)

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

else

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

if(d==monthDay(month,year))

printf("\n");

d++;

days++;

}

month++;

}

system("PAUSE");

return 0;

}

int monthDay(int month, int year)

{

switch(month){

case 1:case 3:case 5:case 7:case 8:case 10:case 12:

return 31;

break;

case 4: case 6:case 9:case 11:

return 30;

break;

case 2:

if((IsLeapYear(year))==1)

return 29;

else

return 28;

break;

}

}

int IsLeapYear(int year)

{

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

return 1;

if(year%400==0)

return 1;

return 0;

}

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;iy;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;i12;i++)

{

printf("周几英文的打印");

for(j=0;jk;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语言编程题,输出2012年年历

#includestdio.h

//输出指定月份的名称以及星期表头

void prt_title(int month)

{

switch (month)

{

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;

}

printf("Sun.\tMon.\tTues.\tWed.\tThur.\tFri.\tSat.\n");

}

//计算指定月的第一天是星期几

int first_day_month(int year, int month)

{

if (month3)

{

month += 12;

year--;

}

return (1 + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7;

}

//计算指定月有几天

int days_of_month(int year, int month)

{

switch (month)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:return 31;break;

case 4:

case 6:

case 9:

case 11:return 30;break;

case 2:return ((year % 4 == 0 year % 100) || (year % 400 == 0)) ? 29 : 28;break;

}

}

//输出指定月的日历

void prt_the_month(int year, int month)

{

int fd, i, sp = 0, days;

putchar('\n');

prt_title(month);

fd = first_day_month(year, month);

for (i = 0;i(fd + 1) % 7;i++)

{

putchar('\t');

sp++;

}

days = days_of_month(year, month);

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

{

if (spsp % 7 == 0) putchar('\n');

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

}

putchar('\n');

}

//输出指定年的日历

void prt_the_year(int year)

{

int i;

printf("Calendar of %d : \n", year);

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

{

prt_the_month(year, i);

}

}

//主函数,用2012年进行测试

int main(void)

{

prt_the_year(2012);

getchar();

return 0;

}

谢谢采纳

c语言编程:打印年历

#include stdio.h

void main()

{

int i,j,k,year,week;

int day[]=;

char month[12][10]=;

printf("Input year you want to print:");

scanf("%d",year);

if((year%4==0year%100!=0)||(year%400==0)) day[1]++; //判断是否闰年

week=(35+year+year/4-year/100+year/400)%7; //计算当年的1月1日是周几的公式

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

{

printf("\n%s\n",month[i]); //输出月份的英文

printf("Sun Mon Tue Wed Thu Fri Sat\n"); //输出表头

for(k=0;kweek;k++) printf(" "); //每月一号对齐它的星期数

for(j=1;j=day[i];j++)

{

printf("%3d ",j);

if(++week=7)

{

printf("\n");

week=week%7;

}

}

printf("\n");

}

}

用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==0year%100!=0)||(year%400==0)) day[1]++;

week=(35+year+year/4-year/100+year/400)%7; //计算当年的1月1日是周几的公式

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

{

printf("\n%s\n",month[i]);

printf("Sun Mon Tue Wed Thu Fri Sat\n");

for(k=0;kweek;k++) printf(" ");

for(j=1;j=day[i];j++)

{

printf("%3d ",j);

if(++week=7)

{

printf("\n");

week=week%7;

}

}

printf("\n");

}

}


文章标题:打印英文年历C语言函数 C语言打印函数
分享链接:http://scyanting.com/article/doddipj.html