c语言万年历制作落差,用C语言制作万年历

用C语言制作万年历

來源:互聯網  2011-01-26 11:58:55  評論

分類: 電腦/網絡 >> 程序設計 >> 其他編程語言

問題描述:

要求能调用系统当前时间,并能翻页(每页一月),打开时显示当前日期,界面类似与常用的挂历.谢谢^^

參考答案:

/*以下程序在TC2 中通过*/

#include

#include

#include

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(month>11) {

month-=12;

year++;

}

while(month<0) {

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; i<3*s; i++ ) printf(" ");

c=s;

for(d=1;d<=monthday[month];d++) {

if(c>6) {

printf("\n");

c=0;

}

c++;

printf("%d",d);

printf("%s",(d<10)?" ":" ");

}

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;

}

[b]分类:[/b] 电脑/网络 >> 程序设计 >> 其他编程语言[br][b]问题描述:[/b][br]要求能调用系统当前时间,并能翻页(每页一月),打开时显示当前日期,界面类似与常用的挂历.谢谢^^[br][b]参考答案:[/b][br]/*以下程序在TC2 中通过*/

#include

#include

#include

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(month>11) {

month-=12;

year++;

}

while(month<0) {

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; i<3*s; i++ ) printf(" ");

c=s;

for(d=1;d<=monthday[month];d++) {

if(c>6) {

printf("\n");

c=0;

}

c++;

printf("%d",d);

printf("%s",(d<10)?" ":" ");

}

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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值