C 语言渔夫打鱼晒网问题
如果一个渔夫从 2011 年 1 月 1 日开始每三天打一次渔,两天晒一次网,编程实现当输
入 2011 1 月 1 日以后的任意一天,输出该渔夫是在打渔还是在晒网。
实现过程:
(1) 自定义函数 leap() ,用来判断输入的年份是否是闰年。
(2) 自定义函数 number() ,用来计算输入日期距 2011 年 1 月 1 日共有多少天。
(3) main() 函数作为程序的入口函数,在 main() 函数中调用上面两个函数。程序代码如
下:
1. #include
2. int leap ( int a ) /* 自定义函数 leap() 用来指定输入的年份是否为闰年 */
3. {
4. if ( a%4==0&&a%100!= 0|| a%400 ==0) /* 闰年判定条件 */
5. return 1; /* 是闰年返回 1*/
6. else
7. return 0; /* 不是闰年返回 O*/
8. }
9.
10. int number( int year , int month , int day ) /* 自定义函数 number() 计算输入日期距
2011 年 1 月 1 日共有多少天 */
11. {
12. int sum = 0, i , j , k ;
13. int a[ 12]={ 31, 28, 31, 30, 31 , 30, 31, 31, 30 , 31, 30, 31}; /* 数组 a 存放平年每月的天
数*/
14. int b[ 12]={ 31, 29, 31, 30, 31 , 30, 31, 31, 30 , 31, 30, 31}; /* 数组 b 存放闰年每月的天
数*/
15.
16. if ( leap ( year )== 1) /* 判断是否为闰年 */
17. for ( i =0; i
18. sum +=b[ i ]; /* 是闰年,累加数组 b 前 m-1 个月份的天数 */
19. else
20. for ( i =0; i
21. sum +=a[ i ]; /* 不是闰年,累加数组 a 前 m-1 个月份的天数 */
22. for ( j =2011; j
23. if ( leap ( j )== i )
24. sum +=366 ; /*2011 年到输入的年份是闰年的加 366*/
25. else
26. sum +=365 ; /*2011 年到输入的年份不是闰年的加 365*/
27. sum +=day ; /* 将前面累加的结果加上日期,求出总天数 */
28. return sum ; /* 返回计算的天数 */
29. }
30.
31. int main ()
32. {
33. int year , month, day , n;
34. printf ( " 请输入年月日 \n" );
35. scanf ( "%d%d%d",& year ,& month ,&da