首页 > 编程资源分享区 > C/C++源代码共享 > 万年历_输入年月日就可以查询到星期几
2006
12-27

万年历_输入年月日就可以查询到星期几





< = src="/AD/200611/20.js">


#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>


void runnian();
void showweek();
int menu_select();


struct ymd
{
 int year;
 int month;
 int week;
 int day;
};
struct ymd showymd;


void runnian()
{
 int year,n=0;
 printf(“请输入年份:\n”);
 scanf(“%d”,&showymd.year);
 for(year=1900;year<=showymd.year;year++)
  if((year%4==0&&year%100!=0)||(year%400==0))
  { 
   printf(“这些闰年为%d\n”,year);
      n++;
  }
    printf(“共有%d个闰年\n”,n);
}


void showweek()
{  
 int y_day,total_day,p_year,leap,i,num=0;
 printf(“请输入年:\n”);
 scanf(“%d”,&showymd.year);
    printf(“请输入月:\n”);
 scanf(“%d”,&showymd.month);
    printf(“请输入日:\n”);
 scanf(“%d”,&showymd.day);
 if((showymd.year%4==0&&showymd.year%100!=0)||(showymd.year%400==0))
  leap=1;
  else
  leap=0;
 if((showymd.month>=1&&showymd.month<=12)&&(leap==1))
    switch(showymd.month)
   {
   case 1:y_day=showymd.day;
           break;
   case 2:y_day=31+showymd.day;
        break;
            case 3:y_day=60+showymd.day;
        break;
            case 4:y_day=91+showymd.day;
       break;
            case 5:y_day=121+showymd.day;
       break;
            case 6:y_day=152+showymd.day;
       break;
            case 7:y_day=182+showymd.day;
       break;
            case 8:y_day=213+showymd.day;
       break;
            case 9:y_day=244+showymd.day;
       break;
            case 10:y_day=274+showymd.day;
                   break;
            case 11:y_day=305+showymd.day;
       break;
            case 12:y_day=335+showymd.day;
       break;
   default:break;
   }
      else
  if(leap==0)
   switch(showymd.month)
  {
          case 1:y_day=showymd.day;
           break;
       case 2:y_day=31+showymd.day;
        break;
          case 3:y_day=59+showymd.day;
        break;
          case 4:y_day=90+showymd.day;
       break;
          case 5:y_day=120+showymd.day;
       break;
          case 6:y_day=151+showymd.day;
       break;
          case 7:y_day=181+showymd.day;
       break;
          case 8:y_day=212+showymd.day;
       break;
          case 9:y_day=243+showymd.day;
       break;
          case 10:y_day=273+showymd.day;
                   break;
          case 11:y_day=304+showymd.day;
       break;
          case 12:y_day=334+showymd.day;
       break;
       default:break;
  }
    for(p_year=1900;p_year<showymd.year;p_year++)
  {
  if((p_year%4==0&&p_year%100!=0)||(p_year%400==0))
         num++;
  }
 total_day=(showymd.year-1900-num)*365+num*366+y_day;
    i=total_day%7;
 if(total_day<7)
      showymd.week=(total_day+7)%7;
 else
  showymd.week=(total_day+7)%7;
     if(showymd.week==0)
   showymd.week=showymd.week+7;
   printf(“离1900年共有%d天\n”,total_day);
   printf(“%d年%d月%d号为星期%d\n”,showymd.year,showymd.month,showymd.day,showymd.week);
}


int menu_select()
{
 int select;
 printf(“*****************************\n”);
 printf(“1.判断闰年:\n”);
 printf(“2.判断星期:\n”);
 printf(“3.退出\n”);
 printf(“请你输入数字1~3:\n”);
 scanf(“%d”,&select);
 if(select<1||select>3)
  printf(“输入的数字必须为1~3:\n”);
 return select;
}


void main(void)
{
 int select;
 for(;;)
 {
  select=menu_select();
  switch(select)
  {
  case 1:runnian();
   break;
        case 2:showweek();
   break;
        case 3:
   exit(0);
   break;
  default:break;
        }
 }
}


留下一个回复