c課程設(shè)計(jì)實(shí)踐報(bào)告_第1頁
c課程設(shè)計(jì)實(shí)踐報(bào)告_第2頁
c課程設(shè)計(jì)實(shí)踐報(bào)告_第3頁
c課程設(shè)計(jì)實(shí)踐報(bào)告_第4頁
c課程設(shè)計(jì)實(shí)踐報(bào)告_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、C+課程設(shè)計(jì)實(shí)踐報(bào)告班級:83121姓名:張弛學(xué)號:XX1000491題目一、題目描述:已知銀行整存整取存款不同期限的月息利率(采用復(fù)利方式,即利滾利)分別為%期限一年%期限二年月息利率=%期限三年%期限五年%期限八年要求輸入存錢的本金和期限(以整數(shù)年為單位),求到期時(shí)能從銀行得到的利息與本金的合計(jì)。提示:可以用嵌套的if-else結(jié)構(gòu)或switch結(jié)構(gòu)實(shí)現(xiàn),核心函數(shù)pow(1+月利率,月份)。請思考年份是四、六、七或八年以上的情況。設(shè)計(jì)思路:(一)使用switch選擇語句對應(yīng)年份(二)明確核心函數(shù)pow是計(jì)算復(fù)利的(例如:x的n次方);由于是以年為計(jì)算期限的,而所給的利率是月利率,所以計(jì)算時(shí)

2、應(yīng)該在年的基礎(chǔ)上乘以12;(三)復(fù)利計(jì)算就是一種哥運(yùn)算,I=p*(1+i)An,本金和利率都是變動(dòng)的(四)在除了1、2、3、5和8年之外的其他年份中,要注意“就低不就高”的原則,尤其是在8年之后,也是套用期限八年的利率。附源程序如下:#include#includevoidmain()intyears;floatcapital,sum;scanf("%f%d",&capital,&years);switch(years)case1:sum=capital*pow(1+*,12);break;case2:sum=capital*pow(1+*,24);brea

3、k;case3:sum=capital*pow(1+*,36);break;case4:sum=capital*pow(1+*,48);break;case5:sum=capital*pow(1+*,60);break;case6:sum=capital*pow(1+*,72);break;case7:sum=capital*pow(1+*,84);break;case8:sum=capital*pow(1+*,96);break;default:sum=capital*pow(1+*,12*years);printf("%f",sum);題目二、題目描述:簡單計(jì)算器。用s

