针对上次程序的修正break推出循环问题
经过在下仔细分析,在上次break问题中我的见解是有误的。现在把刚改好的程序拿出来让大家看看顺便也加深一下对break和continue的用法的理解。一下是以个查询某个日期是当年的第几天以及当年是否是闰年的小程序,仅供大家参考!多多指教
#include<iostream.h>
void sfsrn(int y,int m,int d)
{
int c;
if((y%4==0 && y%100!=0) || y%400==0)
{
if(m==2&&d>29)
{
cout<<"*****"<<"输入的日期有误"<<"*****"<<endl;
}
else
{
switch (m)
{
case 1: c=d;break;
case 2: c=31+d;break;
case 3: c=60+d;break;
case 4: c=91+d;break;
case 5: c=121+d;break;
case 6: c=152+d;break;
case 7: c=182+d;break;
case 8: c=213+d;break;
case 9: c=244+d;break;
case 10: c=274+d;break;
case 11: c=305+d;break;
case 12: c=335+d;break;
}
cout<<"今年是闰年"<<endl;
cout<<"今天是第"<<c<<"天"<<endl;
}
}
else
{
if(m==2&&d>28)
{
cout<<"*****"<<"输入的日期有误"<<"*****"<<endl;
}
else
{
switch (m)
{
case 1: c=d;break;
case 2: c=31+d;break;
case 3: c=59+d;break;
case 4: c=90+d;break;
case 5: c=120+d;break;
case 6: c=151+d;break;
case 7: c=181+d;break;
case 8: c=212+d;break;
case 9: c=243+d;break;
case 10: c=273+d;break;
case 11: c=304+d;break;
case 12: c=334+d;break;
}
cout<<"今年是平年"<<endl;
cout<<"今天是第"<<c<<"天"<<endl;
}
}
}
void main()
{
cout<<"想要终止本程序请输入 0 0 0"<<endl;
cout<<"请输入想要查询的日期"<<endl;
int y,m,d;
while(1)
{
cout<<"请输入日期:";
cin>>y>>m>>d;
if(y==0&&m==0&&d==0)
break;
if(y==0||m>12||d<1||d>31||m==4&&d>30||m==6&&d>30||m==9&&d>30||m==11&&d>30)
{
cout<<"输入的日期有误"<<endl;
continue;
}
else
{
sfsrn(y,m,d);
}
}
}