




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C++程序設(shè)計報告
前言我認為安排此次課程設(shè)計的目的,是讓同學(xué)們在獨立完成設(shè)計、編寫、調(diào)試應(yīng)用程序及編寫文檔的任務(wù)的過程中,及時鞏固已學(xué)的知識,補充未學(xué)但是非常重要的知識,提高程序設(shè)計的能力。針對C++語言中的重點和難點內(nèi)容,如數(shù)組和函數(shù)等,進行訓(xùn)練,并且能充分發(fā)揮獨立自主學(xué)習(xí)的能力,對于在程序設(shè)計和調(diào)試中遇到的問題,應(yīng)積極和同學(xué)交流,相互學(xué)習(xí),共同進步
二、正文1.(1)題目:任意輸入一個正整數(shù),要求:(1)求它是幾位數(shù);(2)按逆序輸出各位數(shù)字;(3)求奇數(shù)位數(shù)字之和。(2)算法分析分離出每一末位數(shù)字,然后輸出;判斷是否為奇數(shù)位,將奇數(shù)位數(shù)字相加求和;利用循環(huán)結(jié)構(gòu)進行編程,每位數(shù)字逐一進行分離、判斷。(3)程序:程序要有詳盡注釋,如:各參數(shù)的含義、函數(shù)的功能等#include<iostream>usingnamespacestd;voidmain(){ intn,m,s=0,i=0;//定義變量 cout<<"請輸入一個正整數(shù)n"<<endl; cin>>n; do { m=n%10;//n對10取模,得到該數(shù)的最后一位數(shù)字 cout<<m;//逆序輸出每位數(shù)字 n/=10; i++; if(i%2==1)//判斷是否為奇數(shù)位 {s+=m;}//各奇數(shù)位數(shù)字之和 }while(n>0);//循環(huán)一次,計算一次,共循環(huán)i次cout<<"共有"<<i<<"位數(shù)字"<<endl;cout<<"奇數(shù)位之和是:"<<s<<endl;}(4)運行結(jié)果(5)調(diào)試過程中出現(xiàn)過的問題和解決的方法2.(1)題目:輸入階數(shù)n(1≤n≤10),輸出對應(yīng)的n階旋轉(zhuǎn)矩陣。所謂旋轉(zhuǎn)矩陣,就是在n階矩陣中,起始數(shù)1置于方陣的左上角,然后從起始數(shù)開始依次遞增,按順時針方向從外向里旋轉(zhuǎn)填數(shù)而成。如:輸入n=5,輸出:12345161718196152425207142322218131211109(2)算法分析(3)程序:程序要有詳盡注釋,如:各參數(shù)的含義、函數(shù)的功能等#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){intn=0,m=1,l,r,u,d,i=1,j=1,a[10][10];//定義變量和一個二維數(shù)組cout<<"inputthen:";cin>>n;l=1;r=n;u=1;d=n;while(l<=r&&u<=d)//循環(huán)一次輸出一圈{for(i=l;i<=r;i++)//從左到右對數(shù)組賦值a[j][i]=m++;u+=1;i-=1;for(j=u;j<=d;j++)//從上到下的a[j][i]=m++;r-=1;j-=1;for(i=r;i>=l;i--)//從右到左的a[j][i]=m++;d-=1;i+=1;for(j=d;j>=u;j--)//從下到上的a[j][i]=m++;l+=1;j+=1;}for(i=1;i<=n;i++)//輸出數(shù)組{for(j=1;j<=n;j++){cout<<setw(3)<<a[i][j];}cout<<'\n';}}(4)運行結(jié)果(5)調(diào)試過程中出現(xiàn)過的問題和解決的方法
3.(1)題目:將一個5×5矩陣中的最小元素放在中心,四個角分別放四個最大的元素(從左到右、從上到下的順序為從大到小存放),要求:(1)輸出變換后的矩陣;(2)任意輸入一個數(shù),如果該數(shù)在矩陣中,確定該數(shù)的位置。(2)算法分析(3)程序:程序要有詳盡注釋,如:各參數(shù)的含義、函數(shù)的功能等#include<iostream>#include<iomanip>usingnamespacestd;voidmyswap(int&a,int&b){ intx; x=a;a=b;b=x;}constintmaxint=1992;voidmain(){ intmat[5][5],max[4]={-1*maxint,-1*maxint,-1*maxint,-1*maxint},maxi[4],maxj[4]; inti,j,k,n,min=maxint,mini,minj;//定義變量和一個二維數(shù)組cout<<"請輸入5×5矩陣:\n"; for(i=0;i<5;i++) { for(j=0;j<5;j++) { cin>>mat[i][j]; if(min>mat[i][j]) { min=mat[i][j];mini=i;minj=j; } into,oi,oj; o=mat[i][j];oi=i;oj=j; for(k=0;k<4;k++) { if(o>max[k]) {myswap(o,max[k]);myswap(oi,maxi[k]);myswap(oj,maxj[k]); } } } } myswap(mat[2][2],mat[mini][minj]); myswap(mat[0][0],mat[maxi[0]][maxj[0]]); myswap(mat[4][0],mat[maxi[1]][maxj[1]]); myswap(mat[0][4],mat[maxi[2]][maxj[2]]); myswap(mat[4][4],mat[maxi[3]][maxj[3]]); cout<<"\n調(diào)整后的數(shù)組為:\n"; for(i=0;i<5;i++) { for(j=0;j<5;j++)cout<<setw(4)<<mat[i][j]; cout<<"\n"; } cout<<"\n請輸入要查找的元素:"; cin>>n; cout<<"\n目標元素的位置是:\n"; for(i=0;i<5;i++) for(j=0;j<5;j++) if(mat[i][j]==n)cout<<"第"<<i+1<<"行,第"<<j+1<<"列\(zhòng)n";}(4)運行結(jié)果(5)調(diào)試過程中出現(xiàn)過的問題和解決的方法
4.(1)題目:有數(shù)列1/1+2/1+3/2+5/3+8/5+13/8+21/13+……。請觀察其規(guī)律,求出該數(shù)列的前n項之和,結(jié)果要求保留四位小數(shù)。(2)算法分析An=a1/b1bn=an-1an=an-1+bn-1Sn=Sn-1+An(3)程序:程序要有詳盡注釋,如:各參數(shù)的含義、函數(shù)的功能等#include<iostream>#include<iomanip>usingnamespacestd;intmain(){ inta=2,b=1;intn,t; doubles=1;//定義變量,數(shù)列和的初始值為1,即n=1,s=1 cout<<"求前n項的和:"; cin>>n; for(inti=1;i<=n-1;i++) { s=s+a/b;//Sn=Sn-1+An t=a;a=a+b;b=t;//求An }//循環(huán)n-1次,求和 cout<<setw(5)<<fixed<<setprecision(4);//設(shè)輸出結(jié)果域?qū)挒?個字符,保留4位小數(shù) cout<<s<<endl;return0; }(4)運行結(jié)果(5)調(diào)試過程中出現(xiàn)過的問題和解決的方法首先找出數(shù)列各項的規(guī)律,然后按步驟編寫程序,這道題沒有遇到難以解決的問題。
5.(1)題目:采用二分法求解方程f(x)=x3-x-1=0在區(qū)間[1.0,1.5]內(nèi)的一個實根。要求精確到小數(shù)點后的第2位。二分法的基本思想,就是將方程根所在的區(qū)間平分為兩個小區(qū)間,再判斷根屬于哪個小區(qū)間;把有根的小區(qū)間再平分為二,再判斷根所在的更小的區(qū)間,對分;重復(fù)這一過程,最后求出所要的近似值。(2)算法分析二分法的基本思路是:任意兩個點a和b,判斷區(qū)間(a,b)內(nèi)有無一個實根,如果f_a與f_c符號相反,則說明有一實根。接著取(a,b)的中點c,檢查f_c和f_b是否同號,如果不同號,說明實根在(c,b)之間,如果同號,在比較(a,c),這樣就將范圍縮小一半,然后按上述方法不斷的遞歸調(diào)用,直到區(qū)間相當(dāng)?。ㄕ页龈鶠橹梗?。(3)程序:程序要有詳盡注釋,如:各參數(shù)的含義、函數(shù)的功能等#include<iostream>#include<iomanip>usingnamespacestd;doubled(double);voidmain(){ doublea=1.0,b=1.5,c; doublef_a,f_b,f_c; f_a=d(a); f_b=d(b); do { c=(a+b)/2;//求a,b的中點 f_c=d(c); if(f_a*f_c<0)//確保輸入的a,b使得f_a,f_c符號相反do b=c; else { a=c; f_a=f_c; } } while(f_c>0.01||f_c<-0.01); cout<<"f(x)=x*x*x-x-1=0"<<endl; cout<<"x="<<setiosflags(ios::fixed)<<setprecision(2)<<c<<endl;//setprecision(2)與setiosflags(ios::fixed)合用,可以控制小數(shù)點右邊的數(shù)字個數(shù)為2,即保留兩位小數(shù)}doubled(doublex){ doublef; f=x*x*x-x-1; returnf;}(4)運行結(jié)果(5)調(diào)試過程中出現(xiàn)過的問題和解決的方法第一次調(diào)試程序后,顯示結(jié)果為x=1.324718,沒有保留兩位小數(shù),經(jīng)過檢查,確定輸出語句cout<<"x="<<setiosflags(ios::fixed)<<setprecision(2)<<c<<endl;是正確的,但是不知道為什么沒起作用。后來和同學(xué)討論后,發(fā)現(xiàn)前面沒加#include<iomanip>,因此結(jié)果只能輸出c++默認的輸出流有效位數(shù)。
三、收獲與體會程序,最主要的是實踐。通過這一次集中的強化訓(xùn)練,我不僅鍛煉了自己的結(jié)構(gòu)化程序設(shè)計思想,更提高了邏輯思維能力,理解了如何用c++語言來表達"面向?qū)ο?,使自己的程序設(shè)計能力上一臺階,同時使自己的各種綜合能力得到提高。經(jīng)過一學(xué)期的學(xué)習(xí)以及兩周的程序設(shè)計實踐,我學(xué)習(xí)C++最
溫馨提示
- 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 班主任在班級活動中的引導(dǎo)角色計劃
- 合同范本音樂app
- 股骨頸骨折護理查房
- 班級班規(guī)的制定與執(zhí)行計劃
- 2025年自然拼讀2級標準課件材料
- 學(xué)校周邊安全環(huán)境的構(gòu)建計劃
- 建立有效的會議記錄機制計劃
- 第3課 中華文明的起源2024-2025學(xué)年新教材七年級上冊歷史新教學(xué)設(shè)計(統(tǒng)編版2024)
- 以活動促學(xué)習(xí)的班級實踐計劃
- 《貴州水城礦業(yè)股份有限公司水城縣米籮煤礦(新立一期)(延續(xù))礦產(chǎn)資源綠色開發(fā)利用方案(三合一)》評審意見
- (高清版)外墻外保溫工程技術(shù)標準JGJ144-2019
- 機電控制與可編程序控制器課程設(shè)計報告
- 簡版?zhèn)€人征信報告模板
- 森林防火主題教育班會PPT
- 船舶安檢缺陷處理建議表籍國內(nèi)航行海船
- 輻照交聯(lián)電線電纜型號說明
- 公路工程決算編制辦法(交公路發(fā)2004-507號)附表
- 礦山機械無人駕駛項目可行性研究報告模板
- 預(yù)充氣競技步槍 標準A4靶紙
- 避免同業(yè)競爭承諾函
- 產(chǎn)品批量質(zhì)量事故追責(zé)管理規(guī)范
評論
0/150
提交評論