




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C++程序設計報告
前言我認為安排此次課程設計的目的,是讓同學們在獨立完成設計、編寫、調試應用程序及編寫文檔的任務的過程中,及時鞏固已學的知識,補充未學但是非常重要的知識,提高程序設計的能力。針對C++語言中的重點和難點內容,如數組和函數等,進行訓練,并且能充分發揮獨立自主學習的能力,對于在程序設計和調試中遇到的問題,應積極和同學交流,相互學習,共同進步
二、正文1.(1)題目:任意輸入一個正整數,要求:(1)求它是幾位數;(2)按逆序輸出各位數字;(3)求奇數位數字之和。(2)算法分析分離出每一末位數字,然后輸出;判斷是否為奇數位,將奇數位數字相加求和;利用循環結構進行編程,每位數字逐一進行分離、判斷。(3)程序:程序要有詳盡注釋,如:各參數的含義、函數的功能等#include<iostream>usingnamespacestd;voidmain(){ intn,m,s=0,i=0;//定義變量 cout<<"請輸入一個正整數n"<<endl; cin>>n; do { m=n%10;//n對10取模,得到該數的最后一位數字 cout<<m;//逆序輸出每位數字 n/=10; i++; if(i%2==1)//判斷是否為奇數位 {s+=m;}//各奇數位數字之和 }while(n>0);//循環一次,計算一次,共循環i次cout<<"共有"<<i<<"位數字"<<endl;cout<<"奇數位之和是:"<<s<<endl;}(4)運行結果(5)調試過程中出現過的問題和解決的方法2.(1)題目:輸入階數n(1≤n≤10),輸出對應的n階旋轉矩陣。所謂旋轉矩陣,就是在n階矩陣中,起始數1置于方陣的左上角,然后從起始數開始依次遞增,按順時針方向從外向里旋轉填數而成。如:輸入n=5,輸出:12345161718196152425207142322218131211109(2)算法分析(3)程序:程序要有詳盡注釋,如:各參數的含義、函數的功能等#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){intn=0,m=1,l,r,u,d,i=1,j=1,a[10][10];//定義變量和一個二維數組cout<<"inputthen:";cin>>n;l=1;r=n;u=1;d=n;while(l<=r&&u<=d)//循環一次輸出一圈{for(i=l;i<=r;i++)//從左到右對數組賦值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++)//輸出數組{for(j=1;j<=n;j++){cout<<setw(3)<<a[i][j];}cout<<'\n';}}(4)運行結果(5)調試過程中出現過的問題和解決的方法
3.(1)題目:將一個5×5矩陣中的最小元素放在中心,四個角分別放四個最大的元素(從左到右、從上到下的順序為從大到小存放),要求:(1)輸出變換后的矩陣;(2)任意輸入一個數,如果該數在矩陣中,確定該數的位置。(2)算法分析(3)程序:程序要有詳盡注釋,如:各參數的含義、函數的功能等#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;//定義變量和一個二維數組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調整后的數組為:\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<<"列\n";}(4)運行結果(5)調試過程中出現過的問題和解決的方法
4.(1)題目:有數列1/1+2/1+3/2+5/3+8/5+13/8+21/13+……。請觀察其規律,求出該數列的前n項之和,結果要求保留四位小數。(2)算法分析An=a1/b1bn=an-1an=an-1+bn-1Sn=Sn-1+An(3)程序:程序要有詳盡注釋,如:各參數的含義、函數的功能等#include<iostream>#include<iomanip>usingnamespacestd;intmain(){ inta=2,b=1;intn,t; doubles=1;//定義變量,數列和的初始值為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 }//循環n-1次,求和 cout<<setw(5)<<fixed<<setprecision(4);//設輸出結果域寬為5個字符,保留4位小數 cout<<s<<endl;return0; }(4)運行結果(5)調試過程中出現過的問題和解決的方法首先找出數列各項的規律,然后按步驟編寫程序,這道題沒有遇到難以解決的問題。
5.(1)題目:采用二分法求解方程f(x)=x3-x-1=0在區間[1.0,1.5]內的一個實根。要求精確到小數點后的第2位。二分法的基本思想,就是將方程根所在的區間平分為兩個小區間,再判斷根屬于哪個小區間;把有根的小區間再平分為二,再判斷根所在的更小的區間,對分;重復這一過程,最后求出所要的近似值。(2)算法分析二分法的基本思路是:任意兩個點a和b,判斷區間(a,b)內有無一個實根,如果f_a與f_c符號相反,則說明有一實根。接著取(a,b)的中點c,檢查f_c和f_b是否同號,如果不同號,說明實根在(c,b)之間,如果同號,在比較(a,c),這樣就將范圍縮小一半,然后按上述方法不斷的遞歸調用,直到區間相當小(找出根為止)。(3)程序:程序要有詳盡注釋,如:各參數的含義、函數的功能等#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)合用,可以控制小數點右邊的數字個數為2,即保留兩位小數}doubled(doublex){ doublef; f=x*x*x-x-1; returnf;}(4)運行結果(5)調試過程中出現過的問題和解決的方法第一次調試程序后,顯示結果為x=1.324718,沒有保留兩位小數,經過檢查,確定輸出語句cout<<"x="<<setiosflags(ios::fixed)<<setprecision(2)<<c<<endl;是正確的,但是不知道為什么沒起作用。后來和同學討論后,發現前面沒加#include<iomanip>,因此結果只能輸出c++默認的輸出流有效位數。
三、收獲與體會程序,最主要的是實踐。通過這一次集中的強化訓練,我不僅鍛煉了自己的結構化程序設計思想,更提高了邏輯思維能力,理解了如何用c++語言來表達"面向對象",使自己的程序設計能力上一臺階,同時使自己的各種綜合能力得到提高。經過一學期的學習以及兩周的程序設計實踐,我學習C++最
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學前教育機構師資隊伍建設與管理中的家庭教育協同研究報告
- 安全師年試題及答案
- 安全規程教育試題及答案
- 零售業數字化供應鏈協同與供應鏈協同平臺建設實踐報告
- 中國區域劃分及省份課件
- 法治安全教育主題班會
- 公文管理課件
- 中國八大景點課件
- 護理職業生涯規劃
- 防疫培訓系列課件下載
- GB/T 22751-2008臺球桌
- GA 1205-2014滅火毯
- “十個堅持”的邏輯體系與深刻內涵
- 攜手耕耘未來課件
- 社區工作者經典備考題庫(必背300題)
- 2023年陜西韓城象山中學高一物理第二學期期末聯考試題(含答案解析)
- DB4401-T 102.1-2020 建設用地土壤污染防治+第1部分:污染狀況調查技術規范-(高清現行)
- 農業產業園可行性研究報告
- 實驗2:基本數據類型、運算符與表達式
- 常州建筑水電安裝施工專項方案
- 增強教師職業認同感、榮譽感、幸福感-課件
評論
0/150
提交評論