三天打鱼两天晒网的C++程序设计题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{ int n=0;//代表闰年个数 int month1;//代表月数之差 int year_1;//代表年之差换算成天数差 int month_1,day_1; int sum;//代表某天之后,即从 2007/01/01 后的天数 int k;//代表是求模数,0,1,2 代表打鱼,3,4 代表晒网 /*判断是否是闰年,并计算其个数*/ int m;//计算闰年时使用的参数 int f1,f2,f3; for(m=1;m<=year;m++) {
#include<iostream> using namespace std; int days(struct date day); struct date { int year; int month; int day; };
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<day.month;i++) 的天数*/ /*计算本年中自 1 月 1 日起 /* 平均
/*打鱼还是晒网 中国有句俗语叫“三天打鱼两天晒网”。某人从 1990 年 1 月 1 日 起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还 是“晒网”。 *问题分析与算法设计 根据题意可以将解题过程分为三步: 1)计算从 1990 年 1 月 1 日开始至指定日期共有多少天; 2)由于“打鱼”和“晒网”的周期为 5 天, 所以将计算出的天数用 5 去除; 3)根据余数判断他是在“打鱼”还是在“晒网”; 若 余数为 1,2,3,则他是在“打鱼”
printf("year:%d\n",year_1);//检查统计年数是否成功 printf("month:%d\n",month_1);//检查统计月数是否成功 printf("day:%d\n",day_1);//检查统计天数是否成功
printf("sum:%d\n",sum);//检查统计总天数是否成功
f1=((m%4)==0); f2=((m%100)==0); f3=((m%400)==0); if(f1&&(!f2)||f2&&f3) n++; } printf("n:%d\n",n);//检查统计闰年个数是否成功 year_1=(year-2007)*365+n-486;//500 代表 2007 前的闰年个数 /*计算月份差 */
k=sum%5;//求模,0,1,2 代表打鱼,3,4 代表晒网 printf("%d\n",k);//检查统计求模是否成功 switch(k) { case 0: printf("今天该打鱼\n"); break; case 1: printf("今天该打鱼\n"); break; case 2: printf("今天该打鱼\n"); break; case 3: printf("今天该晒网\n");
否则 是在“晒网” 在这三步中,关键是第一步。求从 1990 年 1 月 1 日至指定日期 有多少天,要判断经历年份中是否有闰年,二月为 29 天,平年为 28 天。闰年的方法可以用伪语句描述如下: 如果 则 否则 */ //西北师范大学第五届程序设计大赛实例 6.cpp //作者:西北师范大学 -数学与信息科学学院 -09 级计算机科学与技术 一班-200971030102-陈建峰 分 时间:2011 年 05 月 09 日 10 时 50 ((年能被 4 除尽 且 不能被 100 除尽)或 能被 400 除尽) 该年是闰年; 不是闰年。
break; case 4: printf("今天该晒网\n"); break; } return 0; }
for(yearday=0,year=1990;year<today.year;year++)
{ term.year=year; yearday+=days(term); 年共有多少天*/ } yearday+=days(today); */ day=yearday%5; if(day>0&&day<4) { printf("该人当天在打鱼!\n"); /*打印结果*/ /*求余数*/ /*加上指定年中到指定日期的天数 /*计算从 1990 年至指定年的前一
fprintf(fp2,"\n 该人当天在打鱼!\n\n"); } else { printf("该人当天在晒网!\n"); fprintf(fp2,"\n 该人当天在晒网!\n\n"); } }
/*Leabharlann Baidu
捕鱼问题 1,本次大赛主题 :中国有句俗语叫 “三天打鱼两天晒网 ”。某人从 2007 年 1 月 1 日起开始“三天打鱼两天晒网”, 问这个人在以后的某一天中 是“打鱼”还是“晒网”。 2,规则:尽量不要修改已给出部分的代码,如果确实要修改的,必须在修 改处加注释 3,答题格式(参考如下): A,编绎器及版本:VC++6.0 B,算法的简要说明:写你的 4,内容:题目已经比较清楚了,就是前三天打鱼后两天晒网 */ #include<stdio.h> int fishing(int year,int month,int day); int main(void) { int year,month,day; printf("请输入一个日期:\n"); scanf("%d%d%d",&year,&month,&day); fishing(year,month,day); return 0; } int fishing(int year,int month,int day)
month_1=181; break; case 7: month_1=212; break; case 8: month_1=243; break; case 9: month_1=273; break; case 10: month_1=304; break; case 11: month_1=334; break; } /*计算天数差*/ day_1=day-1; /*计算总天数后*/ sum=year_1+month_1+day_1;
month1=month-1; switch(month1) { case 0: month_1=0; break; case 1: month_1=31; break; case 2: month_1=59; break; case 3: month_1=90; break; case 4: month_1=120; break; case 5: month_1=151; break; case 6:
day.day+=day_tab[lp][i]; return day.day; }
void main() { FILE *fp1,*fp2; struct date today,term; int yearday,year,day; //printf("Enter year/month/day:"); //scanf("%d%d%d",&today.year,&today.month,&today.day); 入日期*/ fp1=fopen("input.txt","rb"); fp2=fopen("output.txt","wb"); fscanf(fp1,"%d%d%d",&today.year,&today.month,&today.day); printf(" 从 文 件 input.txt 当 中 读 取 的 年 月 日 为 : %d-%d-%d\n",today.year,today.month,today.day); fprintf(fp2," 从 文 件 input.txt 当 中 读 取 的 年 月 日 为 : %d-%d-%d\n",today.year,today.month,today.day); term.month=12; term.day=31; /*设置变量的初始值:月*/ /*设置变量的初始值:日*/ /* 输