讲解代码,每一句代码讲解

#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;}

img


你自己看的清楚吗

代码贴出来后你自己不看一下有没有贴合适吗?

题主贴的这代码样式也挺有意思的

手动回车分解了一下

    #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)
                        //31日以前 
                        {
                            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
                        //229日以后 
                        {
                            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;
    }