mт、__宠爱 发表于 2011-11-25 21:51:01

万年历!花了偶三天时间哎!!



int f (int temp_month, int year, int len1)
{
    int month;
    int i, j = 0;
    int day1;
    int k = 1;
   
    for(month = 1; month < temp_month; month++)
    {
      if((!(year % 4) && (year % 100)) || (!(year % 400)))
      {
            if(month == 2)
            {
                day1 = 29;
            }
      }
      else
      {
            if(month == 2)
            {
                day1 = 28;
            }
      }
      
      if(month >= 1 && month <= 7 && month != 2)
      {
            if(month % 2)
            {
                day1 = 31;   
            }
            else
            {
                day1 = 30;
            }
      }
      
      else if(month >= 8 && month <= 12)
      {
            if(month % 2)
            {
                day1 = 30;
            }
            else
            {
                day1 = 31;
            }
      }
      
      
      for(i = 1; i <= day1; i++)
      {
            if(i == len1)
            {
                k = 7;
                j = 1;
            }
            
            
            else if(!(k % 7))
            {
                len1 = i;
            }
            
            
            if(j == 1)
            {
                k++;
            }
      }
      
      len1 = 7 - (day1 - len1);
    }
    return 7 - len1;
}
void panduan (int year, int month, int day)
{
    int i;
    int j = 0;
    int k = 1;
    int temp_year;
    int len;
    int sum = 2;
    int temp_day;
    int temp_year1;
   
   
    temp_year1 = year;
    temp_day = day;
   
    if((!(year % 4) && (year % 100)) || (!(year % 400)))
    {
      if(month == 2)
      {
            day = 29;
      }
    }
    else
    {
      if(month == 2)
      {
            day = 28;
      }
    }
   
    if(month >= 1 && month <= 7 && month != 2)
    {
      if(month % 2)
      {
            day = 31;   
      }
      else
      {
            day = 30;
      }
    }
   
    else if(month >= 8 && month <= 12)
    {
      if(month % 2)
      {
            day = 30;
      }
      else
      {
            day = 31;
      }
    }
   
    /* printf(" Sunday MondayTuesdayWednesdayThursdayFridaySaturday"); */
   
    printf("SMTWTFS");
    printf("\n");
   
    if(year == 1901)
    {
      len = 2;
      
      if(month > 1)
      {
            len = f(month, year, 5);
      }
      
      
      for(i = 0; i < (len * 3); i++)
      {
            printf(" ");
            j++;
      }
      
    }
   
    else
    {
      
      while(1)
      {
            
            year = year - 1;
            
            if((!(year % 4) && (year % 100)) || (!(year % 400)))
            {
                temp_year = 366;
            }
            
            else
            {
                temp_year = 365;
            }
            
            len = temp_year % 7;
            sum = sum + len;
            
            if(year == 1901)
            {
                break;
            }
            
      }
      
      
      if(sum >= 7)
      {
            sum = sum % 7;
      }
      
      if(month > 1)
      {
            sum = f(month, temp_year1, 7 - sum);
      }
      
      
      for(i = 0; i < (sum * 3); i++)
      {
            printf(" ");
            j++;
      }
      
      
      
    }
   
    j = 7 - j / 3;
   
    for(i = 1; i <= day; i++)
    {
      
      if(i == temp_day)
      {
            printf("[%d]", temp_day);
      }
      
      else
      {
            printf("%3d", i);
      }
      
      if(k == j)
      {
            printf("\n");
            k = 7;
      }
      
      else if((!(k % 7) && k))
      {
            printf("\n");
      }
      
      k++;
      
    }
}
# include "stdio.h"
# include "conio.h"
void main()
{
    int year, month, day;
    int i = 0;
    char c;
    char ch;
    char ch1;
s:do
    {   
      i = 0;
      printf("\n请输入您要查询的日期 (格式:年-月-日):");
      scanf("%d-%d-%d", &year, &month, &day);
      ch1 = getchar();
      
      if(ch1 != '\n' || ch1 == 0x20)
      {
            printf("对不起,输入错误!请重新输入!\n");
            i = 1;
            while(getchar() != '\n')
            {
                continue;
            }
            continue;
      }
      if((year >= 1901) && (month >= 1 || month <= 12) && (day >= 1 || day <= 31))
      {
            if((!(year % 4) && (year % 100)) || (!(year % 400)))
            {
                if(month == 2)
                {
                  if(day > 29)
                  {
                        printf("error!\n");
                        i = 1;
                  }
                }
            }
            
            else
            {
                if(month == 2)
                {
                  if(day > 28)
                  {
                        printf("error!\n");
                        i = 1;
                  }
                }
            }
            
            if(month >= 1 && month <= 7 && month != 2)
            {
                if(month % 2)
                {
                  if(day > 31)
                  {
                        printf("error!\n");
                        i = 1;
                  }
                }
                else
                {
                  if(day > 30)
                  {
                        printf("error!\n");
                        i = 1;
                  }
                  
                }
            }
            
            else if(month >= 8 && month <= 12)
            {
                if(month % 2)
                {
                  if(day > 30)
                  {
                        printf("error!\n");
                        i = 1;
                  }
                }
                else
                {
                  if(day > 31)
                  {
                        printf("error!\n");
                        i = 1;
                  }
                  
                }
            }
      }
      
      else
      {
            printf("对不起,输入错误!请重新输入!\n");
            i = 1;
      }
      
      if(month < 1 || day < 1)
      {
            printf("对不起,输入错误!请重新输入!\n");
            i = 1;
      }
      
      
    } while (i == 1);
   
   
    printf("\n\n\n");
    printf("%d - %d - %d ", year, month, day);
    printf("\n\n");
    panduan(year, month, day);
   
    printf("\n\n功能:\n   1.左键:上个月;\n   2.右键:下个月;\n   3.上键:前年;\n   4.下键:明年;\n");
    printf("   5.'+'明天;\n   6.'-'昨天:\n   7.重新查询请按'y';\n");
   
    do
    {
      for(i = 0; i < 2; i++)
      {
            *(ch + i) = i;
      }                               //每次都将ch初始化;
      *(ch + 1) = getch();
      if(*(ch + 1) == -32)
      {
            *ch = getch();
      }
      
      if(*(ch + 1) == 0x2b)         //判断是否按下 '+';
      {
            day++;
                        
            if(month == 12 && day > 31)
            {
                day = 1;
                year++;
                month = 1;
            }
            if((!(year % 4) && (year % 100)) || (!(year % 400)))
            {
                if(month == 2)
                {
                  if(day > 29)
                  {
                        month++;
                        day = 1;
                  }
                }
            }
            else
            {
                if(month == 2)
                {
                  if(day > 28)
                  {
                        month++;
                        day = 1;
                  }
                }
            }
            
            if(month >= 1 && month <= 7 && month != 2)
            {
                if(month % 2)
                {
                  if(day > 31)
                  {
                        month++;
                        day = 1;
                  }
                }
                else
                {
                  if(day > 30)
                  {
                        month++;
                        day = 1;
                  }
                }
            }
            
            else if(month >= 8 && month <= 12)
            {
                if(month % 2)
                {
                  if(day > 30)
                  {
                        month++;
                        day = 1;
                  }
                }
                else
                {
                  if(day > 31)
                  {
                        month++;
                        day = 1;
                  }
                }
            }
            printf("\n\n\n");
            printf("%d - %d - %d ", year, month, day);
            printf("\n\n");
            panduan(year, month, day);
      }
      
      
      else if(*(ch + 1) == 0x2d)            //判断是否按下 '-';
      {
            day--;
            if((!(year % 4) && (year % 100)) || (!(year % 400)))
            {
                if(month == 3)
                {
                  if(day < 1)
                  {
                        month--;
                        day = 29;
                  }
                }
            }
            else
            {
                if(month == 3)
                {
                  if(day < 1)
                  {
                        month--;
                        day = 28;
                  }
                }
            }
            
            if(month >= 1 && month <= 7 && month != 2)
            {
                if(month % 2)
                {
                  if(day < 1)
                  {
                        month--;
                        day = 30;
                  }
                }
                else
                {
                  if(day < 1)
                  {
                        month--;
                        day = 31;
                  }
                }
            }
            
            else if(month >= 8 && month <= 12)
            {
                if(month % 2)
                {
                  if(day < 1)
                  {
                        month--;
                        day = 31;
                  }
                }
                else
                {
                  if(day < 1 && month != 8)
                  {
                        month--;
                        day = 30;
                  }
                  else if(month == 8 && day < 1)
                  {
                        month--;
                        day = 31;
                  }
                }
            }
            
            if(month < 1)
            {
                year--;
                month = 12;
                day = 31;
            }
            if(month == 2 && day < 1)
            {
                month--;
                day = 31;
            }
            printf("\n\n\n");
            printf("%d - %d - %d ", year, month, day);
            printf("\n\n");
            panduan(year, month, day);
      }
      else if(*ch == 0x4b)       //判断是否按下左键;
      {   
            if(month == 1)
            {
                year--;
                month = 12;
            }
            
            else
            {
                month--;
            }
            
            printf("\n\n\n");
            printf("%d - %d - %d ", year, month, day);
            printf("\n\n");
            panduan(year, month, day);
      }
      
      else if(*ch == 0x4d)      //判断是否按下右键;
      {
            if(month == 12)
            {
                year++;
                month = 1;
            }
            
            else
            {
                month++;
            }
            
            printf("\n\n\n");
            printf("%d - %d - %d ", year, month, day);
            printf("\n\n");
            panduan(year, month, day);
      }
      
      else if(*ch == 0x48)          //判断是否按下上键;
      {
            if(year == 1901)
            {
                printf("\n对不起,本软件功能有限!请重新输入!!\n");
                continue;
            }
            
            else
            {
                year--;
            }
            
            printf("\n\n\n");
            printf("%d - %d - %d ", year, month, day);
            printf("\n\n");
            panduan(year, month, day);
      }
      
      else if(*ch == 0x50)   //判断是否按下下键;
      {
            year++;
            printf("\n\n\n");
            printf("%d - %d - %d ", year, month, day);
            printf("\n\n");
            panduan(year, month, day);
      }
      
      else if(*(ch + 1) == 'y')
      {
            goto s;
      }
      else
      {
            break;
      }
      
      
    } while(1);
}