4、witch語句編寫一個(gè)程序計(jì)算表達(dá)式:data1opdata2的值。其中op為運(yùn)算符+、-、*、/。設(shè)計(jì)思路:(一)明確計(jì)算器是怎樣進(jìn)行計(jì)算的;(二)細(xì)節(jié),比如很多地方需要分號,在遇到字符時(shí),我們應(yīng)該用,而不是“”;(三Switch語句主要用于多分支選擇,此題有+、-、*、/,這就是選擇。使用switch每個(gè)case對應(yīng)+-*/符號程序涉及到至少三個(gè)量,運(yùn)算符op和兩個(gè)數(shù)字;先讓用戶輸入兩個(gè)數(shù)字和運(yùn)算符,兩個(gè)數(shù)字的計(jì)算在后面的程序中用swith結(jié)構(gòu)運(yùn)行。運(yùn)行效果截圖:附源程序如下:#includeintmain()floatdata1,data2,c;charop;printf("請

5、輸入表達(dá)式中兩個(gè)數(shù)字data1和data2");/打印scanf("%f%c%f",&data1,&op,&data2);/輸入printf("請輸入運(yùn)算符+、-、*、/");/打印switch(op)/switch()casestick:break;這個(gè)是個(gè)選擇結(jié)構(gòu)如果OP=stick則執(zhí)行這一句如果沒有則執(zhí)行default后面的語句case'+':c=data1+data2;break;case'-':c=data1-data2;break;case'*':c=data

6、1*data2;break;case'/':c=data1/data2;break;default:printf("輸入錯(cuò)誤");break;printf("%f",c);return0;題目三題目描述:編寫程序,用二分法求方程2x3-4x2+3x-6=0在(-10,10)之間的根。提示:用do-while語句實(shí)現(xiàn)。二分法的計(jì)算步驟:(1)準(zhǔn)備計(jì)算f(x)在有根區(qū)間端點(diǎn)處的值f(a),f(b)(2)二分計(jì)算f(x)在區(qū)間中點(diǎn)(a+b)/2處的值f(3)判斷若f=0,則即是根,計(jì)算過程結(jié)束。否則,檢測:A.若f與f(a)異號,則根位于區(qū)間內(nèi)

7、,這時(shí)以(a+b)/2代替b;B.若f與f(a)同號,則根位于區(qū)間內(nèi),這時(shí)以(a+b)/2代替a;反復(fù)執(zhí)行步驟2和3,直到區(qū)間長度縮小到允許的誤差范圍之內(nèi),此時(shí)中點(diǎn)(a+b)/2即為所求的根設(shè)計(jì)思路:(一)二分法是指在整個(gè)算法中,讓計(jì)算值無限趨近于根的值,利用數(shù)學(xué)知識(shí)可知,當(dāng)了兩個(gè)點(diǎn)的結(jié)果異號時(shí),函數(shù)的根就在這兩個(gè)數(shù)之間,利用二分法可以無限的把根的范圍縮小,直到可以確定為止;(二)do-while是循環(huán)語句,先執(zhí)行一次指定的循環(huán)體語句,然后判別表達(dá)式,當(dāng)表達(dá)式的值為非零(真)時(shí),返回重新執(zhí)行循環(huán)語句,如此反復(fù),直到表達(dá)式的值等于0(假)為止才結(jié)束。(三)Voidmain()是聲明函數(shù),并且是對

8、主函數(shù)的聲明。題目所給的范圍是(-10,10),因此在聲明函數(shù)中定義一個(gè)a和b來代替區(qū)間的范圍,而用c來代指中間指也是最后的結(jié)果,在這個(gè)程序中a、b、c都是隨著范圍不斷變化的變量。如果(-10,10)的范圍過大,就需要循環(huán)語句來縮小區(qū)間范圍,即a=c或b=c。當(dāng)函數(shù)值在(-10,10)中任意一點(diǎn)取得0時(shí),就正是我們所要的結(jié)果。循環(huán)條件是當(dāng)區(qū)間a和b的函數(shù)值小于精度。運(yùn)行效果截圖:附源程序如下:#include""floatf(floatx)floaty;y=2*x*x*x-4*x*x+3*x-6;returny;voidmain()floata=-10,b=10,c;doc

9、=f(a+b)/2);if(c=0)break;if(c*f(a)>0)a=c;elseb=c;while(f(b)*f(a)題目四題目描述:編寫程序,給定一個(gè)整數(shù)i,請求出另一個(gè)整數(shù)j,使i和j在用8位二進(jìn)制表示時(shí)互為逆序。例如:給定i=3時(shí),應(yīng)得到j(luò)=192(3的二進(jìn)制為:00000011,192的二進(jìn)制為11000000)。提示:十進(jìn)制整數(shù)轉(zhuǎn)換為二進(jìn)制整數(shù)用“除2求余”法。二進(jìn)制整數(shù)轉(zhuǎn)換為十進(jìn)制整數(shù)用“按權(quán)相加”法。設(shè)計(jì)思路:(一)二進(jìn)制整數(shù)轉(zhuǎn)化為十進(jìn)制整數(shù)用“按權(quán)相加”法(二)二十進(jìn)制整數(shù)轉(zhuǎn)化為二進(jìn)制整數(shù)用“除2求余”,用&轉(zhuǎn)化。(三)運(yùn)算符:>是指右移一位,a是指

10、b向右移a位,左移一位相當(dāng)于乘2右移1位相當(dāng)于除2(四)在交換時(shí),用的是中間法運(yùn)行效果截圖:附源程序如下:#include""voidmain()inti,j,s=1,a;printf("請輸入一個(gè)整數(shù)i:");scanf("%d",&i);for(j=0;jprintf("%d",(a>1)|(a>>3)|(a>>5)|(a>>7);題目五題目描述:編寫程序,抓交通肇事犯。一輛卡車違反交通規(guī)則,撞人后逃跑?,F(xiàn)場有三人目擊事件,但都沒有記住車號,只記下車號的一些特征

11、。甲說:牌照的前兩位數(shù)字是相同的;乙說:牌照的后兩位數(shù)字是相同的,但與前兩位不同;丙是位數(shù)學(xué)家,他說:四位的車號剛好是一個(gè)整數(shù)的平方。根據(jù)以上線索求出車號。提示:按照題目的要求,造出一個(gè)前兩位數(shù)相同、后兩位數(shù)相同且相互間又不同的整數(shù),然后判斷該整數(shù)是否是另一個(gè)整數(shù)的平方。用窮舉法解此題。窮舉法是最簡單、最常見的一種程序設(shè)計(jì)方法,它充分利用了計(jì)算機(jī)處理的高速特征。窮舉法的關(guān)鍵是要確定窮舉的范圍,既不能過分?jǐn)U大窮舉的范圍,也不能過分縮小窮舉的范圍,否則程序的運(yùn)行效率會(huì)很低,或有可能遺漏正確的結(jié)果而產(chǎn)生錯(cuò)誤。設(shè)計(jì)思路:(一)1111到1199在9911這樣窮舉判斷是否一個(gè)數(shù)的平方則是將這個(gè)數(shù)開方取整

