| 
 | 
 
 
发表于 2014-3-12 15:51:44
|
显示全部楼层
 
 
 
#include <stdio.h> 
void main() 
{ 
   extern void calendar(int,int); 
   int year,month; 
   scanf("%d,%d",&year,&month);       //输入年-月,格式如:2000,1 
   printf(" 一 二 三 四 五 六 日\n"); 
   calendar(year,month); 
} 
void calendar(int year,int month) 
{ 
   int days=0,day=0; 
   int xq=1;         //记录星期 
   int x,i=0;         //x是记录当前输入月份天数 
   long all=0;         //all 
   int date=1; 
   if(year>=2007) 
   { 
  x=year-2007; 
L: 
  if(i<x) 
  { 
if((2007+i)%4==0&&(2007+i)%100!=0||(2007+i)%400==0) 
{ 
   all+=366; 
   i++; 
} 
else 
{ 
   all+=365; 
   i++; 
} 
goto L; 
  } 
   } 
   if(year<2007) 
   { 
x=2007-year; 
M: 
if(i<x) 
{ 
    if((2007-i)%4==0&&(2007-i)%100!=0||(2007-i)%400==0) 
    { 
  all-=366; 
  i++; 
    } 
    else 
    { 
  all-=365; 
  i++; 
    } 
    goto M; 
} 
   } 
   if(year%4==0&&year%100!=0||year%400==0) 
days=366; 
   else 
days=365; 
   for(i=1;i<=month;i++) 
   { 
switch(i) 
{ 
    case 1:day+=31;x=31;break; 
    case 2: 
    if(365==days) 
{ 
  day+=28; 
  x=28; 
} 
    else 
{ 
  day+=29; 
  x=29; 
} 
    break; 
    case 3:day+=31;x=31;break; 
    case 4:day+=30;x=30;break; 
    case 5:day+=31;x=31;break; 
    case 6:day+=30;x=30;break; 
    case 7:day+=31;x=31;break; 
    case 8:day+=31;x=31;break; 
    case 9:day+=30;x=30;break; 
    case 10:day+=31;x=31;break; 
    case 11:day+=30;x=30;break; 
    case 12:day+=31;x=31;break; 
} 
   } 
   all+=day-x; 
   while(all<0) 
   { 
   if(year%4==0&&year%100!=0||year%400==0) 
   { 
   all+=366; 
   year--; 
   if(all>0) 
   { 
   all--; 
   goto LOOP; 
   } 
} 
   else 
   { 
   all+=365; 
   if(all>0) 
   { 
   all--; 
   goto LOOP; 
   } 
   } 
   } 
LOOP: 
   while(all) 
   { 
all--; 
xq++; 
if(xq>7) 
    xq=1; 
   } 
   while(x) 
   { 
if(1==date) 
{ 
if(xq==2) 
printf("   "); 
if(xq==3) 
printf("      "); 
if(xq==4) 
printf("         "); 
if(xq==5) 
printf("            "); 
if(xq==6) 
printf("               "); 
if(xq==7) 
printf("                  "); 
} 
 
if(1==xq) 
{   
    for(i=1;i<=7;i++) 
    { 
  printf("%3d",date); 
  xq++; 
  date++; 
  x--; 
  if(0==x) 
goto A; 
    } 
    printf("\n"); 
xq=1; 
} 
if(2==xq) 
{ 
    for(i=2;i<=7;i++) 
    { 
  printf("%3d",date); 
  xq++; 
  if(xq>7) 
         break; 
  date++; 
  x--; 
  if(0==x) 
goto A; 
    } 
    printf("\n"); 
xq=1; 
} 
if(3==xq) 
{ 
    for(i=3;i<=7;i++) 
    { 
  printf("%3d",date); 
  xq++; 
  date++; 
  x--; 
  if(0==x) 
goto A; 
    } 
    printf("\n"); 
xq=1; 
} 
if(4==xq) 
{ 
    for(i=4;i<=7;i++) 
    { 
  printf("%3d",date); 
  xq++; 
  date++; 
  x--; 
  if(0==x) 
goto A; 
    } 
    printf("\n"); 
xq=1; 
} 
if(5==xq) 
{ 
    for(i=5;i<=7;i++) 
    { 
  printf("%3d",date); 
  xq++; 
  date++; 
  x--; 
  if(0==x) 
goto A; 
    } 
    printf("\n"); 
xq=1; 
} 
if(6==xq) 
{ 
    for(i=6;i<=7;i++) 
    { 
  printf("%3d",date); 
  xq++; 
  date++; 
  x--; 
  if(0==x) 
goto A; 
    } 
    printf("\n"); 
xq=1; 
} 
if(7==xq) 
{ 
    printf("%3d\n",date); 
xq=1; 
    date++; 
    x--; 
    if(0==x) 
  goto A; 
} 
   } 
A: 
   printf("\n********************"); 
} |   
 
 
 
 |