哎,好累啊!!!






cm1031821904 发表于 2011-11-25 21:57:50

呼呼{:5_104:}

死亡请帖 发表于 2011-11-25 23:28:10

强大,赞一个~!{:5_106:}

yulin3192 发表于 2011-11-25 23:39:36

下载了
研究研究呵呵

Y.H 发表于 2011-11-26 00:06:28

cm1031821904 发表于 2011-11-25 21:57 static/image/common/back.gif
呼呼

哥们,你能别当水军好不? 你看帖觉得没话说,就别说,我看到好多帖子都有你的水印!

怎么搞的论坛是用来灌水似的?

cm1031821904 发表于 2011-11-26 22:27:59

:'(我才开始学。还不会哦

mт、__宠爱 发表于 2011-11-26 22:52:04

我也是新手啊!!!!
哎,一起努力啊!!!

542971618 发表于 2011-11-27 22:55:45

Answer.zhang 发表于 2014-10-23 13:49:35

加油,支持!

shuhaitao 发表于 2014-10-23 22:37:28

牛牛牛

Mr.屎壳螂 发表于 2014-10-23 22:52:56

好顶赞,我也写过一个,但是没你这个功能多~
下代码的朋友 开头加个头文件~~

网络学习 发表于 2014-10-24 00:50:46

谢谢分享    严重支持
页: [1]
查看完整版本: 万年历!花了偶三天时间哎!!