日历

  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(" 	");
 32                             }
 33                             else
 34                             {
 35                                 printf("1	");
 36                                 break;
 37                             }
 38                         }
 39                         if(y[i][j]==7) printf("1
");
 40                         continue;
 41                     }
 42             if(y[i][j]!=7) printf("%d	",j);
 43             else printf("%d
",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(" 	");
 81                     }
 82                     else
 83                     {
 84                         printf("1	");
 85                         break;
 86                     }
 87                 }
 88                 if(y[i][j]==7) printf("1
");
 89                 continue;
 90             }
 91             if(y[i][j]!=7) printf("%d	",j);
 92             else printf("%d
",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年以后的年份
");
103     scanf("%d",&year);
104     printf("请输入月份
");
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("一	二	三	四	五	六	日
");
112     if(n==0) run(mouth,day);
113     else notrun(mouth,day);
114 
115 
116     return 0;
117 }

这是一个日历查询,代码长的原因就是闰年那里和非闰年那里,因为我把这两个变成了不同的函数。而里面只有一个2月是长度不同的。想改的话。也就在下面加工判断语句。就可以缩短很多。但是我也懒得改。这个也因为暂时才学到这个。所以界面还是那个CMD界面。比较丑。也只可以使用输入的办法来看日历,并不能实现选择。而且只有公历,至于农历,我没有弄懂它是怎么算的,也没有添加,等以后可以写界面的时候我在完善这个功能吧;

原文地址:https://www.cnblogs.com/Tree-dream/p/5334002.html