C語(yǔ)言漁夫打魚(yú)曬網(wǎng)問(wèn)題
如果一個(gè)漁夫從 2011 年 1 月 1 日開(kāi)始每三天打一次漁,兩天曬一次網(wǎng),編程實(shí)現(xiàn)當(dāng)輸入 2011 1 月 1 日以后的任意一天,輸出該漁夫是在打漁還是在曬網(wǎng)。
實(shí)現(xiàn)過(guò)程:
(1) 自定義函數(shù) leap(),用來(lái)判斷輸入的年份是否是閏年。
(2) 自定義函數(shù) number(),用來(lái)計(jì)算輸入日期距 2011 年 1 月 1 日共有多少天。
(3) main() 函數(shù)作為程序的入口函數(shù),在 main() 函數(shù)中調(diào)用上面兩個(gè)函數(shù)。程序代碼如下:
#include <stdio.h>
int leap(int a) /*自定義函數(shù)leap()用來(lái)指定輸入的年份是否為閏年*/
{
if (a%4==0&&a%100!=0||a%400==0) /* 閏年判定條件 */
return 1; /*是閏年返回1*/
else
return 0; /*不是閏年返回O*/
}
int number(int year,int month,int day) /*自定義函數(shù) number() 計(jì)算輸入日期距2011年1月1日共有多少天*/
{
int sum = 0, i, j, k;
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31}; /*數(shù)組a存放平年每月的天數(shù)*/
int b[12]={31,29,31,30,31,30,31,31,30,31,30,31}; /*數(shù)組b存放閏年每月的天數(shù)*/
if(leap(year)==1) /*判斷是否為閏年*/
for(i=0;i<month-1;i++) sum+="b[i];" *是閏年,累加數(shù)組b前m-1個(gè)月份的天數(shù)*="" else="" for(i="0;i<month-1;i++)" *不是閏年,累加數(shù)組a前m-1個(gè)月份的天數(shù)*="" for(j="2011;j<year;j++)" if="" (leap(j)="=i)" *2011年到輸入的年份是閏年的加366*="" *2011年到輸入的年份不是閏年的加365*="" *將前面累加的結(jié)果加上日期,求出總天數(shù)*="" return="" sum;="" *返回計(jì)算的天數(shù)*="" }="" int="" main()="" {="" year,month,day,n;="" printf("請(qǐng)輸入年月日\(chéng)n");="" scanf("%d%d%d",&year,&month,&day);="" *輸入年月日*="" n="number(year,month,day);" *調(diào)用函數(shù)="" number()*="" if((n%5)<4&&(n%5)="">0) /*余數(shù)是1或2或3時(shí)說(shuō)明在打漁,否則在曬網(wǎng)*/
printf("%d:%d:%d 打魚(yú)\n",year,month,day);
else
printf("%d:%d:%d 曬網(wǎng)\n",year,month,day);
return 0;
}</month-1;i++)></stdio.h>
運(yùn)行結(jié)果:
請(qǐng)輸入年月日
2011 1 4
2011:1:4 曬網(wǎng)
技術(shù)要點(diǎn):
本實(shí)例主要有以下兩個(gè)技術(shù)要點(diǎn):
(1) 判斷輸入的年份(2011 年以后包括 2011 年)是否為閏年,這里自定義函數(shù) leap() 來(lái)進(jìn)行判斷。該函數(shù)的核心內(nèi)容就是閏年的判斷條件即能被 4 整除但不能被 100 整除,或能被 400 整除。
(2) 求輸入日期距 2011 年 1 月 1 日有多少天。首先判斷 2011 年距輸入的年份有多少年,這其中有多少年是閏年就將 sum 加多少個(gè) 366,有多少年是平年便將 sum 加上多少個(gè) 365。
其次要將 12 個(gè)月每月的天數(shù)存到數(shù)組中,因?yàn)殚c年 2 月份的天數(shù)有別于平年,故采用兩個(gè)數(shù)組 a 和 b 分別存儲(chǔ)。若輸入年份是平年,月份為 m 時(shí)就在前面累加日期的基礎(chǔ)上繼續(xù)累加存儲(chǔ)著平年每月天數(shù)的數(shù)組的前 m-1 個(gè)元素,將累加結(jié)果加上輸入的日期便求出了最終結(jié)果。閏年的算法類(lèi)似。
作者:大學(xué)生新聞網(wǎng) 來(lái)源:大學(xué)生新聞網(wǎng)
發(fā)布時(shí)間:2025-03-03 閱讀:
- C語(yǔ)言希爾排序算法
- 用希爾排序法對(duì)一組數(shù)據(jù)由小到大進(jìn)行排序,數(shù)據(jù)分別為 69、56、12、136、3、55、46、 99、88、25。
- 03-03 關(guān)注:0
- C語(yǔ)言猴子吃桃問(wèn)題
- 猴子吃桃問(wèn)題:猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不過(guò)癮,又多吃了一個(gè)。
- 03-03 關(guān)注:0