打鱼还是晒网
来源:互联网 发布:网络模块配线架怎么打 编辑:程序博客网 时间:2024/04/27 12:12
中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。
*问题分析与算法设计
根据题意可以将解题过程分为三步:
1)计算从1990年1月1日开始至指定日期共有多少天;
2)由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;
3)根据余数判断他是在“打鱼”还是在“晒网”;
若余数为1,2,3,则他是在“打鱼”,否则是在“晒网”。在这三步中,关键是第一步。求从1990年1月1日至指定日期有多少天,要判断经历年份中是
否有闰年,二月为29天,平年为28天。闰年的方法可以用伪语句描述如下:
如果((年能被4除尽且不能被100除尽)或能被400除尽)
则该年是闰年;
否则不是闰年。
C语言中判断能否整除可以使用求余运算(即求模)
*程序说明与注释
#include
int days(struct date day);
struct date{
int year;
int month;
int day;
};
int main(){
struct date today,term;
int yearday,year,day;
printf("Enter year/month/day:");
scanf("%d%d%d",&today.year,&today.month,&today.day); /*输入日期*/
term.month=12; /*设置变量的初始值:月*/
term.day=31; /*设置变量的初始值:日*/
for(yearday=0,year=1990;year
yearday+=days(term); /*计算从1990年至指定年的前一年共有多少天*/
}
yearday+=days(today); /*加上指定年中到指定日期的天数*/
day=yearday%5; /*求余数*/
if(day>0&&day<4) printf("he was fishing at that day./n"); /*打印结果*/
else printf("He was sleeping at that day./n");
}
int days(struct date day){
static int day_tab[2][13]=
{{0,31,28,31,30,31,30,31,31,30,31,30,31,}, /*平均每月的天数*/
{0,31,29,31,30,31,30,31,31,30,31,30,31,},};
int i,lp;
lp=day.year%4==0&&day.year%100!=0||day.year%400==0;
/*判定year为闰年还是平年,lp=0为平年,非0为闰年*/
for(i=1;i
return day.day;
}
*运行结果
Enter year/month/day:1991 10 25
He was fishing at day.
Enter year/month/day:1992 10 25
He was sleeping at day.
Enter year/month/day:1993 10 25
He was sleeping at day.
*
思考题
请打印出任意年份的日历
#include
int days(struct date day,int j);
struct date{
int year;
int month;
int day;
};
int main(){
struct date today,term;
int yearday,year,day,ii;
printf("Enter year:");
scanf("%d",&today.year); /*输入日期*/
term.month=12; /*设置变量的初始值:月*/
term.day=31; /*设置变量的初始值:日*/
for(yearday=0,year=1990;year
yearday+=days(term,8); /*计算从1990年至指定年的前一年共有多少天*/
}
day=(yearday+1)%7; /*求余数*/
printf(" Sun Mon Tue Wen Thu Fri Sat/n");
days(today,day);
}
int days(struct date day,int j){
static int day_tab[2][13]=
{{0,31,28,31,30,31,30,31,31,30,31,30,31,}, /*平均每月的天数*/
{0,31,29,31,30,31,30,31,31,30,31,30,31,},};
int i,lp,k;
lp=day.year%4==0&&day.year%100!=0||day.year%400==0;
/*判定year为闰年还是平年,lp=0为平年,非0为闰年*/
if (j==8){
for(i=1;i
}
else{
for(i=1;i<=12;i++){
for(k=0;k
for(k=0;k
j=(++j)%7;
if(!j) printf("/n");
}
printf("/n");
}
}
return day.day;
}
- 打鱼还是晒网
- 打鱼还是晒网
- 打鱼还是晒网
- 打鱼还是晒网
- 打鱼还是晒网
- 打鱼还是晒网
- 打鱼还是晒网
- 打鱼还是晒网问题
- 打鱼还是晒网问题
- 2811:打鱼还是晒网
- 打鱼还是晒网C++
- Problem B: 打鱼还是晒网
- YTU 2811: 打鱼还是晒网
- 1.3_打鱼还是晒网
- 打鱼还是晒网C语言
- (百例编程)11.打鱼还是晒网
- 生活中的数学问题(打鱼还是晒网)
- 打鱼晒网问题
- C#根据当前时间确定日期范围
- 数据挖掘十大经典算法
- svn命令在linux下的使用
- 【转】WCHAR,CHAR,TCHAR的区别
- Ubuntu-图形界面和字符界面转换、指定默认启动界面
- 打鱼还是晒网
- OGNL, JSTL, STRUTS2标签中符号#,$,%的用法示例
- 页面传送中文值与Server.UrlDecode编码问题
- ZOJ 1423 (Your)((Term)((Project))) (POJ 1690) (模拟)
- 函数指针定义的写法
- [转载]yuv和yCbCr的差异
- [转载]yuv和yCbCr的差异
- [经验总结]多重继承及虚继承中对象内存的分布(转载)
- 一个给手机发送短信的例子