




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、程序設計與算法語言實驗指導一、目的和任務程序設計的學習在數(shù)學專業(yè)的教學中占有重要地位。 在建立數(shù)學模型后, 對模型的求解和檢驗中多數(shù)會需要借用程序執(zhí)行來完成。 程序設計與算法語言實驗課的目的就是通過實驗培養(yǎng)并提高學生編寫程序的能力和計算機應用的能力。實驗通過一些實例的編程學習,培養(yǎng)學生面向問題時建立邏輯清晰的思想,練習應用 c 語言進行程序編寫并執(zhí)行,對問題中的各有關量進行分析,給出結果。二、實驗環(huán)境計算機機房三、實驗時數(shù)16 學時實驗 1 選擇結構程序設計實驗目標:1、熟悉并掌握vc+6.0 開發(fā)環(huán)境;2、了解數(shù)據(jù)類型在程序設計語言中的意義;3、掌握 C 語言程序的順序結構,并會編寫、運行;
2、4、理解并掌握if 語句和 switch 語句的執(zhí)行流程;5、理解并掌握嵌套的選擇結構的執(zhí)行流程。實驗內容:題目 1:從鍵盤輸入一個任意大小的實數(shù) x,如果 x 滿足條件 -29.5x30 ,則輸出 x 及其絕對值,否則只輸出 x。題目 2:從鍵盤輸入一個字符,如是小寫字母,則輸出“small” ,如是大寫字母則輸出“big ”,如是數(shù)字則輸出“ number”,其他字符則輸出“other”。題目 3:設計一個四則運算的計算器。如輸入: 1+2則輸出: 1+2=3實驗 2 循環(huán)結構程序設計實驗目標:1、掌握實現(xiàn)循環(huán)結構的三種流程控制語句while 、 dowhile 、 for 的用法和執(zhí)行過
3、程;2、熟練掌握用循環(huán)方法實現(xiàn)幾種常用算法。實驗內容:題目 1:找出 100999 之間(含100 和 999)所有整數(shù)中各位上數(shù)字之和為x( x 為一正整數(shù))的整數(shù),然后輸出。例如:當 x 的值為 5 時,100999 之間各位上數(shù)字之和為5 的整數(shù)有: 104、113、122、131、140、 203、212、221、230、 302、 311、320、401、 410、 500,共 15 個;當 x 的值為 27 時,100999 之間各位上數(shù)字之和為27 的整數(shù)有: 999,只有 1 個。題目 2:寫出計算方程 f(x)=(x+3) 2-7 在( -3, 0)之間的實數(shù)根的程序。題目
4、3:給定程序的功能是:計算下式前n 項的和。例如, n的值為 10時,得到結果: 9.612558。 請在程序的下劃線處填入正確的內容并把下劃線刪除 ,使程序得出正確的結果。注意:不得增行或刪行,也不得更改程序的結構!#includeVoidmain()int n=-1;inti;doubles, t;while(n0): );scanf(%d,&n);/*found*/s=【 1】 ;/*found*/for(i=1; i= 【2】 ; i+) t=2.0*i;/*found*/s=s+(2.0*i-1)*(2.0*i+1)/【 3】 ;printf(nThe result is: %fn,
5、s);實驗 3 數(shù)組實驗目標:1、掌握一維數(shù)組的定義、賦值和輸入輸出的方法;2、掌握字符數(shù)組的使用;3、掌握與數(shù)組有關的典型算法。實驗內容:題目 1:輸出以下的楊輝三角形11112113311464115101051。 。要求:輸出10 行題目 2:已有一個已排好序的數(shù)組,今輸入一個數(shù),要求按原來排序的規(guī)律將它插入到數(shù)組中。如:原數(shù)組元素為:124679,則輸入5 后插入到數(shù)組中形成新的序列:1245679要求:寫出算法思路分析的過程。題目 3:折半查找。在有N 個元素的數(shù)組(元素由小到大的順序存放)中,查找x 是否存在于該數(shù)組,如存在輸出x 在數(shù)組中的下標,如不存在則輸出“non-exist
6、ent !”折半查找的基本思想說明:設查找數(shù)據(jù)的范圍下限為low=0 ,上限為 hig=N-1 ,求中點 mid=( low+hig )/2,用 x 與中點元素(即mid 作為下標的元素)比較,若相等即找到,停止查找;否則,若x 大于中點元素,替換下限low=mid+1 ,到下半段繼續(xù)查找;若x 小于中點元素,替換上限hig=mid-1 ,到上半段繼續(xù)查找;具體事例如下圖:情況 1)設要查找的數(shù)據(jù)x=5 ,則有:1low357mid91113hig由于mid為下標的值是7 ,大于x,則修改上限hig135791113Lowmidhig由于mid為下標的值是3 ,小于x,則修改下限low1357
7、91113higLowmid由于 mid 為下標的值是5,等于 x,則找到數(shù)據(jù),結束查找。情況 2)設要查找的數(shù)據(jù)x=8 ,則有:135791113lowmidhig由于 mid 為下標的值是7 ,小于 x,則修改下限 low135791113lowmidhig由于 mid 為下標的值是11,大于 x,則修改上限 hig135791113higlowmid由于 mid 為下標的值是9,大于 x,則修改上限 hig135791113higlow由于上限 hig 小于下限low ,則表示沒有找到,結束查找。實驗 4 函數(shù)實驗目標:1、掌握函數(shù)的定義和調用方法;2、掌握函數(shù)實參與形參的對應關系;3、
8、理解和掌握數(shù)組作為函數(shù)參數(shù)的用法。實驗內容:題目 1:執(zhí)行以下程序,寫出執(zhí)行結果,并分析。題目 2:填寫下述del 函數(shù)內容,功能是刪除整型數(shù)組中指定的數(shù)。如:數(shù)組中的數(shù)為: 4、 8、 9、 7、 0、 1 要刪除的數(shù)為9;刪除后數(shù)組中的值為:4、 8、 7、0、 1要求:寫出算法思路分析的過程。實驗 5 指針實驗目標:1、掌握有關指針的概念,會定義和使用指針變量;2、掌握指針和函數(shù)的關系;3、掌握指針和數(shù)組的關系。實驗內容:題目 1:(1)執(zhí)行下列程序,并分析運行結果( 2)試修改上程序,使得函數(shù) fun能夠交換主調函數(shù) main 中a, b的值。題目 2:給定程序中,函數(shù) fun的功能是
9、:計算形參 x所指數(shù)組中 N個數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)) ,將所指數(shù)組中大于平均值的數(shù)據(jù)移至數(shù)組的前部,小于等于平均值的數(shù)據(jù)移至x所指數(shù)組的后部,平均值作為函數(shù)值返回,在主函數(shù)中輸出平均值和移動后的數(shù)據(jù)。例如,有 10個正數(shù): 4630324061745154826,平均值為: 30.500000移動后的輸出為:4632404548306171526請在程序的 下劃線處填入正確的內容并把下劃線刪除, 使程序得出正確的結果。注意:不得對源程序增行或刪行,也不得更改程序的結構!題目 3:函數(shù) fun的功能是:將 a、 b中的兩個兩位正整數(shù)合并形成一個新的整數(shù)放在 c中。合并的方式是: 將 a
10、中的十位和個位數(shù)依次放在變量 c的十位和千位上, b中的十位和個位數(shù)依次放在變量c的個位和百位上。例如,當 a 45, b=12。調用該函數(shù)后,c=5241。注意 : 請勿改動主函數(shù) main和其它函數(shù)中的任何內容,僅在函數(shù) fun的花括號中填入你編寫的若干語句。實驗 6 結構體實驗目標:掌握結構體類型變量的定義和使用;通過該實驗把 C 語言中的幾個主要知識(如:順序結構、選擇結構、循環(huán)結構、數(shù)組、函數(shù)等)得到綜合應用。實驗內容:題目:建立一個簡單的學生成績管理系統(tǒng)。具體功能如下:( 1)錄入學生信息的功能。每個學生的數(shù)據(jù)包括學號、姓名、四門課的成績。( 2)打印學生信息的功能。( 3)計算學
11、生平均成績的功能。程序設計與算法語言實驗報告專業(yè)班級姓名學號實驗項目實驗一選擇結構程序設計實驗目的1、熟悉 if、 switch 語句形式。2、掌握程序設計的基本方法。3、學會簡單的選擇結構程序設計方法。實驗內容題目 1:從鍵盤輸入一個任意大小的實數(shù) x,如果 x 滿足條件 -29.5x30 ,則輸出 x 及其絕對值,否則只輸出 x。要求:寫出算法思路分析的過程。題目 2:從鍵盤輸入一個字符,如是小寫字母,則輸出“small” ,如是大寫字母則輸出“big ”,如是數(shù)字則輸出“ number”,其他字符則輸出“other”。題目 3:設計一個四則運算的計算器。如輸入: 1+2則輸出: 1+2=
12、3題目 1:算法設計分析 (用流程圖表示算法是怎么實現(xiàn)的。如有多個函數(shù),那么你是怎么組織這些函數(shù)的,為什么要這么劃分,各個函數(shù)之間的調用關系是什么樣的)實驗測試結果及結果分析 (列出幾組輸入和輸出結果,針對這些輸入和輸出做分析)結果分析題目 2:算法設計分析實驗測試結果及結果分析題目 3:算法設計分析實驗測試結果及結果分析實驗總結(略)附錄 實驗程序代碼 (該部分請加注釋 )/* 程序定義部分:*/* 主函數(shù)部分 :調用選擇界面函數(shù),再依據(jù)用戶的選擇,調用相應函數(shù),實現(xiàn)相關功能*/void main()FNODE *head;int n=0;*另注 :1、源代碼部分請附加適當?shù)淖⑨屨f明;2、打
13、分的表格請置于實驗報告最后一頁的底端;3、請遵照本實驗范例的文字大小和段落格式排版;4、實驗報告雙面打??;5、每個實驗15 分計。-序號項目得分總分1 實驗報告排版 (2 分)2 算法思想分析 (3 分)3 源代碼 (7 分 )4 實驗結果及分析 (3 分 )實驗報告雷同者均視為未做。抄襲請慎重!【1-1】#include#includevoid main()float x,y;/定義浮點數(shù)x,yprintf( 請輸入 x:n);/ 屏幕上顯示請輸入xyscanf(%f,&x);/輸入xy=sqrt(x*x);/ 開平方根if(x-29.5)/判斷范圍printf(%f %f,x,y);/輸出
14、x 是否同時滿足大于等于-29.5 和小于等于30else /不然printf(%f,x);/輸出【1-2】#includevoid main()char a;/定義字符printf(n 請輸入一個字符:);/ 換行 +屏幕上輸出( XXX )a=getchar();/ 輸入一個字符if(a=0&a=A&a=a&a=z)/如果printf(smalln);Else/不然printf(othern);system(pause);/ 停留在 dos 界面【 1-3】#includevoid main()int a,b;/ 定義數(shù)字char c;/定義運算符printf( 請輸入數(shù)字:n);scan
15、f(%d,&a);/ 輸入數(shù)字printf( 請輸入運算符:n);scanf( %c,&c);/ 輸入運算符printf( 請輸入數(shù)字:n);scanf(%d,&b);/ 輸入數(shù)字switch(c)case 42:printf(%d*%d=%d,a,b,a*b);break;/42 的 ASCII 是 *case 43:printf(%d+%d=%d,a,b,a+b);break;/43 的 ASCII 是 +case 45:printf(%d-%d=%d,a,b,a-b);break;/45 的 ASCII 是 -case 47:printf(%d/%d=%d,a,b,a/b);break;
16、/47 的 ASCII 是 / 【 2-1】#includevoid main()int s,n=100;/*s 是和 sum 的縮寫n 的起始值為100 而且是整數(shù) */printf( 輸入你要的三位數(shù)的和:n );/RTscanf(%d,&s);/ 輸入 swhile(n1000)/ 在 n1000 即小于等于999 之前一直尋找以下符合條件的數(shù)字int a=n%10;/a 個位int b=n/10;/b 十位int c=n/100;/c 百位n+;/i 的自增if(a+b+c=s)/ 如果 abc 加起來符合你輸入的三位數(shù)之和printf( %d,n);/ 輸出所有符合條件的100-99
17、9 的數(shù)字system(pause);/dos 黑框停留【 2-2】#include#define f(x) (x+3)*(x+3)-7)/宏定義void main()float a=-3,b=0,c,eps=1e-5;/a 下界 b 上界c 是中間變量eps=1e-5 是區(qū)間的極限大小while (b-a)eps)/ 當上界下界還大于極小的極限時執(zhí)行下面c=(a+b)/2;/ 對區(qū)間區(qū)中值if(f(c)=0)/ 如果 c 是函數(shù)的根break;/ 跳出循環(huán)else/否則if(f(a)*f(c)0) b=c;/是否 c 是else a=c;/否則 c 作為新的a 也就是縮小下界printf(
18、實數(shù)根 =%fn,c);system(pause); 【 2-3】#includevoid main()int i,n=-1;/ 定義整型變量i ndouble s,t;/定義雙精度浮點小數(shù)s twhile(n0):);/顯示scanf(%d,&n);/ 輸入s=0;/【 1】 s 的初始值for(i=1;i=n; i+)/【 2】 i從1 開始執(zhí)行次數(shù)取決于nt=2.0*i;/分母是奇數(shù)(從1 開始)的二倍s=s+(2.0*i-1)*(2.0*i+1)/(t*t);/ 【 3】累加求和直到循環(huán)部分結束printf(nThe result is: %fn,s);/輸出【 3-1】#includ
19、e#include#define N 11/ 看到 N 全部換成 11void main()int n=0,aNN,i,j; / 定義 n 行從 0 開始的楊輝三角 ,二維數(shù)組 a1111,i 行 ,j 列 printf( 請輸入楊輝三角的行數(shù): );scanf(%d,&n);printf(n%d 行楊輝三角為: nn,n);for(i=1;i=n;i+)/楊輝三角的兩邊的數(shù)為1ai1=aii=1;/控制二位數(shù)組的邊和對角線,把邊和對角線全賦值成1,循環(huán)從1 開始 ,ai1 為第一個數(shù)for(i=3;i=n;i+)for(j=2;j=i-1;j+)/控制除了邊及對角線的內部的數(shù)aij=ai-1
20、j-1+ai-1j;/某一個數(shù) =上一排同列的數(shù)+上一排左一列的數(shù),除了邊和對角線for(i=1;i=n;i+)for(j=1;j=i;j+)/j=i 控制輸出下三角 ,不輸出其它的數(shù), printf(%5d,aij);printf(n);/當一行輸出完以后換行繼續(xù)下一行的輸出為了數(shù)字不堆一起美觀printf(n);/美觀system(pause);/ 防閃退【3-2】#includemain()int a7=1,2,4,6,7,9,i,j,x;/定義一個7 位數(shù)組printf( 現(xiàn)有排列1 2 4 6 7 9 nn 請輸入一個數(shù):scanf(%d,&x);/ 輸入 xnn);for(i=0;
21、i7;i+)if(xi;j-)aj=aj-1;/由倒二 a6 開始往倒一aj=x;/ 新的挪出來的空位填入xa7 前移,即a6 a7 a5 a6.printf(nn 現(xiàn)在的排列是:nn);/ 輸出for(i=0;i7;i+)printf( %d,ai);/輸出重排數(shù)組printf(nn);【 3-3】#include#define N 7void main()int i,aN=1,3,5,7,9,11,13,k,x,low,high,mid; /low,high查找數(shù)組元素范圍的下標printf(a數(shù)組中的數(shù)據(jù)如下:);for(i=0;iN;i+)printf(%4d,ai);printf(n
22、);printf( 輸入要查找的數(shù)x:);scanf(%d,&x);low=0;high=6; / 設置 low,high 初始查找范圍while(low=high) /當有查找范圍 ,進入循環(huán)mid=(low+high)/2; /求 mid ,查找范圍的中間元素下標if(x=amid) / 如果中間元素等于被查找數(shù),找到,跳出循環(huán)k=mid; break; elseif(xamid) /m比中間元素小high=mid-1; /m 應該在中間元素的左邊,修改查找范圍elselow=mid+1; /m應該在中間元素的右邊,修改查找范圍if (lowhigh,已經(jīng)沒有查找范圍了【 4-1】#inc
23、ludesp(int x,int y)/ 定義一個叫sp 的函數(shù) (sp 前沒有, 表示缺省int) ,形參 or 入口函數(shù)為int x,int yint t,i;/t=x;/x 的值賦給tx=y;/y 的值賦給xy=t;/t 的值賦給y(x 的值賦給y)實現(xiàn)對 xy 的值互換/省略 return 或無任何表達式無返回值main()/ 無返回值int a,b;/a=7;/b=9;/printf( 函數(shù)調用前a=%d b=%dn,a,b);/sp(a,b);/調用函數(shù)printf( 函數(shù)調用后a=%d b=%dn,a,b);/省略 return 或無任何表達式無返回值【 4-2】#include
24、void del(int b,int n,int y)/ b是數(shù)組, n 是數(shù)組元素總共有幾個,假設 y 是查找并要刪的int i,j,cnt=0;/cnt 是次數(shù) for(i=0;in;i+)if(bi=y)/ 當找到第 i 個等于 y 時 for(j=i;jn;j+)bj=bj+1;/ 把后面的值賦到 i 的位置#define N 6void main()int aN=4,8,9,7,0,1,i,x;printf( 請輸入要查找并刪除的數(shù)據(jù):);scanf(%d,&x);del(a,N,x);/ 調用函數(shù)for(i=0;iN-1;i+)printf(%dt,ai);/ t能夠讓間距變大printf(n);【 5-1】void fun(int*a,int*b)/實參 ab 作為形參直接改動int k;k=*a;*a=*b;*b=k;/a指向 k b 指向 a k 指向 bvoid main()int a=3,b=6;int *x,*y;/ 定義指針 xyprintf(before:%d %dt,a,b);x=&a;y=&b;/x/*x指向指向a 的地址 a 的值y 指向*y 指向b 的地址b 的值fun(x,y);/ 函數(shù)對 ab 直接進行操作printf(after
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海土方合同范例
- 2025青海省建筑安全員-C證考試題庫
- 三年級口算題大全1000道
- 2025年青海省安全員《A證》考試題庫及答案
- 單車租借服務合同范本
- 會展展位服務合同范本
- 半掛車出口合同范本
- 單位電腦維護合同范本
- 2025年山西省建筑安全員A證考試題庫附答案
- 2025天津市建筑安全員知識題庫及答案
- 2023年新安全生產(chǎn)法
- 卡通可愛風格學生課程表模板
- 英語四線三格A4空白紙
- 分娩舍母豬分娩管理
- GB/T 9119-2010板式平焊鋼制管法蘭
- UNIX操作系統(tǒng)基礎(全)
- 《塔臺競標標書》設計單
- 第一講-俄語入門(課堂)課件
- 《計算機組裝與維護》第十章BIOS與CMOS
- 許曉峰版電機拖動電子教案(全)課件
- 鋼鐵冶金學(煉鋼學)課件
評論
0/150
提交評論