打漁曬網經典語錄-太有才

Jan09

打漁曬網經典語錄-太有才,希望這篇文章對您有幫助
你還在尋找打漁曬網經典語錄嗎?那就趕緊看看下麵的內容吧。
1.程序描述:這是個經典的程序,某人從1990年1月1日起開始“三天打魚兩天曬網”,問這個人在以後的某一天中是“打魚”還是“曬網”。
*問題分析與算法設計
根據題意可以將解題過程分為三步:
1)計算從1990年1月1日開始至指定日期共有多少天;
2)由於“打魚”和“曬網”的周期為5天,所以將計算出的天數用5去除;
3)根據餘數判斷他是在“打魚”還是在“曬網”;
若 餘數為1,2,3,則他是在“打魚”
否則 是在“曬網”
在這三步中,關鍵是第一步。求從1990年1月1日至指定日期有多少天,要判斷經曆年份中是否有閏年,二月為29天,平年為28天。閏年的方法可以用偽語句描述如下:
如果 ((年能被4除盡 且 不能被100除盡)或 能被400除盡)
則 該年是閏年;
否則 不是閏年。
C語言中判斷能否整除可以使用求餘運算(即求模)

2.程序如下:
#include<stdio.h>

struct date{
int year;
int month;
int day;
};

int days(struct date day);

void main()
{
struct date today,term;
int yearday,year,day;
printf("Enter year/month/day:");
scanf("%d%d%d",&today.year,&today.month,&today.day); /*輸入日期*/
term.month=12; /*設置變量的初始值:月*/
term.day=31; /*設置變量的初始值:日*/
for(yearday=0,year=1990;year<today.year;year++)
{
term.year=year;
yearday+=days(term); /*計算從1990年至指定年的前一年共有多少天*/
}
yearday+=days(today); /*加上指定年中到指定日期的天數*/
day=yearday%5; /*求餘數*/
if(day>0&&day<4) printf("he was fishing at that day.\n"); /*打印結果*/
else printf("He was sleeping at that day.\n");
}

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日起的天數*/
day.day+=day_tab[lp][i];
return day.day;
}


更多精彩內容,等待您的發表哈

這篇關於打漁曬網經典語錄-太有才的文章,11i到此已經介紹完了,希望對你有所幫助。
11i部分文章為網絡轉載,部分出處不明,如果有相關文章無意侵犯閣下之權益,希望來信說明!


由11i發表於 2014年01月09日,歸檔到目錄搞笑語錄
相關的標簽:打漁 曬網 經典 語錄 有才 打漁 曬網 經典 語錄 有才

Leave a Comment