12、再取平方是否還是原來的數(shù)(二)此題需要滿足三個(gè)條件:前兩個(gè)數(shù)相同,后兩個(gè)數(shù)相同;前后兩數(shù)分別不相同;這個(gè)數(shù)是一個(gè)整數(shù)的平方。需要每個(gè)條件都滿足,if才為真。(三)主要思路是窮舉。窮舉是指在適當(dāng)?shù)姆秶鷥?nèi)舉出一個(gè)數(shù)。運(yùn)行效果截圖:附源程序如下:#includevoidmain()inta,b;for(a=32;ab=a*a;if(b/1000=b%1000/100b%100!=(b/1000)*10+b%1000/100)printf("Thelicenseplateis:%d",b);&&b%100/10=b%10&&題目六題目描述:從終端輸入

13、實(shí)數(shù)ex=1+x+x2/2!+x3/3!+?+xn/n!的值。設(shè)計(jì)思路:先輸入一個(gè)x的值;再設(shè)計(jì)一個(gè)子函數(shù),計(jì)算1!,2!,3!?n!的值;之后用sum函數(shù),和pow函數(shù)處理分子,用累加的方式進(jìn)行分子計(jì)算,并形成等式;最后輸出結(jié)果。x,用遞推法求附源程序如下:#include""intf(intx,intn)inti,m=0;for(i=0;ifor(i=0,s=0;f(x,i)題目七題目描述:打印出以下的楊輝三角形(要求打印出10行)。11112113311464115101051?設(shè)計(jì)思路:(一)二維數(shù)組主要用于處理多行的問題,而且第一行在數(shù)組之中是第0行。(二)楊輝三

14、角有一個(gè)明顯的特點(diǎn):每一行的最后一個(gè)數(shù)字與第一個(gè)數(shù)是相同的,此外,下(三)一行的第二個(gè)數(shù)是由上一行的第一個(gè)數(shù)和第二個(gè)數(shù)相加之和,以此類推。定義指針是為了讓整個(gè)程序不那么復(fù)雜。運(yùn)行效果截圖:附源程序如下:#includeintmain(void)inta,(*p)=a,i,j;for(i=0;i*(*(p+i)+0)=1;*(*(p+i)+i)=1;for(i=2;i題目八題目描述:找出一個(gè)二維數(shù)組的“鞍點(diǎn)”,即該位置上的元素在該行上最大,在該列上最小。提示:一個(gè)二維數(shù)組可能有鞍點(diǎn)也可能沒有鞍點(diǎn),若有鞍點(diǎn),則只有一個(gè)。準(zhǔn)備兩組測試數(shù)據(jù):(1)二維數(shù)組有鞍點(diǎn):98020590-6021040961

15、89-3101(2)二維數(shù)組沒有鞍點(diǎn):98020590-6021040189196-310174554156用scanf函數(shù)從鍵盤輸入數(shù)組各元素的值,檢查結(jié)果是否正確。如果已指定了數(shù)組的行數(shù)和列數(shù),可以在程序中對數(shù)組元素賦初值,而不必用scanf函數(shù)。請同學(xué)們修改程序以實(shí)現(xiàn)之。設(shè)計(jì)思路:(一)先找出一行中值最大的元素,然后看它是不是該列中的最小值,由于一個(gè)二維數(shù)組最多有一個(gè)鞍點(diǎn),所以如果是則鞍點(diǎn)存在且它就是鞍點(diǎn),輸出該鞍點(diǎn);如果不是,則再找下一行的最大數(shù),以此類推。如果每一行的最大數(shù)都不是鞍點(diǎn),則此數(shù)組無鞍點(diǎn)(二)在程序中,先令a最大賦值給maxi,在for循環(huán)的比較中,把符合條件的行的最大值

16、賦給maxi,將每一次比較后的最大的列數(shù)賦值給maxj,從而找出i行最大的那個(gè)。再假設(shè)那個(gè)數(shù)就是鞍點(diǎn),將最大數(shù)和同列的數(shù)值相比,如果maxj不是最小的,則不是鞍點(diǎn),繼續(xù)找。(三)引入一個(gè)參數(shù)flag=1,若不存在鞍點(diǎn)則flag為0,若存在鞍點(diǎn)則flag依舊為1運(yùn)行效果截圖:附源程序如下:#include""#defineS80#defineT80voidmain()intm,n,i,j,t,maxh,maxl,flag,a;printf("請輸入二維數(shù)組的行數(shù)m和列數(shù)n:");scanf("%d%d",&m,&n);p

