/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
int y,m,d,d2,u,jin=0,s=0; /*定义年月日,和变量日期*/
int m3,m4,m5,m6,m7,m8,m9,m10,m11,m12;
start:;
m3=59,m4=90,m5=120,m6=151,m7=181,m8=212,m9=243,m10=273,m11=304,m12=334;
printf("输入生产年份(2005-2011年):\n");
scanf("%d",&y);
if (y<2005||y>2011)
{ while (s<1)
{printf("您输入年份有误,",s++);goto start;}
{printf("你是第一天玩电脑还是脑子有毛病啊,年份都不会输入?\a请再",s=0);goto start;}
}
else if(y==2005)
jin=6;
else if(y==2006)
jin=0;
else if(y==2007)
jin=1;
else if(y==2008)
{jin=2; m3=60,m4=91,m5=121,m6=152,m7=182,m8=213,m9=244,m10=274,m11=305,m12=335;}
else if(y==2009)
jin=4;
else if(y==2010)
jin=5;
else if(y==2011)
jin=6;
start2:;
printf("输入%d年的生产月份:\n\n",y);
scanf("%d",&m);
if (m<0||m>12) /*琐定一年12个月*/
{ while (s<1)
{printf("您输入月份有误,请重新",s++);goto start2;}
printf("你是第一天玩电脑还是脑子有毛病啊,月份都不会输入?\a请再",s=0);goto start2;
}
else
switch (m)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: d=31; break;
case 4:
case 6:
case 9:
case 11: d=30; break;
case 2:
if((y%4!=0)||(y%100==0)&&(y%400!=0))
d=28;
else d=29;
m3=60+jin,m4=91+jin,m5=121+jin,m6=152+jin,m7=182+jin;
m8=213+jin,m9=244+jin,m10=274+jin,m11=305+jin,m12=335+jin;
break; /* 是闰年2月要加一天*/
default :printf("错误,请重新输入\n\n");
}
printf("%d年的%d月有%d天\n\n",y,m,d); /*自动识别2006年某月的天数*/
goto start3;
start3:;
printf("输入%d年%d月的生产日期:\n\n",y,m);
scanf("%d",&d2);
if (0>d2||d<d2) /*与当月天数比较,纠正用户输入错误*/
{ while (s<1)
{printf("您输入日期有误,请重新",s++);goto start3;}
{printf("你是第一天玩电脑还是脑子有毛病啊,生产日期都不会输入?\a请再",s=0);goto start3;}
}
else
switch (m) /*最菜的计算列表,请高手指点有没有更好的办法*/
{
case 1: u=(d2+jin)/7+(((d2+jin)%7)>0);break;
case 2: u=(d2+31+jin)/7+(((d2+31+jin)%7)>0);break;
case 3: u=(d2+m3+jin)/7+(((d2+m3+jin)%7)>0);break;
case 4: u=(d2+m4+jin)/7+(((d2+m4+jin)%7)>0);break;
case 5: u=(d2+m5+jin)/7+(((d2+m5+jin)%7)>0);break;
case 6: u=(d2+m6+jin)/7+(((d2+m6+jin)%7)>0);break;
case 7: u=(d2+m7+jin)/7+(((d2+m7+jin)%7)>0);break;
case 8: u=(d2+m8+jin)/7+(((d2+m8+jin)%7)>0);break;
case 9: u=(d2+m9+jin)/7+(((d2+m9+jin)%7)>0);break;
case 10: u=(d2+m10+jin)/7+(((d2+m10+jin)%7)>0);break;
case 11: u=(d2+m11+jin)/7+(((d2+m11+jin)%7)>0);break;
case 12: u=(d2+m12+jin)/7+(((d2+m12+jin)%7)>0);break;
}
start4:;
printf("%d年%d月%d日是%d年的第 %d 周,感谢使用本软件!\n\n",y,m,d2,y,u);
goto start;
}
这段程序编译后运行时,如输入点 . 则会被printf函数刷屏,为什么?
如何纠正错误呢?
[此贴子已经被作者于2007-10-2 0:32:51编辑过]