日历
1 #include<stdio.h> 2 int run(int mouth,int day) 3 { 4 int w,i,j,x; 5 int y[13][32]; 6 for(i=1; i<=12; i++) 7 { 8 if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) x=31; 9 if(i==2) x=29; 10 if(i==4||i==6||i==9||i==11) x=30; 11 for(j=1; j<=x; j++) 12 { 13 y[i][j]=day; 14 day++; 15 if(day==8) day=1; 16 } 17 } 18 for(i=mouth;;) 19 { 20 if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) x=31; 21 if(i==2) x=29; 22 if(i==4||i==6||i==9||i==11) x=30; 23 for(j=1; y[i][j]<=x; j++) 24 { 25 if(j==1) 26 { 27 for(w=1; w<7; w++) 28 { 29 if(y[i][j]!=w) 30 { 31 printf(" \t"); 32 } 33 else 34 { 35 printf("1\t"); 36 break; 37 } 38 } 39 if(y[i][j]==7) printf("1\n"); 40 continue; 41 } 42 if(y[i][j]!=7) printf("%d\t",j); 43 else printf("%d\n",j); 44 if(j==x) break; 45 } 46 break; 47 } 48 } 49 int notrun(int mouth,int day) 50 { 51 int run(int mouth,int day); 52 int notrun(int mouth,int day); 53 int w,i,j,x; 54 int y[13][32]; 55 for(i=1; i<=12; i++) 56 { 57 if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) x=31; 58 if(i==2) x=28; 59 if(i==4||i==6||i==9||i==11) x=30; 60 for(j=1; j<=x; j++) 61 { 62 y[i][j]=day; 63 day++; 64 if(day==8) day=1; 65 } 66 } 67 for(i=1; i<=12; i++) 68 { 69 if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) x=31; 70 if(i==2) x=28; 71 if(i==4||i==6||i==9||i==11) x=30; 72 for(j=1; y[i][j]<=x; j++) 73 { 74 if(j==1) 75 { 76 for(w=1; w<7; w++) 77 { 78 if(y[i][j]!=w) 79 { 80 printf(" \t"); 81 } 82 else 83 { 84 printf("1\t"); 85 break; 86 } 87 } 88 if(y[i][j]==7) printf("1\n"); 89 continue; 90 } 91 if(y[i][j]!=7) printf("%d\t",j); 92 else printf("%d\n",j); 93 if(j==x) break; 94 } 95 break; 96 } 97 return 0; 98 } 99 int main() 100 { 101 int year,mouth,i,k,m,n,day; 102 printf("请输入1900年以后的年份\n"); 103 scanf("%d",&year); 104 printf("请输入月份\n"); 105 scanf("%d",&mouth); 106 i=year-1900; 107 m=i/4; 108 n=i%4; 109 day=m*1461+n*365; 110 day=day%7+1; 111 printf("一\t二\t三\t四\t五\t六\t日\n"); 112 if(n==0) run(mouth,day); 113 else notrun(mouth,day); 114 115 116 return 0; 117 }
这是一个日历查询,代码长的原因就是闰年那里和非闰年那里,因为我把这两个变成了不同的函数。而里面只有一个2月是长度不同的。想改的话。也就在下面加工判断语句。就可以缩短很多。但是我也懒得改。这个也因为暂时才学到这个。所以界面还是那个CMD界面。比较丑。也只可以使用输入的办法来看日历,并不能实现选择。而且只有公历,至于农历,我没有弄懂它是怎么算的,也没有添加,等以后可以写界面的时候我在完善这个功能吧;