#include <stdio.h>#include <math.h>#include <conio.h>#include <string.h>#include <graphics.h>#include <time.h>void o(int m1,int m2,int m3,int m,tm p);void o(int m1,int m2,int m3,int m,tm p){ struct birthday { int y; int m; int d; }; struct student { char name[10]; int id; int sumday; int x; struct birthday bir; }; int i,j,a,b,q=m,n=0,n1=m1,n2=m2,n3=m3; TCHAR s[5]; struct student stu[2]={{"su",00},{"li",01}}; struct tm mon; mon=p; for(i=0;i<1;i++) { if(q) { clearrectangle(899,50,1600,800); switch(q) { case 75:n2+=1;break; case 77:n2-=1;break; case 72:n1+=1;break; case 80:n1-=1;break; } if(n2>11) { n2=0; } if(n2<0) { n2=11; } *m1=n1;*m2=n2;*m3=n3; } stu[i].bir.y=n1+1900;stu[i].bir.m=n2+1;stu[i].bir.d=1; if(stu[i].bir.y<2022)//2022之前 { if((stu[i].bir.y%4==0&&stu[i].bir.y%100!=0)||stu[i].bir.y%400==0)//闰年 { a=2022-stu[i].bir.y-1; stu[i].sumday=a*365; if(stu[i].bir.m<=2)//月份小于2 { for(j=stu[i].bir.y+1;j<2022;j++)//与基准之间有多少个闰年,本年除外 { if(((j%4==0)&&(j%100!=0))||(j%400==0)) { stu[i].sumday=stu[i].sumday+1; } } stu[i].sumday=stu[i].sumday+306+94; if(stu[i].bir.m==2)//二月 { stu[i].sumday=stu[i].sumday+(29-stu[i].bir.d); } else//二月以前 { stu[i].sumday=stu[i].sumday+29+(31-stu[i].bir.d); } } else//月份大于二月 { for(j=stu[i].bir.y+1;j<2022;j++)//与基准之间有多少个闰年,本年除外 { if(((j%4==0)&&(j%100!=0))||(j%400==0)) { stu[i].sumday=stu[i].sumday+1; } } switch(stu[i].bir.m) { case 3:stu[i].sumday=stu[i].sumday+306+94-stu[i].bir.d;break; case 4:stu[i].sumday=stu[i].sumday+275+94-stu[i].bir.d;break; case 5:stu[i].sumday=stu[i].sumday+245+94-stu[i].bir.d;break; case 6:stu[i].sumday=stu[i].sumday+214+94-stu[i].bir.d;break; case 7:stu[i].sumday=stu[i].sumday+184+94-stu[i].bir.d;break; case 8:stu[i].sumday=stu[i].sumday+152+94-stu[i].bir.d;break; case 9:stu[i].sumday=stu[i].sumday+122+94-stu[i].bir.d;break; case 10:stu[i].sumday=stu[i].sumday+92+94-stu[i].bir.d;break; case 11:stu[i].sumday=stu[i].sumday+61+94-stu[i].bir.d;break; case 12:stu[i].sumday=stu[i].sumday+31+94-stu[i].bir.d;break; } } } else//平年 { a=2022-stu[i].bir.y-1; stu[i].sumday=a*365; switch(stu[i].bir.m) { case 1:stu[i].sumday=stu[i].sumday+365+94-stu[i].bir.d;break; case 2:stu[i].sumday=stu[i].sumday+334+94-stu[i].bir.d;break; case 3:stu[i].sumday=stu[i].sumday+306+94-stu[i].bir.d;break; case 4:stu[i].sumday=stu[i].sumday+275+94-stu[i].bir.d;break; case 5:stu[i].sumday=stu[i].sumday+245+94-stu[i].bir.d;break; case 6:stu[i].sumday=stu[i].sumday+214+94-stu[i].bir.d;break; case 7:stu[i].sumday=stu[i].sumday+184+94-stu[i].bir.d;break; case 8:stu[i].sumday=stu[i].sumday+152+94-stu[i].bir.d;break; case 9:stu[i].sumday=stu[i].sumday+122+94-stu[i].bir.d;break; case 10:stu[i].sumday=stu[i].sumday+92+94-stu[i].bir.d;break; case 11:stu[i].sumday=stu[i].sumday+61+94-stu[i].bir.d;break; case 12:stu[i].sumday=stu[i].sumday+31+94-stu[i].bir.d;break; } for(j=stu[i].bir.y;j<2022;j++)//与基准间有多少个闰年 { if(((j%4==0)&&(j%100!=0))||(j%400==0)) { stu[i].sumday=stu[i].sumday+1; } } } b=stu[i].sumday%7; switch(b) { case 0:stu[i].x=1;break; case 1:stu[i].x=2;break; case 2:stu[i].x=3;break; case 3:stu[i].x=4;break; case 4:stu[i].x=5;break; case 5:stu[i].x=6;break; case 6:stu[i].x=0;break; } } else//2022及之后 { if(stu[i].bir.y==2022)//在2022本年内 { if(stu[i].bir.m==4)//在4月 { if(stu[i].bir.d>=4)//基准之前 { stu[i].sumday=stu[i].bir.d-4; } else//基准之后 { stu[i].sumday=4-stu[i].bir.d; } } if(stu[i].bir.m>4)//四月后 { stu[i].x=1; switch(stu[i].bir.m) { case 4:stu[i].sumday=stu[i].bir.d-4;break; case 5:stu[i].sumday=stu[i].bir.d-4+30;break; case 6:stu[i].sumday=stu[i].bir.d-4+61;break; case 7:stu[i].sumday=stu[i].bir.d-4+91;break; case 8:stu[i].sumday=stu[i].bir.d-4+122;break; case 9:stu[i].sumday=stu[i].bir.d-4+153;break; case 10:stu[i].sumday=stu[i].bir.d-4+183;break; case 11:stu[i].sumday=stu[i].bir.d-4+214;break; case 12:stu[i].sumday=stu[i].bir.d-4+244;break; } printf("%d\n",stu[i].sumday); b=stu[i].sumday%7; switch(b) { case 0:stu[i].x=1;break; case 1:stu[i].x=2;break; case 2:stu[i].x=3;break; case 3:stu[i].x=4;break; case 4:stu[i].x=5;break; case 5:stu[i].x=6;break; case 6:stu[i].x=0;break; } } else//四月前 { stu[i].x=0; switch(stu[i].bir.m) { case 1:stu[i].sumday=94-stu[i].bir.d;break; case 2:stu[i].sumday=63-stu[i].bir.d;break; case 3:stu[i].sumday=35-stu[i].bir.d;break; case 4:stu[i].sumday=4-stu[i].bir.d;break; } b=stu[i].sumday%7; switch(b) { case 0:stu[i].x=1;break; case 1:stu[i].x=0;break; case 2:stu[i].x=6;break; case 3:stu[i].x=5;break; case 4:stu[i].x=4;break; case 5:stu[i].x=3;break; case 6:stu[i].x=2;break; } } } else//2022以后 { if((stu[i].bir.y%4==0&&stu[i].bir.y%100!=0)||stu[i].bir.y%400==0)//闰年 { a=stu[i].bir.y-2022-1; stu[i].sumday=a365; if(stu[i].bir.m<=2)//3月1日以前 { for(j=2023;j<stu[i].bir.y;j++)//与基准之间有多少个闰年,本年除外 { if(((j%4==0)&&(j%100!=0))||(j%400==0)) { stu[i].sumday=stu[i].sumday+1; } } if(stu[i].bir.m==2)//二月 { stu[i].sumday=stu[i].sumday+stu[i].bir.d+271+31; } else//一月 { stu[i].sumday=stu[i].sumday+stu[i].bir.d+271; } } else//2月29日以后 { switch(stu[i].bir.m) { case 3:stu[i].sumday=stu[i].sumday+60+271+stu[i].bir.d;break; case 4:stu[i].sumday=stu[i].sumday+91+271+stu[i].bir.d;break; case 5:stu[i].sumday=stu[i].sumday+121+271+stu[i].bir.d;break; case 6:stu[i].sumday=stu[i].sumday+152+271+stu[i].bir.d;break; case 7:stu[i].sumday=stu[i].sumday+182+271+stu[i].bir.d;break; case 8:stu[i].sumday=stu[i].sumday+213+271+stu[i].bir.d;break; case 9:stu[i].sumday=stu[i].sumday+244+271+stu[i].bir.d;break; case 10:stu[i].sumday=stu[i].sumday+274+271+stu[i].bir.d;break; case 11:stu[i].sumday=stu[i].sumday+305+271+stu[i].bir.d;break; case 12:stu[i].sumday=stu[i].sumday+335+271+stu[i].bir.d;break; } for(j=2023;j<stu[i].bir.y;j++)//与基准间有多少个闰年,本年除外 { if(((j%4==0)&&(j%100!=0))||(j%400==0)) { stu[i].sumday=stu[i].sumday+1; } } } } else//平年 { a=stu[i].bir.y-2022-1; stu[i].sumday=a*365; switch(stu[i].bir.m) { case 1:stu[i].sumday=stu[i].sumday+271+stu[i].bir.d;break; case 2:stu[i].sumday=stu[i].sumday+31+271+stu[i].bir.d;break; case 3:stu[i].sumday=stu[i].sumday+59+271+stu[i].bir.d;break; case 4:stu[i].sumday=stu[i].sumday+90+271+stu[i].bir.d;break; case 5:stu[i].sumday=stu[i].sumday+120+271+stu[i].bir.d;break; case 6:stu[i].sumday=stu[i].sumday+151+271+stu[i].bir.d;break; case 7:stu[i].sumday=stu[i].sumday+181+271+stu[i].bir.d;break; case 8:stu[i].sumday=stu[i].sumday+212+271+stu[i].bir.d;break; case 9:stu[i].sumday=stu[i].sumday+243+271+stu[i].bir.d;break; case 10:stu[i].sumday=stu[i].sumday+273+271+stu[i].bir.d;break; case 11:stu[i].sumday=stu[i].sumday+304+271+stu[i].bir.d;break; case 12:stu[i].sumday=stu[i].sumday+334+271+stu[i].bir.d;break; } for(j=2023;j<stu[i].bir.y;j++)//与基准间有多少个闰年 { if(((j%4==0)&&(j%100!=0))||(j%400==0)) { stu[i].sumday=stu[i].sumday+1; } } } b=stu[i].sumday%7; switch(b) { case 0:stu[i].x=1;break; case 1:stu[i].x=2;break; case 2:stu[i].x=3;break; case 3:stu[i].x=4;break; case 4:stu[i].x=5;break; case 5:stu[i].x=6;break; case 6:stu[i].x=0;break; } } } if((stu[i].bir.y%4==0&&stu[i].bir.y%100!=0)||stu[i].bir.y%400==0) { if(stu[i].bir.m==1||stu[i].bir.m==3||stu[i].bir.m==5||stu[i].bir.m==7||stu[i].bir.m==8||stu[i].bir.m==10||stu[i].bir.m==12) { for(j=1;j<=31;j++) { if(j<10) { if(j==n3) { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x*100, 70+n*50, s); } else { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x*100, 70+n*50, s); } } else { if(j==n3) { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x*100, 70+n*50, s); } else { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x*100, 70+n*50, s); } } stu[i].x+=1; if(stu[i].x==7) { stu[i].x=0; n+=1; } } } if(stu[i].bir.m==4||stu[i].bir.m==6||stu[i].bir.m==9||stu[i].bir.m==11) { for(j=1;j<=30;j++) { if(j<10) { if(j==n3) { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x*100, 70+n*50, s); } else { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x*100, 70+n*50, s); } } else { if(j==n3) { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x*100, 70+n*50, s); } else { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x*100, 70+n*50, s); } } stu[i].x+=1; if(stu[i].x==7) { stu[i].x=0; n+=1; } } } if(stu[i].bir.m==2) { for(j=1;j<=29;j++) { if(j<10) { if(j==n3) { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x*100, 70+n*50, s); } else { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x*100, 70+n*50, s); } } else { if(j==n3) { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x*100, 70+n*50, s); } else { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x*100, 70+n*50, s); } } stu[i].x+=1; if(stu[i].x==7) { stu[i].x=0; n+=1; } } } } else { if(stu[i].bir.m==1||stu[i].bir.m==3||stu[i].bir.m==5||stu[i].bir.m==7||stu[i].bir.m==8||stu[i].bir.m==10||stu[i].bir.m==12) { for(j=1;j<=31;j++) { if(j<10) { if((j==n3)&&(mon->tm_mon==n2)&&(mon->tm_year==n1)) { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x100, 70+n50, s); } else { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x100, 70+n50, s); } } else { if(j==n3) { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x100, 70+n50, s); } else { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x100, 70+n50, s); } } stu[i].x+=1; if(stu[i].x==7) { stu[i].x=0; n+=1; } } } if(stu[i].bir.m==4||stu[i].bir.m==6||stu[i].bir.m==9||stu[i].bir.m==11) { for(j=1;j<=30;j++) { if(j<10) { if(j==n3) { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x*100, 70+n*50, s); } else { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x*100, 70+n*50, s); } } else { if((j==n3)&&(mon->tm_mon==n2)&&(mon->tm_year==n1)) { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x100, 70+n50, s); } else { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x100, 70+n50, s); } } stu[i].x+=1; if(stu[i].x==7) { stu[i].x=0; n+=1; } } } if(stu[i].bir.m==2) { for(j=1;j<=28;j++) { if(j<10) { if(j==n3) { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x*100, 70+n*50, s); } else { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x*100, 70+n*50, s); } } else { if(j==n3) { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x*100, 70+n*50, s); } else { _stprintf(s, _T("%d"), j); outtextxy(900+stu[i].x*100, 70+n*50, s); } } stu[i].x+=1; if(stu[i].x==7) { stu[i].x=0; n+=1; } } } } } _stprintf(s, _T("%d"), n1+1900); outtextxy(1100, 400, s); _stprintf(s, _T("%d"), n2+1); outtextxy(1300, 400, s);}int main(){ initgraph(1600,800); int t=1,t1,t2,t3,i,v=0,a=0,x=0,y=0,k=0,j=0,m=0,n=0,hour,minute,sec,m1,m2,m3,*n1,*n2,*n3,dm1=0,dm2=0; double c,x1,y1,x2,y2,x3,y3; float H=0,S=1,L=0.5f; wchar_t h[10]; char z; TCHAR k1[5]="日",k2[5]="一",k3[5]="二",k4[5]="三",k5[5]="四",k6[5]="五",k7[5]="六",s[5],com[100]; time_t timep; struct tm *p; time(&timep); p=localtime(&timep); c=(3.14/180)*6; t1=p->tm_sec-15; t2=p->tm_min-15; t3=p->tm_hour-3; m1=p->tm_year; m2=p->tm_mon; m3=p->tm_mday; n1=&m1;n2=&m2;n3=&m3; for(i=0;i<=60;i++) { x1=400+(300*cos(t1*c)); y1=400+(300*sin(t1*c)); setlinecolor(WHITE); line(400,400,x1,y1); t1++; } clearcircle(400,400,280); for(i=0;i<=60;i++) { x1=400+(300*cos(i*c)); y1=400+(300*sin(i*c)); if(i%5==0) { line(400,400,x1,y1); } } clearcircle(400,400,260); _stprintf(s, _T("%d"), 12); outtextxy(395,150,s); _stprintf(s, _T("%d"), 3); outtextxy(650,400,s); _stprintf(s, _T("%d"), 6); outtextxy(400,650,s); _stprintf(s, _T("%d"), 9); outtextxy(150,400,s); circle(400, 400, 300); x1=400+200*cos(t1*c); y1=400+200*sin(t1*c); x2=400+100*cos(t2*c); y2=400+100*sin(t2*c); x3=400+50*cos(t3*c*5); y3=400+50*sin(t3*c*5); t1=p->tm_sec-15; settextstyle(24, 0, _T("Consolas")); outtextxy(900, 20, k1); outtextxy(1000, 20, k2); outtextxy(1100, 20, k3); outtextxy(1200, 20, k4); outtextxy(1300, 20, k5); outtextxy(1400, 20, k6); outtextxy(1500, 20, k7); while(1) { setlinecolor(GREEN); line(400,400,x2,y2); setlinecolor(BLUE); line(400,400,x3,y3); setlinecolor(RED); line(400,400,x1,y1); time(&timep); p=localtime(&timep); t1=p->tm_sec-15; if(kbhit()) { n=getch(); z=char(n); if(n==224) { m=getch(); } switch(int(n)) { case 97:t2++;break; case 100:t2=t2-1;break; case 119:t3=t3+1;break; case 115:t3=t3-1;break; case 116:t=-t;break; case 224:break; default:com[a]=z;a++; } if(t==1) { for(i=v;i<=a-1;i++) { if(48<=com[i]&&com[i]<=57||com[i]==13||com[i]==8) { if(com[i]==8) { a-=2; } if(com[i]==13) { if(j==0) { for(v=0;v<i;v++) { dm1=dm1+int(com[v]-'0')*pow(10.0,i-v-1); } j++;v=i+1; } else { for(v;v<i;v++) { dm2=dm2+int(com[v]-'0')*pow(10.0,i-v-1); } j=0; k=2; } } } outtextxy(1000+i*10, 700, com[i]); } } else { for(i=v;i<=a-1;i++) { if(48<=com[i]&&com[i]<=57||com[i]==13||com[i]==8) { if(com[i]==8) { a-=2; } if(com[i]==13) { if(j==0) { for(v=0;v<i;v++) { dm1=dm1+int(com[v]-'0')*pow(10.0,i-v-1); } j++;v=i+1; } else { for(v;v<i;v++) { dm2=dm2+int(com[v]-'0')*pow(10.0,i-v-1); } j=0; k=1; } } } outtextxy(350+i*10, 750, com[i]); } } } if(k==2) { m1=dm1-1900;m2=dm2-1; k=0;a=0;v=0; dm1=0;dm2=0; clearrectangle(870,50,1600,800); } if(k==1) { hour=dm1-3;minute=dm2-15; k=0;a=0;v=0; dm1=0;dm2=0; clearrectangle(0,750,900,800); } if(t1==-15&&x==0) { t2=t2+1; x++; } if(t2==45&&x==0) { t3++; x++; t2=-15; } if(t3==45&&x==0) { t3=-3; } if(t1==-14) { x=0; } o(n1,n2,n3,m,p); m=0; if((t3==hour)&&(t2==minute)&&p->tm_sec<=10) { H+=100; setlinecolor( HSLtoRGB(H, S, L) ); if(H>=900) { H=0; } circle(400, 400, 300); if(p->tm_sec==10) { setlinecolor(WHITE); circle(400, 400, 300); } } x1=400+(200cos(t1c)); y1=400+(200sin(t1c)); x2=400+(100cos(t2c)); y2=400+(100sin(t2c)); x3=400+(50cos(t3c5)); y3=400+(50sin(t3c*5)); clearcircle(400,400,205); } _getch(); closegraph(); return 0;}
代码贴出来后你自己不看一下有没有贴合适吗?
题主贴的这代码样式也挺有意思的
我
手动回车分解了一下
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<string.h>
#include<graphics.h>
#include<time.h>
void o(int m1, int m2, int m3, int m, tm p);
void o(int m1, int m2, int m3, int m, tm p) {
struct birthday {
int y;
int m;
int d;
}
;
struct student {
char name[ 10];
int id;
int sumday;
int x;
struct birthday bir;
} ;
int i, j, a, b, q = m, n = 0, n1 = m1, n2 = m2, n3 = m3;
TCHAR s[ 5];
struct student stu[2] = {{"su", 00}, {"li", 01}};
struct tm mon;
mon = p;
for (i = 0; i < 1; i++) {
if (q) {
clearrectangle(899, 50, 1600, 800);
switch (q) {
case 75:
n2 += 1;
break;
case 77:
n2 -= 1;
break;
case 72:
n1 += 1;
break;
case 80:
n1 -= 1;
break;
}
if (n2 > 11) {
n2 = 0;
}
if (n2 < 0) {
n2 = 11;
} *m1 = n1;*m2 = n2;*m3 = n3;
} stu[i].bir.y = n1 + 1900;
stu[i].bir.m = n2 + 1;
stu[i].bir.d = 1;
if (stu[i].bir.y < 2022)
//2022之前
{
if ((stu[i].bir.y % 4 == 0 && stu[i].bir.y % 100 != 0) || stu[i].bir.y % 400 == 0)
//闰年
{
a = 2022 - stu[i].bir.y - 1;
stu[i].sumday = a * 365;
if (stu[i].bir.m <= 2)
//月份小于2
{
for (j = stu[i].bir.y + 1; j < 2022; j++)
//与基准之间有多少个闰年,本年除外
{
if (((j % 4 == 0) && (j % 100 != 0)) || (j % 400 == 0)) {
stu[i].sumday = stu[i].sumday + 1;
}
}
stu[i].sumday = stu[i].sumday + 306 + 94;
if (stu[i].bir.m == 2)
//二月
/{
stu[i].sumday = stu[i].sumday + (29 - stu[i].bir.d);
} else
//二月以前
{
stu[i].sumday = stu[i].sumday + 29 + (31 - stu[i].bir.d);
}
} else
//月份大于二月
{
for (j = stu[i].bir.y + 1; j < 2022; j++)
//与基准之间有多少个闰年,本年除外
{
if (((j % 4 == 0) && (j % 100 != 0)) || (j % 400 == 0)) {
stu[i].sumday = stu[i].sumday + 1;
}
}
switch (stu[i].bir.m) {
case 3:
stu[i].sumday = stu[i].sumday + 306 + 94 - stu[i].bir.d;
break;
case 4:
stu[i].sumday = stu[i].sumday + 275 + 94 - stu[i].bir.d;
break;
case 5:
stu[i].sumday = stu[i].sumday + 245 + 94 - stu[i].bir.d;
break;
case 6:
stu[i].sumday = stu[i].sumday + 214 + 94 - stu[i].bir.d;
break;
case 7:
stu[i].sumday = stu[i].sumday + 184 + 94 - stu[i].bir.d;
break;
case 8:
stu[i].sumday = stu[i].sumday + 152 + 94 - stu[i].bir.d;
break;
case 9:
stu[i].sumday = stu[i].sumday + 122 + 94 - stu[i].bir.d;
break;
case 10:
stu[i].sumday = stu[i].sumday + 92 + 94 - stu[i].bir.d;
break;
case 11:
stu[i].sumday = stu[i].sumday + 61 + 94 - stu[i].bir.d;
break;
case 12:
stu[i].sumday = stu[i].sumday + 31 + 94 - stu[i].bir.d;
break;
}
}
} else
//平年
{
a = 2022 - stu[i].bir.y - 1;
stu[i].sumday = a * 365;
switch (stu[i].bir.m) {
case 1:
stu[i].sumday = stu[i].sumday + 365 + 94 - stu[i].bir.d;
break;
case 2:
stu[i].sumday = stu[i].sumday + 334 + 94 - stu[i].bir.d;
break;
case 3:
stu[i].sumday = stu[i].sumday + 306 + 94 - stu[i].bir.d;
break;
case 4:
stu[i].sumday = stu[i].sumday + 275 + 94 - stu[i].bir.d;
break;
case 5:
stu[i].sumday = stu[i].sumday + 245 + 94 - stu[i].bir.d;
break;
case 6:
stu[i].sumday = stu[i].sumday + 214 + 94 - stu[i].bir.d;
break;
case 7:
stu[i].sumday = stu[i].sumday + 184 + 94 - stu[i].bir.d;
break;
case 8:
stu[i].sumday = stu[i].sumday + 152 + 94 - stu[i].bir.d;
break;
case 9:
stu[i].sumday = stu[i].sumday + 122 + 94 - stu[i].bir.d;
break;
case 10:
stu[i].sumday = stu[i].sumday + 92 + 94 - stu[i].bir.d;
break;
case 11:
stu[i].sumday = stu[i].sumday + 61 + 94 - stu[i].bir.d;
break;
case 12:
stu[i].sumday = stu[i].sumday + 31 + 94 - stu[i].bir.d;
break;
}
for (j = stu[i].bir.y; j < 2022; j++)
//与基准间有多少个闰年
{
if (((j % 4 == 0) && (j % 100 != 0)) || (j % 400 == 0)) {
stu[i].sumday = stu[i].sumday + 1;
}
}
} b = stu[i].sumday % 7;
switch (b) {
case 0:
stu[i].x = 1;
break;
case 1:
stu[i].x = 2;
break;
case 2:
stu[i].x = 3;
break;
case 3:
stu[i].x = 4;
break;
case 4:
stu[i].x = 5;
break;
case 5:
stu[i].x = 6;
break;
case 6:
stu[i].x = 0;
break;
}
} else
//2022及之后
{
if (stu[i].bir.y == 2022)
//在2022本年内
{
if (stu[i].bir.m == 4)
//在4月
{
if (stu[i].bir.d >= 4)
//基准之前
{
stu[i].sumday = stu[i].bir.d - 4;
} else
//基准之后
{
stu[i].sumday = 4 - stu[i].bir.d;
}
}
if (stu[i].bir.m > 4)
//四月后
{
stu[i].x = 1;
switch (stu[i].bir.m) {
case 4:
stu[i].sumday = stu[i].bir.d - 4;
break;
case 5:
stu[i].sumday = stu[i].bir.d - 4 + 30;
break;
case 6:
stu[i].sumday = stu[i].bir.d - 4 + 61;
break;
case 7:
stu[i].sumday = stu[i].bir.d - 4 + 91;
break;
case 8:
stu[i].sumday = stu[i].bir.d - 4 + 122;
break;
case 9:
stu[i].sumday = stu[i].bir.d - 4 + 153;
break;
case 10:
stu[i].sumday = stu[i].bir.d - 4 + 183;
break;
case 11:
stu[i].sumday = stu[i].bir.d - 4 + 214;
break;
case 12:
stu[i].sumday = stu[i].bir.d - 4 + 244;
break;
}
printf("%d\n", stu[i].sumday);
b = stu[i].sumday % 7;
switch (b) {
case 0:
stu[i].x = 1;
break;
case 1:
stu[i].x = 2;
break;
case 2:
stu[i].x = 3;
break;
case 3:
stu[i].x = 4;
break;
case 4:
stu[i].x = 5;
break;
case 5:
stu[i].x = 6;
break;
case 6:
stu[i].x = 0;
break;
}
} else
//四月前
{
stu[i].x = 0;
switch (stu[i].bir.m) {
case 1:
stu[i].sumday = 94 - stu[i].bir.d;
break;
case 2:
stu[i].sumday = 63 - stu[i].bir.d;
break;
case 3:
stu[i].sumday = 35 - stu[i].bir.d;
break;
case 4:
stu[i].sumday = 4 - stu[i].bir.d;
break;
}
b = stu[i].sumday % 7;
switch (b) {
case 0:
stu[i].x = 1;
break;
case 1:
stu[i].x = 0;
break;
case 2:
stu[i].x = 6;
break;
case 3:
stu[i].x = 5;
break;
case 4:
stu[i].x = 4;
break;
case 5:
stu[i].x = 3;
break;
case 6:
stu[i].x = 2;
break;
}
}
} else
//2022以后
{
if ((stu[i].bir.y % 4 == 0 && stu[i].bir.y % 100 != 0) || stu[i].bir.y % 400 == 0)
//闰年
{
a = stu[i].bir.y - 2022 - 1;
stu[i].sumday = a365;
if (stu[i].bir.m <= 2)
//3月1日以前
{
for (j = 2023; j < stu[i].bir.y; j++)
//与基准之间有多少个闰年,本年除外
{
if (((j % 4 == 0) && (j % 100 != 0)) || (j % 400 == 0)) {
stu[i].sumday = stu[i].sumday + 1;
}
}
if (stu[i].bir.m == 2)
//二月
{
stu[i].sumday = stu[i].sumday + stu[i].bir.d + 271 + 31;
} else
//一月
{
stu[i].sumday = stu[i].sumday + stu[i].bir.d + 271;
}
} else
//2月29日以后
{
switch (stu[i].bir.m) {
case 3:
stu[i].sumday = stu[i].sumday + 60 + 271 + stu[i].bir.d;
break;
case 4:
stu[i].sumday = stu[i].sumday + 91 + 271 + stu[i].bir.d;
break;
case 5:
stu[i].sumday = stu[i].sumday + 121 + 271 + stu[i].bir.d;
break;
case 6:
stu[i].sumday = stu[i].sumday + 152 + 271 + stu[i].bir.d;
break;
case 7:
stu[i].sumday = stu[i].sumday + 182 + 271 + stu[i].bir.d;
break;
case 8:
stu[i].sumday = stu[i].sumday + 213 + 271 + stu[i].bir.d;
break;
case 9:
stu[i].sumday = stu[i].sumday + 244 + 271 + stu[i].bir.d;
break;
case 10:
stu[i].sumday = stu[i].sumday + 274 + 271 + stu[i].bir.d;
break;
case 11:
stu[i].sumday = stu[i].sumday + 305 + 271 + stu[i].bir.d;
break;
case 12:
stu[i].sumday = stu[i].sumday + 335 + 271 + stu[i].bir.d;
break;
}
for (j = 2023; j < stu[i].bir.y; j++)
//与基准间有多少个闰年,本年除外
{
if (((j % 4 == 0) && (j % 100 != 0)) || (j % 400 == 0)) {
stu[i].sumday = stu[i].sumday + 1;
}
}
}
} else
//平年
{
a = stu[i].bir.y - 2022 - 1;
stu[i].sumday = a * 365;
switch (stu[i].bir.m) {
case 1:
stu[i].sumday = stu[i].sumday + 271 + stu[i].bir.d;
break;
case 2:
stu[i].sumday = stu[i].sumday + 31 + 271 + stu[i].bir.d;
break;
case 3:
stu[i].sumday = stu[i].sumday + 59 + 271 + stu[i].bir.d;
break;
case 4:
stu[i].sumday = stu[i].sumday + 90 + 271 + stu[i].bir.d;
break;
case 5:
stu[i].sumday = stu[i].sumday + 120 + 271 + stu[i].bir.d;
break;
case 6:
stu[i].sumday = stu[i].sumday + 151 + 271 + stu[i].bir.d;
break;
case 7:
stu[i].sumday = stu[i].sumday + 181 + 271 + stu[i].bir.d;
break;
case 8:
stu[i].sumday = stu[i].sumday + 212 + 271 + stu[i].bir.d;
break;
case 9:
stu[i].sumday = stu[i].sumday + 243 + 271 + stu[i].bir.d;
break;
case 10:
stu[i].sumday = stu[i].sumday + 273 + 271 + stu[i].bir.d;
break;
case 11:
stu[i].sumday = stu[i].sumday + 304 + 271 + stu[i].bir.d;
break;
case 12:
stu[i].sumday = stu[i].sumday + 334 + 271 + stu[i].bir.d;
break;
}
for (j = 2023; j < stu[i].bir.y; j++)
//与基准间有多少个闰年
{
if (((j % 4 == 0) && (j % 100 != 0)) || (j % 400 == 0)) {
stu[i].sumday = stu[i].sumday + 1;
}
}
}
b = stu[i].sumday % 7;
switch (b) {
case 0:
stu[i].x = 1;
break;
case 1:
stu[i].x = 2;
break;
case 2:
stu[i].x = 3;
break;
case 3:
stu[i].x = 4;
break;
case 4:
stu[i].x = 5;
break;
case 5:
stu[i].x = 6;
break;
case 6:
stu[i].x = 0;
break;
}
}
} if ((stu[i].bir.y % 4 == 0 && stu[i].bir.y % 100 != 0) || stu[i].bir.y % 400 == 0) {
if (stu[i].bir.m == 1 || stu[i].bir.m == 3 || stu[i].bir.m == 5 || stu[i].bir.m == 7 || stu[i].bir.m == 8 || stu[i].bir.m == 10 || stu[i].bir.m == 12) {
for (j = 1; j <= 31; j++) {
if (j < 10) {
if (j == n3) {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x * 100, 70 + n * 50, s);
} else {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x * 100, 70 + n * 50, s);
}
} else {
if (j == n3) {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x * 100, 70 + n * 50, s);
} else {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x * 100, 70 + n * 50, s);
}
}
stu[i].x += 1;
if (stu[i].x == 7) {
stu[i].x = 0;
n += 1;
}
}
}
if (stu[i].bir.m == 4 || stu[i].bir.m == 6 || stu[i].bir.m == 9 || stu[i].bir.m == 11) {
for (j = 1; j <= 30; j++) {
if (j < 10) {
if (j == n3) {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x * 100, 70 + n * 50, s);
} else {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x * 100, 70 + n * 50, s);
}
} else {
if (j == n3) {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x * 100, 70 + n * 50, s);
} else {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x * 100, 70 + n * 50, s);
}
}
stu[i].x += 1;
if (stu[i].x == 7) {
stu[i].x = 0;
n += 1;
}
}
}
if (stu[i].bir.m == 2) {
for (j = 1; j <= 29; j++) {
if (j < 10) {
if (j == n3) {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x * 100, 70 + n * 50, s);
} else {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x * 100, 70 + n * 50, s);
}
} else {
if (j == n3) {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x * 100, 70 + n * 50, s);
} else {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x * 100, 70 + n * 50, s);
}
}
stu[i].x += 1;
if (stu[i].x == 7) {
stu[i].x = 0;
n += 1;
}
}
}
} else {
if (stu[i].bir.m == 1 || stu[i].bir.m == 3 || stu[i].bir.m == 5 || stu[i].bir.m == 7 || stu[i].bir.m == 8 || stu[i].bir.m == 10 || stu[i].bir.m == 12) {
for (j = 1; j <= 31; j++) {
if (j < 10) {
if ((j == n3) && (mon -> tm_mon == n2) && (mon -> tm_year == n1)) {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x100, 70 + n50, s);
} else {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x100, 70 + n50, s);
}
} else {
if (j == n3) {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x100, 70 + n50, s);
} else {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x100, 70 + n50, s);
}
}
stu[i].x += 1;
if (stu[i].x == 7) {
stu[i].x = 0;
n += 1;
}
}
}
if (stu[i].bir.m == 4 || stu[i].bir.m == 6 || stu[i].bir.m == 9 || stu[i].bir.m == 11) {
for (j = 1; j <= 30; j++) {
if (j < 10) {
if (j == n3) {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x * 100, 70 + n * 50, s);
} else {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x * 100, 70 + n * 50, s);
}
} else {
if ((j == n3) && (mon -> tm_mon == n2) && (mon -> tm_year == n1)) {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x100, 70 + n50, s);
} else {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x100, 70 + n50, s);
}
}
stu[i].x += 1;
if (stu[i].x == 7) {
stu[i].x = 0;
n += 1;
}
}
}
if (stu[i].bir.m == 2) {
for (j = 1; j <= 28; j++) {
if (j < 10) {
if (j == n3) {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x * 100, 70 + n * 50, s);
} else {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x * 100, 70 + n * 50, s);
}
} else {
if (j == n3) {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x * 100, 70 + n * 50, s);
} else {
_stprintf(s, _T("%d"), j);
outtextxy(900 + stu[i].x * 100, 70 + n * 50, s);
}
}
stu[i].x += 1;
if (stu[i].x == 7) {
stu[i].x = 0;
n += 1;
}
}
}
}
} _stprintf(s, _T("%d"), n1 + 1900);
outtextxy(1100, 400, s);
_stprintf(s, _T("%d"), n2 + 1);
outtextxy(1300, 400, s);
}
int main() {
initgraph(1600, 800);
int t = 1, t1, t2, t3, i, v = 0, a = 0, x = 0, y = 0, k = 0, j = 0, m = 0, n = 0, hour, minute, sec, m1, m2, m3,*
n1,*n2,*n3, dm1 = 0, dm2 = 0;
double c, x1, y1, x2, y2, x3, y3;
float H = 0, S = 1, L = 0.5f;
wchar_t h[ 10];
char z;
TCHAR k1[ 5]="日", k2[5] = "一", k3[5] = "二", k4[5] = "三", k5[5] = "四", k6[5] = "五", k7[5] = "六", s[5], com[100];
time_t timep;
struct tm *p;
time( & timep);
p = localtime( & timep);
c = (3.14 / 180) * 6;
t1 = p -> tm_sec - 15;
t2 = p -> tm_min - 15;
t3 = p -> tm_hour - 3;
m1 = p -> tm_year;
m2 = p -> tm_mon;
m3 = p -> tm_mday;
n1 =&m1;
n2 =&m2;
n3 =&m3;
for (i = 0; i <= 60; i++) {
x1 = 400 + (300 * cos(t1 * c));
y1 = 400 + (300 * sin(t1 * c));
setlinecolor(WHITE);
line(400, 400, x1, y1);
t1++;
}
clearcircle(400, 400, 280);
for (i = 0; i <= 60; i++) {
x1 = 400 + (300 * cos(i * c));
y1 = 400 + (300 * sin(i * c));
if (i % 5 == 0) {
line(400, 400, x1, y1);
}
}
clearcircle(400, 400, 260);
_stprintf(s, _T("%d"), 12);
outtextxy(395, 150, s);
_stprintf(s, _T("%d"), 3);
outtextxy(650, 400, s);
_stprintf(s, _T("%d"), 6);
outtextxy(400, 650, s);
_stprintf(s, _T("%d"), 9);
outtextxy(150, 400, s);
circle(400, 400, 300);
x1 = 400 + 200 * cos(t1 * c);
y1 = 400 + 200 * sin(t1 * c);
x2 = 400 + 100 * cos(t2 * c);
y2 = 400 + 100 * sin(t2 * c);
x3 = 400 + 50 * cos(t3 * c * 5);
y3 = 400 + 50 * sin(t3 * c * 5);
t1 = p -> tm_sec - 15;
settextstyle(24, 0, _T("Consolas"));
outtextxy(900, 20, k1);
outtextxy(1000, 20, k2);
outtextxy(1100, 20, k3);
outtextxy(1200, 20, k4);
outtextxy(1300, 20, k5);
outtextxy(1400, 20, k6);
outtextxy(1500, 20, k7);
while (1) {
setlinecolor(GREEN);
line(400, 400, x2, y2);
setlinecolor(BLUE);
line(400, 400, x3, y3);
setlinecolor(RED);
line(400, 400, x1, y1);
time( & timep);
p = localtime( & timep);
t1 = p -> tm_sec - 15;
if (kbhit()) {
n = getch();
z =char(n);
if (n == 224) {
m = getch();
}
switch (int(n)){
case 97:
t2++;
break;
case 100:
t2 = t2 - 1;
break;
case 119:
t3 = t3 + 1;
break;
case 115:
t3 = t3 - 1;
break;
case 116:
t = - t;
break;
case 224:
break;
default:
com[a] = z;
a++;
}
if (t == 1) {
for (i = v; i <= a - 1; i++) {
if (48 <= com[i] && com[i] <= 57 || com[i] == 13 || com[i] == 8) {
if (com[i] == 8) {
a -= 2;
}
if (com[i] == 13) {
if (j == 0) {
for (v = 0; v < i; v++) {
dm1 = dm1 +int(com[v] - '0') * pow(10.0, i - v - 1);
} j++;
v = i + 1;
} else {
for (v; v < i; v++) {
dm2 = dm2 +int(com[v] - '0') * pow(10.0, i - v - 1);
} j = 0;
k = 2;
}
}
} outtextxy(1000 + i * 10, 700, com[i]);
}
} else {
for (i = v; i <= a - 1; i++) {
if (48 <= com[i] && com[i] <= 57 || com[i] == 13 || com[i] == 8) {
if (com[i] == 8) {
a -= 2;
}
if (com[i] == 13) {
if (j == 0) {
for (v = 0; v < i; v++) {
dm1 = dm1 +int(com[v] - '0') * pow(10.0, i - v - 1);
} j++;
v = i + 1;
} else {
for (v; v < i; v++) {
dm2 = dm2 +int(com[v] - '0') * pow(10.0, i - v - 1);
} j = 0;
k = 1;
}
}
} outtextxy(350 + i * 10, 750, com[i]);
}
}
} if (k == 2) {
m1 = dm1 - 1900;
m2 = dm2 - 1;
k = 0;
a = 0;
v = 0;
dm1 = 0;
dm2 = 0;
clearrectangle(870, 50, 1600, 800);
}
if (k == 1) {
hour = dm1 - 3;
minute = dm2 - 15;
k = 0;
a = 0;
v = 0;
dm1 = 0;
dm2 = 0;
clearrectangle(0, 750, 900, 800);
}
if (t1 == - 15 && x == 0) {
t2 = t2 + 1;
x++;
}
if (t2 == 45 && x == 0) {
t3++;
x++;
t2 = - 15;
}
if (t3 == 45 && x == 0) {
t3 = - 3;
}
if (t1 == - 14) {
x = 0;
}
o(n1, n2, n3, m, p);
m = 0;
if ((t3 == hour) && (t2 == minute) && p -> tm_sec <= 10) {
H += 100;
setlinecolor(HSLtoRGB(H, S, L));
if (H >= 900) {
H = 0;
}
circle(400, 400, 300);
if (p -> tm_sec == 10) {
setlinecolor(WHITE);
circle(400, 400, 300);
}
}
x1 = 400 + (200 cos(t1c));
y1 = 400 + (200 sin(t1c));
x2 = 400 + (100 cos(t2c));
y2 = 400 + (100 sin(t2c));
x3 = 400 + (50 cos(t3c5));
y3 = 400 + (50 sin(t3c * 5));
clearcircle(400, 400, 205);
} _getch();
closegraph();
return 0;
}