已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C-C+語言趣味程序設(shè)計編程百例精解(2).txt再過幾十年,我們來相會,送到火葬場,全部燒成灰,你一堆,我一堆,誰也不認識誰,全部送到農(nóng)村做化肥。11.打魚還是曬網(wǎng)中國有句俗語叫“三天打魚兩天曬網(wǎng)”。某人從1990年1月1日起開始“三天打魚兩天曬網(wǎng)”,問這個人在以后的某一天中是“打魚”還是“曬網(wǎng)”。*問題分析與算法設(shè)計根據(jù)題意可以將解題過程分為三步:1)計算從1990年1月1日開始至指定日期共有多少天;2)由于“打魚”和“曬網(wǎng)”的周期為5天,所以將計算出的天數(shù)用5去除;3)根據(jù)余數(shù)判斷他是在“打魚”還是在“曬網(wǎng)”;若 余數(shù)為1,2,3,則他是在“打魚”否則 是在“曬網(wǎng)”在這三步中,關(guān)鍵是第一步。求從1990年1月1日至指定日期有多少天,要判斷經(jīng)歷年份中是否有閏年,二月為29天,平年為28天。閏年的方法可以用偽語句描述如下:如果 (年能被4除盡 且 不能被100除盡)或 能被400除盡)則 該年是閏年;否則 不是閏年。C語言中判斷能否整除可以使用求余運算(即求模)*程序說明與注釋#includeint days(struct date day);struct dateint year;int month;int day;int 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; /*設(shè)置變量的初始值:月*/term.day=31; /*設(shè)置變量的初始值:日*/for(yearday=0,year=1990;year0&day4) printf(he was fishing at that day.n); /*打印結(jié)果*/else printf(He was sleeping at that day.n);int days(struct date day)static int day_tab213=0,31,28,31,30,31,30,31,31,30,31,30,31, /*平均每月的天數(shù)*/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;iday.month;i+) /*計算本年中自1月1日起的天數(shù)*/day.day+=day_tablpi;return day.day;*運行結(jié)果Enter year/month/day:1991 10 25He was fishing at day.Enter year/month/day:1992 10 25He was sleeping at day.Enter year/month/day:1993 10 25He was sleeping at day.*思考題請打印出任意年份的日歷12.抓交通肇事犯一輛卡車違反交通規(guī)則,撞人后逃跑。現(xiàn)場有三人目擊事件,但都沒有記住車號,只記下車號的一些特征。甲說:牌照的前兩位數(shù)字是相同的;乙說:牌照的后兩位數(shù)字是相同的,但與前兩位不同; 丙是數(shù)學(xué)家,他說:四位的車號剛好是一個整數(shù)的平方。請根據(jù)以上線索求出車號。*問題分析與算法設(shè)計按照題目的要求造出一個前兩位數(shù)相同、后兩位數(shù)相同且相互間又不同的整數(shù),然后判斷該整數(shù)是否是另一個整數(shù)的平方。*程序說明與注釋#include#includeint main()int i,j,k,c;for(i=1;i=9;i+) /*i:車號前二位的取值*/for(j=0;j=9;j+) /*j:車號后二位的取值*/if(i!=j) /*判斷二位數(shù)字是否相異*/k=i*1000+i*100+j*10+j; /*計算出可能的整數(shù)*/for(c=31;c*ck;c+); /*判斷該數(shù)是否為另一整數(shù)的平方*/if(c*c=k) printf(LorryNo. is %d.n,k); /*若是,打印結(jié)果*/*運行結(jié)果Lorry _No.is 7744 13.該存多少錢假設(shè)銀行一年整存零取的月息為0.63%?,F(xiàn)在某人手中有一筆錢,他打算在今后的五年中的年底取出1000元,到第五年時剛好取完,請算出他存錢時應(yīng)存入多少。*問題分析與算法設(shè)計分析存錢和取錢的過程,可以采用倒推的方法。若第五年年底連本帶息要取1000元,則要先求出第五年年初銀行存款的錢數(shù):第五年初存款=1000/(1+12*0.0063)依次類推可以求出第四年、第三年的年初銀行存款的錢數(shù):第四年年初存款=(第五年年初存款+1000)/(1+12*0.0063)第三年年初存款=(第四年年初存款+1000)/(1+12*0.0063)第二年年初存款=(第三年年初存款+1000)/(1+12*0.0063)第一年年初存款=(第二年年初存款+1000)/(1+12*0.0063)通過以上過程就可以很容易地求出第一年年初要存入多少錢。*程序說明與注釋#includeint main()int i;float total=0;for(i=0;i5;i+) /*i 為年數(shù),取值為04年*/total=(total+1000)/(1+0.0063*12); /*累計算出年初存款數(shù)額,第五次的計算結(jié)果即為題解*/printf(He must save %.2f at first.n,total);*運行結(jié)果He must save 4039.44 at first 14.怎樣存錢利最大假設(shè)銀行整存整取存款不同期限的月息利率分別為:0.63% 期限=1年0.66% 期限=2年0.69% 期限=3年0.75% 期限=5年0.84% 期限=8年利息=本金*月息利率*12*存款年限?,F(xiàn)在某人手中有2000元錢,請通過計算選擇一種存錢方案,使得錢存入銀行20年后得到的利息最多(假定銀行對超過存款期限的那一部分時間不付利息)。*問題分析與算法設(shè)計為了得到最多的利息,存入銀行的錢應(yīng)在到期時馬上取出來,然后立刻將原來的本金和利息加起來再作為新的本金存入銀行,這樣不斷地滾動直到滿20年為止,由于存款的利率不同,所以不同的存款方法(年限)存20年得到的利息是不一樣的。分析題意,設(shè)2000元存20年,其中1年存i1次,2年存i2次,3年存i3次,5年存i5次,8年存i8次,則到期時存款人應(yīng)得到的本利合計為:2000*(1+rate1)i1*(1+rate2)i2*(1+rate3)i3*(1+rate5)i5*(1+rate8)i8其中rateN為對應(yīng)存款年限的利率。根據(jù)題意還可得到以下限制條件:0=i8=20=i5=(20-8*i8)/50=i3=(20-8*i8-5*i5)/30=i2=(20-8*i8-5*i5-3*i3)/20=i1=20-8*i8-5*i5-3*i3-2*i2可以用窮舉法窮舉所有的i8、i5、i3、i2和i1的組合,代入求本利的公式計算出最大值,就是最佳存款方案。*程序說明與注釋#include#includeint main()int i8,i5,i3,i2,i1,n8,n5,n3,n2,n1;float max=0,term;for(i8=0;i83;i8+) /*窮舉所有可能的存款方式*/for(i5=0;i5=(20-8*i8)/5;i5+)for(i3=0;i3=(20-8*i8-5*i5)/3;i3+)for(i2=0;i2max)max=term;n1=i1;n2=i2;n3=i3;n5=i5;n8=i8;printf(For maxinum profit,he should so save his money in a bank:n);printf( made fixed deposit for 8 year: %d timesn,n8);printf( made fixed deposit for 5 year: %d timesn,n5);printf( made fixed deposit for 3 year: %d timesn,n3);printf( made fixed deposit for 2 year: %d timesn,n2);printf( made fixed deposit for 1 year: %d timesn,n1);printf( Toal: %.2fn,max);/*輸出存款方式*/*運行結(jié)果For maxinum profit,he should so save his money in a bank:made fixed deposit for 8 year: 0timesmade fixed deposit for 5 year: 4timesmade fixed deposit for 3 year: 0timesmade fixed deposit for 2 year: 0timesmade fixed deposit for 1 year: 0timesTotal:8841.01可見最佳的存款方案為連續(xù)四次存5年期。*思考題某單位對職工出售住房,每套為2萬元。買房付款的方法是:一次交清,優(yōu)惠20%從第一年開始,每年年初分期付款:5年交清,優(yōu)惠50%;10年交清,優(yōu)惠10%;20年交清,沒有優(yōu)惠?,F(xiàn)在有人手中正好有2萬元,若假定在今后20年中物價和銀行利率均保持不變,問他應(yīng)當選擇哪種付款方式可以使應(yīng)付的錢最少?15.捕魚和分魚A、B、C、D、E五個人在某天夜里合伙去捕魚,到第二天凌晨時都疲憊不堪,于是各自找地方睡覺。日上三桿,A第一個醒來,他將魚分為五份,把多余的一條魚扔掉,拿走自己的一份。B第二個醒來,也將魚分為五份,把多余的一條魚扔掉,保持走自己的一份。C、D、E依次醒來,也按同樣的方法拿走魚。問他們合伙至少捕了多少條魚?*問題分析與算法設(shè)計根據(jù)題意,總計將所有的魚進行了五次平均分配,每次分配時的策略是相同的,即扔掉一條魚后剩下的魚正好分成五份,然后拿走自己的一份,余下其它的四份。假定魚的總數(shù)為X,則X可以按照題目的要求進行五次分配:X-1后可被5整除,余下的魚為4*(X-1)、5。若X滿足上述要求,則X就是題目的解。*程序說明與注釋#includeint main()int n,i,x,flag=1; /*flag:控制標記*/for(n=6;flag;n+) /*采用試探的方法。令試探值n逐步加大*/for(x=n,i=1&flag;i=5;i+)if(x-1)%5=0) x=4*(x-1)/5;else flag=0; /*若不能分配則置標記falg=0退出分配過程*/if(flag) break; /*若分配過程正常結(jié)束則找到結(jié)果退出試探的過程*/else flag=1; /*否則繼續(xù)試探下一個數(shù)*/printf(Total number of fish catched=%dn,n); /*輸出結(jié)果*/*運行結(jié)果Total number of fish catched = 3121*問題的進一步討論程序采用試探法,試探的初值為6,每次試探的步長為1。這是過分保守的做法??梢栽谶M一步分析題目的基礎(chǔ)上修改此值,增大試探的步長值,以減少試探次數(shù)。*思考題請使用其它的方法求解本題。 16.出售金魚 買賣提將養(yǎng)的一缸金魚分五次出售系統(tǒng)上一次賣出全部的一半加二分之一條;第二次賣出余下的三分之一加三分之一條;第三次賣出余下的四分之一加四分之一條;第四次賣出余下的五分之一加五分之一條;最后賣出余下的11條。問原來的魚缸中共有幾條金魚?*問題分析與算法設(shè)計題目中所有的魚是分五次出售的,每次賣出的策略相同;第j次賣剩下的(j+1)分之一再加1/(j+1)條。第五次將第四次余下的11條全賣了。假定第j次魚的總數(shù)為X,則第j次留下:x-(x+1)/(j+1)當?shù)谒拇纬鍪弁戤厱r,應(yīng)該剩下11條。若X滿足上述要求,則X就是題目的解。應(yīng)當注意的是:(x+1)/(j+1)應(yīng)滿足整除條件。試探X的初值可以從23開始,試探的步長為2,因為X的值一定為奇數(shù)。*程序說明與注釋#includeint main()int i,j,n=0,x; /*n為標志變量*/for(i=23;n=0;i+=2) /*控制試探的步長和過程*/for(j=1,x=i;j=11;j+) /*完成出售四次的操作*/if(x+1)%(j+1)=0) /*若滿足整除條件則進行實際的出售操作*/x-=(x+1)/(j+1);else x=0;break; /*否則停止計算過程*/if(j=5&x=11) /*若第四次余下11條則滿足題意*/printf(There are %d fishes at first.n,i); /*輸出結(jié)果*/n=1; /*控制退出試探過程*/*運行結(jié)果There are 59 fishes at first.*思考題日本著名數(shù)學(xué)游戲?qū)<抑写辶x作教授提出這樣一個問題:父親將2520個桔子分給六個兒子。分完后父親說:“老大將分給你的桔子的1/8給老二;老二拿到后連同原先的桔子分1/7給老三;老三拿到后連同原先的桔子分1/6給老四;老四拿到后連同原先的桔子分1/5給老五;老五拿到后連同原先的桔子分1/4給老六;老六拿到后連同原先的桔子分1/3給老大”。結(jié)果大家手中的桔子正好一樣多。問六兄弟原來手中各有多少桔子?17.平分七筐魚甲、乙、丙三位魚夫出海打魚,他們隨船帶了21只籮筐。當晚返航時,他們發(fā)現(xiàn)有七筐裝滿了魚,還有七筐裝了半筐魚,另外七筐則是空的,由于他們沒有秤,只好通過目測認為七個滿筐魚的重量是相等的,7個半筐魚的重量是相等的。在不將魚倒出來的前提下,怎樣將魚和筐平分為三份?*問題分析與算法設(shè)計根據(jù)題意可以知道:每個人應(yīng)分得七個籮筐,其中有3.5筐魚。采用一個3*3的數(shù)組a來表示三個人分到的東西。其中每個人對應(yīng)數(shù)組a的一行,數(shù)組的第0列放分到的魚的整筐數(shù),數(shù)組的第1列放分到的半筐數(shù),數(shù)組的第2列放分到的空筐數(shù)。由題目可以推出:。數(shù)組的每行或每列的元素之和都為7;。對數(shù)組的行來說,滿筐數(shù)加半筐數(shù)=3.5;。每個人所得的滿筐數(shù)不能超過3筐;。每個人都必須至少有1 個半筐,且半筐數(shù)一定為奇數(shù)對于找到的某種分魚方案,三個人誰拿哪一份都是相同的,為了避免出現(xiàn)重復(fù)的分配方案,可以規(guī)定:第二個人的滿筐數(shù)等于第一個人的滿筐數(shù);第二個人的半筐數(shù)大于等于第一個人的半筐數(shù)。*程序說明與注釋#includeint a33,count;int main()int i,j,k,m,n,flag;printf(It exists possible distribtion plans:n);for(i=0;i3*/a00=i;for(j=i;j=7-i&j3*/a10=j;if(a20=7-j-a00)3)continue; /*第三個人滿筐數(shù)不能3*/if(a20=前一個人,以排除重復(fù)情況*/for(k=1;k=5;k+=2) /*試探半筐a01的值,半筐數(shù)為奇數(shù)*/a01=k;for(m=1;m7-k;m+=2) /*試探 半筐a11的值,半筐數(shù)為奇數(shù)*/a11=m;a21=7-k-m;for(flag=1,n=0;flag&n3;n+)/*判斷每個人分到的魚是 3.5筐,flag為滿足題意的標記變量*/if(an0+an17&an0*2+an1=7)an2=7-an0-an1; /*計算應(yīng)得到的空筐數(shù)量*/else flag=0; /*不符合題意則置標記為0*/if(flag)printf(No.%d Full basket Semibasket Emptyn,+count);for(n=0;n3;n+)printf( fisher %c: %d %d %dn,A+n,an0,an1,an2);* 運行結(jié)果 It exists possible distribution plans:No.1 Full basket Semibasket Emptyfisher A: 1 5 1fisher B: 3 1 3fisher C: 3 1 3No.2 Full basket Semibasket Emptyfisher A: 2 3 2fisher B: 2 3 2fisher C: 3 1 3*思考題晏會上數(shù)學(xué)家出了一道難題:假定桌子上有三瓶啤酒,癬瓶子中的酒分給幾個人喝,但喝各瓶酒的人數(shù)是不一樣的。不過其中有一個人喝了每一瓶中的酒,且加起來剛好是一瓶,請問喝這三瓶酒的各有多少人?(答案:喝三瓶酒的人數(shù)分別是2人、3人和6人) 18.有限5位數(shù)個位數(shù)為6且能被3整除的五位數(shù)共有多少?*題目分析與算法設(shè)計根據(jù)題意可知,滿足條件的五位數(shù)的選擇范圍是10006、10016。99996??稍O(shè)基礎(chǔ)數(shù)i=1000,通過計算i*10+6即可得到欲選的數(shù)(i的變化范圍是1000999),再判斷該數(shù)能否被3整除。*程序說明與注釋#includeint main()long int i;int count=0; /*count:統(tǒng)計滿足條件的五位數(shù)的個數(shù)*/for(i=1000;i9999;i+)if(!(i*10+6)%3) /*判斷所選的數(shù)能否被3整除*/count+; /*若滿足條件則計數(shù)*/printf(count=%dn,count);*運行結(jié)果count=2999 *思考題求100到1000之間有多少個其數(shù)字之和為5的整數(shù)。(答案:104,113,122,131,140,203,212,221,230,302,311,320,401,410,500) 19.8除不盡的自然數(shù)一個自然數(shù)被8除余1,所得的商
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年房地產(chǎn)租賃無限連帶責(zé)任擔保合同3篇
- 2025年度環(huán)保公益活動攝影委托合同3篇
- 二零二五年度水利工程勘察設(shè)計合同范本3篇
- 二零二五年度智慧農(nóng)業(yè)項目合作經(jīng)營利潤分成及農(nóng)業(yè)技術(shù)支持合同3篇
- 2025年汽車抵押貸款合同貸后監(jiān)管及違約處理協(xié)議范本3篇
- 2025年度金融服務(wù)合同融資額度為十億元人民幣3篇
- 2024版的合同范本
- 音樂課程設(shè)計評語大全
- 專用機動車承包服務(wù)合同2024版版B版
- 2024版家具柜子定制合同范本
- 2025屆江蘇省南京師大附中物理高一上期末學(xué)業(yè)質(zhì)量監(jiān)測試題含解析
- 農(nóng)戶種地合作協(xié)議書范本模板
- 2024年人教版八年級物理上冊期末考試卷(附答案)
- 自動化招聘筆試試題及答案
- 重慶市主城四區(qū)2025屆高一物理第一學(xué)期期末聯(lián)考試題含解析
- 住院病人身體約束護理
- 胡夾桃綜合征
- GB/T 44415-2024基于全球衛(wèi)星導(dǎo)航的機動車制動性能路試檢驗要求和方法
- 2023-2024屆高考語文復(fù)習(xí)-閱讀與訓(xùn)練主題+工匠精神(含答案)
- 四川省城市園林綠化施工技術(shù)標準
- 部編版小學(xué)一年級上冊道德與法治教學(xué)設(shè)計(第三、第四單元)
評論
0/150
提交評論