版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、哈爾濱工程大學程序設計基礎實驗報告基礎實踐一姓 名: 麥豆 班 級: 學 號: 實驗時間: 2018 年 5 月 3 日成績哈爾濱工程大學計算機基礎課程教學中心實驗題目1:寫一個函數,Sn=a+aa+aaa+aaa求多項式的前n項和,其中a是一個數字。n由鍵盤輸入。設計思想:聲明函數sum,利用循環(huán)求得sum最終值并返回sum值實驗代碼及注釋:#include int sum(int a,int n);/sum函數聲明int main() int n; int a; printf( 請輸入a,n:n); scanf(%d%d,&a,&n); printf(前%d項和為%dn,n,sum(a,n
2、);/調用函數sum return 0;int sum(int a,int n) int sum=0; int i; int count; count=0; for(i=1;i=n;i+) count=count*10+a;/每次乘10加a sum=sum+count; return sum;驗證與結論:總結與心得體會:聲明函數時后面一定要有分號,但寫函數時不需要。實驗題目2:編程實現求10000以內的回文數。其中,函數實現判斷任一正整數是否為回文數。所謂回文數就是將一個數從左向右讀與從右向左讀是一樣的,例如121和1331都是回文數。設計思想:聲明judje函數,判斷number是否為回文數
3、。在函數內部先判斷數字number位數,由于回文數為對稱結構,故通過位數來確定判斷次數,每次判斷數字首位與個位然后去掉首位與個位再次判斷直至循環(huán)結束。另外需要對個位數另行判斷,個位數一定為回文數。如果為回文數返回1,否則返回0。實驗代碼及注釋:#include #include int judje(int number);/聲明judje函數int main() int i; for(i=0;i10000;i+) if(judje(i)=1)/judje為1的數輸出 printf(%dt,i); return 0;int judje(int number)/判斷number是否為回文數 int
4、 judje,i=0,middle_number,parity,j;/回文數判斷變量,數字位數,數字位數中間變量,數字位數奇偶 int middle_number2;/取掉首位個位剩余數 int shouwei,gewei;/首位,個位 middle_number2=number;/全部賦初值 middle_number=number; do /判斷數字位數 i+; middle_number=middle_number/10;/對數字除以10直到為0 while (middle_number!=0); parity=i/2;/運算次數 for (j=1;j=parity;j+) shouwe
5、i=middle_number2/pow(10.0,(double)(i-2*j+1);/首位數字 gewei=middle_number2%10;/個位數字 middle_number2=(middle_number2-shouwei*pow(10.0,(double)(i-2*j+1)/10;/將首位與個位去除后剩余的數 if(shouwei=gewei) & j=parity)/個位與首位相等且都已比較完成 judje=1;/1為真 else if(shouwei!=gewei) judje=0; break; if(parity=0)/如果為個位數一定為回文數 judje=1; ret
6、urn judje;驗證與結論:總結與心得體會:通過函數可以使代碼更加簡潔,流程更加清晰。實驗題目3:假設你每月在儲蓄賬戶上存100元,年利率是5%,則每月的利率是0.05/12=0.00417。第一個月后,賬戶上的值變成100*(1+0.00417)=100.417;第二個月后,賬戶上的值變成(100+100.417)*(1+0.00417)=201.252;第三個月后,賬戶上的值變成(100+201.252)*(1+0.00417)=302.507,以此類推。寫一個函數,根據用戶輸入的每月的存款數、年利率和月份數,計算給定月份后賬戶上的錢數。設計思想:聲明final_money,由題意可知
7、每個月錢數為上個月錢數加每月存的錢數乘以每月利率,在函數內部由循環(huán)得到錢數,返回final_money。實驗代碼及注釋:#include double final_money(double money,double lilv,int n);/函數聲明int main() double money,lilv;/每月存款數,年利率 int n;/月份 printf(請輸入每月存款數、年利率和存款月份數(以空格隔開):n); scanf(%lf%lf%d,&money,&lilv,&n); printf(賬戶上的剩余錢數為%.3lf,final_money(money,lilv,n); return
8、 0;double final_money(double money,double lilv,int n)/存款數、年利率和月份數 double final_money=0;/賦初值 int i;/循環(huán)變量 for(i=1;i=n;i+) final_money=(final_money+money)*(1+lilv/12);/表達式 return final_money;/ 返回錢數驗證與結論:總結與心得體會:函數參數可以是多個但返回值只有一個。實驗題目4:用遞歸法將一個整數n轉換成字符串。例如,輸入483,應輸出的字符串“483”,n的位數不確定,可以是任意位數的整數。設計思想:聲明函數,
9、在函數將數每次除以10反復遞歸調用直到為0,而余數加上0可以產生相應的字符。實驗代碼及注釋:#include void change(int n);int main() int n; printf(請輸入整數n:); scanf(%d,&n); printf(輸出相應字符串:); if (n0) putchar(-); /先輸出一個-號 n=-n;/轉化為正值 change(n); printf(n); return 0;void change(int n) int i; i=n/10; if (i!=0) change(i);/對n每次除以10反復遞歸調用直到為0 putchar(n%10+
10、0);/余數加上0可以產生相應的字符驗證與結論:總結與心得體會:余數可以加上48來得到相應的字符但加0會更加簡單。函數遞歸必須要有限制條件,轉換字符串函數限制條件就是i為0。實驗題目5:用遞歸方法求n階勒讓德多項式的值。設計思想:直接利用函數遞歸,當階數值為o返回1,階數值為1返回輸入的數。另外階數值在遞歸時需要強制轉換為float類型,否則式子計算為整型數。實驗代碼及注釋:#include float number(float x,int n);/函數聲明int main() int n;/ 階數 float x;/循環(huán)變量充當輸入的數 printf(請輸入x值和階數:n); scanf(%
11、f%d,&x,&n); printf(%.2fn,number(x,n); return 0;float number(float x,int n) if(n=0) return 1; else if(n=1) return x; return (2*n-1)*x*number(x,n-1)/(float)n-(n-1)*number(x,n-2)/(float)n;/遞歸求n階勒讓德多項式注意n為整數需要強制轉換 驗證與結論:總結與心得體會:遞歸是c語言中最基礎也是極為重要的算法,核心是函數自身對自身的調用。注意整型除以整型仍為整型,故需要對階數值強制轉換。實驗題目6:編程求20以內正整數的
12、階乘。要求:寫一函數求任一整數的階乘,在函數內部通過定義靜態(tài)局部變量求階乘。設計思想:聲明一個factorial函數,在函數內部定義靜態(tài)變量,利用循環(huán)求階乘值,由于局部靜態(tài)變量會保留上一次運行的值,故求20以內正整數的階乘只能調用一次factorial函數,求19的階乘然后利用循環(huán)從19往下輸出直到1的階乘。實驗代碼及注釋:#include long long factorial(int number);/函數聲明int main() int i=19; long long x;/數據極大必須用longlong數據類型 x=factorial(i);/僅調用一次函數 /printf(%ld,x
13、); for(i=19;i0;i-) printf(%d!是%lldn,i,x);/longlong用%lld輸出 x/=i;/除掉之后多余的數的到當前i的階乘 return 0;long long factorial(int number)/求任意整數階乘函數 static long long y=1;/靜態(tài)變量只賦一次初值以后函數調用會保留上一次的值 int i; for (i=1;inumber;i+) y=y*(i+1);/用循環(huán)求階乘 return y;/返回階乘值驗證與結論:總結與心得體會:局部靜態(tài)變量會保留上一次運行的值,故在此題中只調用了一次函數.另外由于10以上階乘數極大,聲明類型時用了long long類型。實驗題目7:編程實現兩個整形變量內容互換。用帶參數的宏實現變量內容的交換。設計思想:直接用帶參數的宏充當函數來對兩個整型變量交換。實驗代碼及注釋:#include #define change(x,y) mid=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2觸電人員的急救
- 出納綜合考試題及答案
- 采油調度員考試題庫及答案
- 四川省內江市2026年中考語文三模試卷附答案
- 2025-2026人教版八年級語文上期測試卷
- 2025-2026二年級道德法治測試題
- 肝轉移微創(chuàng)與開放手術療效比較
- 肝衰竭CRRT抗凝與血小板輸注策略探討
- 衛(wèi)生室感染管理制度
- 衛(wèi)生院基藥宣傳制度
- 2026海南安保控股有限責任公司招聘11人筆試模擬試題及答案解析
- 裝飾裝修工程施工組織設計方案(二)
- 2026上海碧海金沙投資發(fā)展有限公司社會招聘參考題庫必考題
- 保險業(yè)客戶服務手冊(標準版)
- 檢驗科內控制度
- DB44-T 2771-2025 全域土地綜合整治技術導則
- 淺談醫(yī)藥價格管理現狀透析
- 全屋定制合同協(xié)議模板2025年標準版
- 2025年數字人民幣應用基礎考試模擬試卷及答案
- 孕婦監(jiān)護和管理課件
- 2026年安全員之A證考試題庫500道(必刷)
評論
0/150
提交評論