**
问题描述:
**
中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。用C或C++语言实现程序解决问题。
基本要求:1.程序风格良好(使用自定义注释模板),提供友好的输入输出。
提高要求:1.输入数据的正确性验证。
2.使用文件进行数据测试。如将日期 20100101 20111214
等数据保存在in.txt文件中,程序读入in.dat文件进行判定,并将结果输出至out.txt文件。
**
分析:
**
1.判断输入的数据是否合法;
2.计算2010年1月1日到输入日期一共有多少天,并根据闰年的定义判断其中闰年的存在,利用for语句与switch语句实现计算总天数;
3.“打鱼”和“晒网”的周期为五天,所以将总天数除以五求得余数以判断该天是在打鱼还是在晒网,利用switch语句输出结果。
**
实现代码:
**
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70#include<stdio.h> #include<string.h> void main(){ int year,month,day,day2,allday=0; int day1=31,day3=31,day5=31,day7=31,day8=31,day10=31,day12=31; int day4=30,day6=30,day9=30,day11=30; //freopen("debug\in.txt","r",stdin);//读取in.txt中的数据 printf("请输入年月日(用空格隔开):n"); scanf("%d%d%d",&year,&month,&day);//输入年月日 printf("输入的年月日为%d年%d月%d日n",year,month,day); if(year%400==0||(year%4==0&&year%100!=0)) day2=29; else day2=28;//判断是否为闰年 if(year<2010){ printf("输入年份错误,请重新输入:n"); scanf("%d%d%d,&year,&month,&day"); }//判断是否为合法的年份 if(month>12){ printf("输入月份错误,请重新输入:n"); scanf("%d%d%d,&year,&month,&day"); }//判断是否为合法的月份 if(day>31||month==4&&day>30||month==6&&day>30||month==9&&day>30||month==11&&day>30){ printf("输入日期有误,请重新输入:n"); scanf("%d%d%d,&year,&month,&day"); }//判断是否为合法的日期 if(day2==29&&day>29||day2==28&&day>28) printf("输入日期有误,请重新输入:n"); scanf("%d%d%d,&year,&month,&day");//判断2月日期是否合法 int i,x=0,y=0; for(i=2010;i<year;i++){ if(year%400==0||(year%4==0&&year%100!=0)) y+=366; else y+=365; } switch(month){ case 1:x=0;break; case 2:x=day1;break; case 3:x=day1+day2;break; case 4:x=day1+day2+day3;break; case 5:x=day1+day2+day3+day4;break; case 6:x=day1+day2+day3+day4+day5;break; case 7:x=day1+day2+day3+day4+day5+day6;break; case 8:x=day1+day2+day3+day4+day5+day6+day7;break; case 9:x=day1+day2+day3+day4+day5+day6+day7+day8;break; case 10:x=day1+day2+day3+day4+day5+day6+day7+day8+day9;break; case 11:x=day1+day2+day3+day4+day5+day6+day7+day8+day9+day10;break; case 12:x=day1+day2+day3+day4+day5+day6+day7+day8+day9+day10+day11;break; } allday=allday+x+y+day;//计算经历了多少天 int z; z=allday%5; switch(z){ case 0:printf("在晒网n");break; case 4:printf("在晒网n");break; case 1:printf("在打鱼n");break; case 2:printf("在打鱼n");break; case 3:printf("在打鱼n");break;}//输出结果 freopen("debug\out.txt","w",stdout); switch(z){ case 0:printf("在晒网n");break; case 4:printf("在晒网n");break; case 1:printf("在打鱼n");break; case 2:printf("在打鱼n");break; case 3:printf("在打鱼n");break;//在out.txt中输出结果 } fclose(stdin); fclose(stdout); }
最后
以上就是现代天空最近收集整理的关于“三天打鱼两天晒网”程序的c语言实现的全部内容,更多相关“三天打鱼两天晒网”程序内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复