- UID
- 70863
注册时间2010-12-2
阅读权限30
最后登录1970-1-1
龙战于野
TA的每日心情 | 开心 2015-12-28 01:47 |
---|
签到天数: 3 天 [LV.2]偶尔看看I
|
本来以为12点之前可以完事的,
不过不知不觉的就到了凌晨3点...
又熬夜了!!! 杯具
用了将近20个小时.终于把这个作业完成了.
虽然可能还不够完善,不过beta1版的万年历也算成型了.
以后会进行必要的修正的.
源码:- void error()
- {
- char a = 0;
- clrscr();
- printf("Input Error!!!\n");
- printf("Sorry,\n");
- printf("inorder to ensure the normal operation of the program.\n");
- printf("Please enter a character.\n");
- scanf(" %c",&a);
- return;
- }
- int leap(int y)
- {
- int a = 0;
- if( ( !(y%4) && (y%100) ) || !(y%400) )
- {
- a = 1;
- }
- return a;
- }
- int month(int y,int m)
- {
- int a = 0;
- if( !(m-4) || !(m-6) || !(m-9) || !(m-11) )
- {
- a = 30;
- }else if( (m-2) )
- {
- a = 31;
- }else
- {
- if(leap(y))
- {
- a = 29;
- }
- else
- {
- a = 28;
- }
- }
- return a;
- }
- int ymd(int y,int m,int d)
- {
- int a = 0;
- if(y<1901 || y>2099 || m<1 || m>12 || d<1 || d>month(y,m))
- {
- error();
- }else
- {
- a = 1;
- }
- return a;
- }
- int year( int y )
- {
- int i = 1901;
- int b = 0;
- unsigned int c = 0;
- char d = 0;
- for ( ; i<y ; i++)
- {
- if( leap(i) )
- {
- b = 366;
- }
- else
- {
- b = 365;
- }
- c += b;
- }
- d = (c+2) % 7;
- return d;
- }
- int moon(int y,int m)
- {
- int i = 0;
- int a = 0;
- int b = 0;
- int c = 0;
- for ( i=1 ; i<m ; i++ )
- {
- a = month(y,i);
- b += a;
- }
- c = year( y );
- c = (c+b) % 7;
- return c;
- }
- int algorithm(int y,int m,int d)
- {
- int a;
- if( !ymd(y,m,d) )
- {
- main();
- }else
- {
-
- a = moon(y,m);
- }
- return a;
- }
- void output(int a,int y,int m,int d)
- {
- int b = 0;
- int c = 0;
- int e = 0;
- int f = 0;
- int g = 0;
- clrscr();
- printf("A Perpetual Calendar Beta1. By:LShang\n\n");
- printf(" The current date is:%d-%d-%d\n",y,m,d,a);
- gotoxy(1,6);
- printf(" Sun Mon Tue Wed Thu Fri Sat\n\n");
- while( c < a )
- {
- printf(" ");
- c++;
- }
- for( b = 1 ; b <= month(y,m) ; b++)
- {
- if( !(c % 7) && c )
- {
- printf("\n\n");
- f++;
- }
- printf(" %02d",b);
- if(!(b-d))
- {
- e = c;
- g = f;
- }
- c++;
- }
- gotoxy(1,22);
- printf("You can use the '%c' or '%c' to adjust the year.",0x1e,0x1f);
- printf("\nYou can use the '%c' or '%c' to adjuse the month.",0x11,0x10);
- printf("\nIf you want to re-define the date ,press the space bar.");
- printf("\nIf you want to exit,press the number key '0'");
- gotoxy( ( 6*(e%7)+4 ),( 6+2*(g+1) ) );
- return;
- }
- void smile(int x,int u,int v)
- {
- int a = 0;
- int b = 0;
- a = 1;
- gotoxy(u,v);
- for(b=1 ; b<=10;b++)
- {
- if(a == (5+x-1) || a == (5-x+1))
- {
- printf("*");
- }else
- {
- printf(" ");
- }
- a++;
- }
- return;
- }
- main()
- {
- int y = 0;
- int m = 0;
- int d = 0;
- int b[1] = {0};
- int x = 0;
- int u = 0;
- int v = 0;
- clrscr();
- printf("A Perpetual Calendar Beta1. By:LShang\n\n");
- printf("Press 'ctrl' + 'c' to exit.\n\n");
- printf("Please enter a date,For example(2011-1-9):");
- scanf("%d-%d-%d",&y,&m,&d);
- go: output(algorithm(y,m,d),y,m,d);
- while(*b != 0x30)
- {
- *b = getch();
- if(*b == 0x48)
- {
- if(!(y-1901))
- {
- y = 2099;
- }else
- {
- y--;
- }
- }else if(*b == 0x50)
- {
- if(!(y-2099))
- {
- y = 1901;
- }else
- {
- y++;
- }
- }else if(*b == 0x4b)
- {
- if(!(m-1))
- {
- y--;
- m = 12;
- }else
- {
- m--;
- }
- }else if(*b == 0x4d)
- {
- if(!(m-12))
- {
- y++;
- m = 1;
- }else
- {
- m++;
- }
- }else if(*b == 0x20)
- {
- main();
- }
- goto go;
- }
- clrscr();
- gotoxy(20,1);
- printf("Thank you for you use,Bye.%c",0x01);
- v = 5;
- for(x=1 ; x<=5 ; x++)
- {
- u = 19;
- smile(x,u,v);
- u = 39;
- smile(x,u,v);
- v++;
- }
- v = 13;
- for(x=5 ; x>=1 ; x--)
- {
- u = 29;
- smile(x,u,v);
- v++;
- }
- }
复制代码 截图:
开始界面:
1
运行界面:
2
退出界面:
3
源码附件:
test.c.rar
(5.99 KB, 下载次数: 20)
|
|