您的位置:首页 > 编程语言

(百例编程)11.打鱼还是晒网

2012-05-26 13:23 381 查看
题目:中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。

#include<iostream>
using namespace std;
int panduan(int,int ,int);
int main(void)
{
int year,mon,day;
cout<<"现在为1990年1月1日,请输入你要查询的日期:"<<endl;
cout<<"年份:";
cin>>year;
cout<<endl;
cout<<"月份:";
cin>>mon;
cout<<endl;
cout<<"日:";
cin>>day;
cout<<endl;

if (panduan(year,mon,day))
{
int sum=panduan(year,mon,day);
if (sum%5==1||sum%5==2||sum%5==3)
{
cout<<"在"<<year<<"年"<<mon<<"月"<<day<<"日"<<",将进行打鱼!"<<endl;
}
else if (sum%5==0||sum%5==4)
{
cout<<"在"<<year<<"年"<<mon<<"月"<<day<<"日"<<",将进行晒网!"<<endl;
}
cout<<"总天数为:"<<sum<<endl;
}
return 0;
}
/*日期合法性判断与计算*/
int panduan(int a,int b,int c)
{
int y=1990;
int sumd=0,da;//是个信号量,1代表闰年,0代表平年
if (a>=1990&&(b>0&&b<13)&&(c>0&&c<32))
{
if (a%4==0&&a%100!=0||a%400==0)
{
for (int i=1;i<b;i++)
{
switch(i)
{
case 1: da=31;break;
case 2: da=29;break;
case 3: da=31;break;
case 4: da=30;break;
case 5: da=31;break;
case 6: da=30;break;
case 7: da=31;break;
case 8: da=31;break;
case 9: da=30;break;
case 10:da=31;break;
case 11:da=30;break;
case 12:da=31;break;
default:break;
}
sumd+=da;
}

}
else
{
for (int i=1;i<b;i++)
{
switch(i)
{
case 1: da=31;break;
case 2: da=28;break;
case 3: da=31;break;
case 4: da=30;break;
case 5: da=31;break;
case 6: da=30;break;
case 7: da=31;break;
case 8: da=31;break;
case 9: da=30;break;
case 10:da=31;break;
case 11:da=30;break;
case 12:da=31;break;
default:break;
}
sumd+=da;
}
}
for (;y<a;y++)
{
if (y%4==0&&y%100!=0||y%400==0)
{
for (int i=1;i<=12;i++)
{
switch(i)
{
case 1: da=31;break;
case 2: da=29;break;
case 3: da=31;break;
case 4: da=30;break;
case 5: da=31;break;
case 6: da=30;break;
case 7: da=31;break;
case 8: da=31;break;
case 9: da=30;break;
case 10:da=31;break;
case 11:da=30;break;
case 12:da=31;break;
default:break;
}
sumd+=da;
}

}
else
{
for (int i=1;i<=12;i++)
{
switch(i)
{
case 1: da=31;break;
case 2: da=28;break;
case 3: da=31;break;
case 4: da=30;break;
case 5: da=31;break;
case 6: da=30;break;
case 7: da=31;break;
case 8: da=31;break;
case 9: da=30;break;
case 10:da=31;break;
case 11:da=30;break;
case 12:da=31;break;
default:break;
}
sumd+=da;
}
}
}

sumd+=c;
return sumd;
}
else
{
cout<<"输入日期有误或年份已过!"<<endl;
return 0;
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: