打鱼还是晒网:
中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问找个人在以后的某一天中是“打鱼”还是“晒网”。
解题思路:根据输入的日期来计算1990.1.1到输入日期的天数(考虑闰年366天),然后用天数取余5,倘若得到1,2,3则为打鱼,结果为4,0则为晒网。
代码:
#include<iostream>
using namespace std;
int monthday[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};\\记录每个月的总天数
class date
{
public:
int year;
int month;
int day;
};
int runyear(int year)\\判断是否是闰年
{
if((year%4==0&&year%100!=0)||(year%400==0))
return 1;
else
return 0;
}
int countday(date today)\\计算总天数
{
int n;
int i;
for(i=1990;i<today.year;i++)
{
if(runyear(i))
n+=366;
else
n+=365;
}
if(runyear(today.year))
monthday[2]++;
for(i=1;i<today.month;i++)
n+=monthday[i];
n+=today.day;
return n;\\返回总天数
}
int main()
{
date today;
int dayn;
cout<<"please input 指定日期 包括年,月,日 如:1999 1 31"<<endl;
cin>>today.year>>today.month>>today.day;\\输入当前日期
dayn=countday(today);\\总天数
int x=dayn%5;
if(x==0||x==4)\\判断条件
cout<<"今天晒网"<<endl;
else
cout<<"今天打鱼"<<endl;
return 0;
}
该题体会:实际问题要根据实际情况讨论,学会了如何计算闰年以及计算天数的方法。
抓交通肇事犯
一辆卡车违反交通规则,撞人后逃跑。现场有三人目击该事件,但都没有记住车号,只记了车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:拍照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。
根据题意列出数学表达式:
解题思路:两次循环嵌套,i表示前两位数,j表示后两位数,i不等于j,根据所得的i与j求出四位数,判断是否是一个整数的平方,符合则输出。
代码:
#include<iostream>
using namespace std;
int main()
{
int i,j;
for(i=1;i<10;i++)\\列举前两个数字的可能
{
for(j=0;j<10;j++)\\列举后两个数字的可能
{
if(i!=j)\\判断前两个数字和后两个数字是否不同
{
int temp=i*1000+i*100+j*10+j;
for(int n=31;n<100;n++)\\列举判断是否是整数的平方
{
if(n*n==temp)
cout<<temp<<endl;
}
}
}
}
return 0;
}
拓展:
该车车牌只有一种可能,那么当找到车牌号是多少时,就不需要继续循环了。
代码:
#include<iostream>
using namespace std;
int main()
{
int i,j,flag=0;
for(i=1;i<10;i++)
{
if(flag)\\退出i的循环
break;
for(j=0;j<10;j++)
{
if(flag)\\退出j的循环
break;
if(i!=j)
{
int temp=i*1000+i*100+j*10+j;
for(int n=31;n<100;n++)
{
if(n*n==temp)
{
flag=1;\\寻找到车牌号,退出循环
cout<<temp<<endl;
}
}
}
}
}
return 0;
}
标签:交通肇事,return,晒网,打鱼,int,天数,31,today,cout From: https://www.cnblogs.com/zljzy/p/17305839.html