17、rintf("請輸入二維數(shù)組的各個(gè)元素:");for(i=0;ia)t=a;maxh=i;maxl=j;for(i=0;ia=%d",maxh,maxl,a);題目九題目描述:奧班期終考試科目為高數(shù)MT、英語EN和物理PH,有30個(gè)人參加考試。為評定獎(jiǎng)學(xué)金,要求統(tǒng)計(jì)并輸出一個(gè)表格,表格內(nèi)容包括學(xué)好、各科分屬、總分和平均分,并標(biāo)出3門課均在90分以上者(該欄標(biāo)志輸出為Y,否則為N),表格形式如下:NOMTENPHSUMV>90123978792276929291902739190818225384NYN#include""voidmain(

18、)設(shè)計(jì)思路:由于是對30個(gè)學(xué)生的數(shù)據(jù)進(jìn)行輸入與統(tǒng)計(jì),所以建立二維數(shù)組,根據(jù)各位置的條件來定義其內(nèi)容,第8個(gè)數(shù)據(jù)是字符型數(shù)據(jù),所以另設(shè)一數(shù)組進(jìn)行存儲(chǔ),最后在將數(shù)據(jù)整合輸出。附源程序如下:#include""voidmain()inti,j,sum,flag,a;printf("請輸入30個(gè)考生的三科成績:");for(i=0;i90)flag=1;elseflag=0;a=sum;a=sum/3;if(flag=1)a='Y'elsea='N'printf("NOMTENPHSUMV>90");fo

19、r(i=0;i題目十題目描述下面是一個(gè)5*5階的螺旋方陣,試編程打印出此形式的n*n(n設(shè)計(jì)思路:定義一個(gè)n*n維數(shù)組存放該方陣,m為該方陣的圈數(shù),一個(gè)大循環(huán)中嵌套了四個(gè)小循環(huán),每一圈為一個(gè)大循環(huán),第一個(gè)小循環(huán)按順序?qū)懗龅谝恍械臄?shù),第二個(gè)小循環(huán)按順序?qū)懗鲎詈笠涣械臄?shù),第三個(gè)小循環(huán)按順序?qū)懗鲎詈笠恍械臄?shù),第四個(gè)小循環(huán)按順序?qū)懗龅谝涣械臄?shù),再進(jìn)行第二次大循環(huán),循環(huán)完畢后再進(jìn)行循環(huán)輸出數(shù)組中的n*n個(gè)數(shù),該螺旋方陣就出來了。附源程序如下:#include""voidmain()inti,j,k=0,m,n,a;printf("請輸入方陣行列數(shù)n(nk+;a=k;for(

20、j=i+1;j=i;j-)k+;a=k;for(j=n-i-2;j>=i+1;j-)k+;a=k;for(i=0;iprintf("%5d",a);printf("");附:實(shí)習(xí)總結(jié)與心得體會(huì)經(jīng)過C語言實(shí)習(xí),讓我加深了對C語言的了解,而不只是單單的在課本中學(xué)到的那些理論,平時(shí)乏味的課程,通過自己動(dòng)手親自編寫,變的生動(dòng)有趣,而在自己動(dòng)手的過程中,出現(xiàn)的問題很多,比理論要難的多,當(dāng)一個(gè)程序?qū)懲暌院?,?jīng)常會(huì)有很多錯(cuò)誤而沒法解決。不過,通過幾天的實(shí)習(xí),逐漸積攢了一些經(jīng)驗(yàn),有些錯(cuò)誤可以很快就看出來。這次實(shí)習(xí)有很大的收獲,讓我對C語言有了更深的認(rèn)識(shí),平時(shí)在課堂上學(xué)到的東西可以自己動(dòng)手編寫,將其轉(zhuǎn)化成一些實(shí)用的技能。如果是一個(gè)程序?qū)懲暌惶庡e(cuò)誤也沒有,會(huì)有種成就感,于是興趣就來了,興趣來了,自然學(xué)的東西也就多了,能把理論變成實(shí)際的技能,讓我對C語言有了濃厚的興趣和更深層的認(rèn)識(shí)。C語言是一個(gè)有序的學(xué)習(xí),學(xué)了最基本的替換,然后擴(kuò)展到循環(huán)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論