我是靠谱客的博主 酷酷金毛,这篇文章主要介绍三天打渔,两天晒网小算法,现在分享给大家,希望可以做个参考。

问题描述:

   中国有句俗语叫“三天打鱼两天晒网”。某人从201011日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。用CC++语言实现程序解决问题。

源代码:

复制代码
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
//文件名:fishing or relaxing.cpp //作者:Vector_山水之间 //学号:1508010333 //版本:2017.3.1 //完成日期:2017/3/10 //主要功能:某人从2010年1月1日起开始“三天打鱼两天晒网”, // 判断某天是打鱼还是晒网. #include<stdio.h> void show(); //声明show()函数 int calculate(struct date day); //声明计算天数的函数 struct date{ //定义结构体 int year; int month; int day; }; void show() //计算并输出某一日期下打鱼或者晒网的结果 { struct date today,term; //定义结构体变量today,term int yearday,year,day; printf("请输入年份:"); scanf("%d",&today.year); while(today.year<2010||today.year>9999) //判断年份输入的规范性 { printf("年份输入不符合规范,请重新输入:"); scanf("%d",&today.year); } printf("请输入月份:"); scanf("%d",&today.month); while(today.month<1||today.month>12) //判断月份输入的规范性 { printf("月份输入不符合规范,请重新输入:"); scanf("%d",&today.month); } printf("请输入日:"); scanf("%d",&today.day); if(today.month==1||today.month==3||today.month==5||today.month==7 ||today.month==8||today.month==10||today.month==12) //判断日的输入是否符合规范 { while(today.day<0||today.day>31) { printf("输入不符合规范,请重新输入:"); scanf("%d",&today.day); } } else if(today.month==4||today.month==6|| today.month==9||today.month==11) { while(today.day<0||today.day>30) { printf("输入不符合规范,请重新输入:"); scanf("%d",&today.day); } } else if(today.month==2) { if(today.year%4==0) while(today.day<0||today.day>29) { printf("输入不符合规范,请重新输入:n"); scanf("%d",&today.day); } else while(today.day<0||today.day>28) { printf("输入不符合规范,请重新输入:n"); scanf("%d",&today.day); } } term.month=12; //设置变量的初始值:月 term.day=31; //设置变量的初始值:日 for(yearday=0,year=2010;year<today.year;year++) { term.year=year; yearday+=calculate(term); //计算从2010年至指定年的前一年的最后一天共有多少天 } yearday+=calculate(today); //加上指定年中到指定日期的天数 day=yearday%5; //求余数 if(day>0&&day<4) //打印结果 { printf("%d,%d,%dn",today.year,today.month,today.day); printf("He was fishing at that day.n"); } else { printf("%d,%d,%dn",today.year,today.month,today.day); printf("He was relaxing at that day.n"); } } int calculate(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日起的天数 day.day+=day_tab[lp][i]; return day.day; } void main() { printf("功能介绍:某人从2010年1月1日起开始三天打鱼两天晒网,n"); printf(" 输入日期判断这个人在以后的某一天中是打鱼还是晒网。nn"); int m; show(); printf("n继续输入请按 1n"); scanf("%d",&m); while(m==1) { show(); printf("n"); } }


最后

以上就是酷酷金毛最近收集整理的关于三天打渔,两天晒网小算法的全部内容,更多相关三天打渔内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部