c語言實驗指導學生版._第1頁
c語言實驗指導學生版._第2頁
c語言實驗指導學生版._第3頁
c語言實驗指導學生版._第4頁
c語言實驗指導學生版._第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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í)行過程;2、熟練掌握用循環(huán)方法實現(xiàn)

3、幾種常用算法。實驗內容:題目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ù)根的程序。題目3:給定程序的功能是:計算下式前n項的和。1x3 3x5 5x7(2x-T)xp

4、x+l)s + 十+- + i -,護 63(23尸例如,n的值為10時,得到結果:9.612558。請在程序的下劃線處填入正確的內容并把下 劃線刪除,使程序得出正確的結果。注意:不得增行或刪行,也不得更改程序的結構!#i nclude Voidmai n() int n=-1;int i;double s, t;while( n0): );scan f(%d, &n);*fo un d*s=【1】*fo un d*for(i=1; i=【2 】;i+) t=2.0*i;*fo un d*s=s+(2.0*i-1)*(2.0*i+1)/【3 】prin tf(nThe result is: %

5、fn ,s);實驗 3 數(shù)組實驗目標:1、掌握一維數(shù)組的定義、賦值和輸入輸出的方法;2、掌握字符數(shù)組的使用;3、掌握與數(shù)組有關的典型算法。實驗內容:題目1:輸出以下的楊輝三角形1111211331146411510105 1要求:輸出 10 行題目 2:已有一個已排好序的數(shù)組,今輸入一個數(shù),要求按原來排序的規(guī)律將它插入到數(shù)組 中。如:原數(shù)組元素為: 1 2 4 6 7 9 ,則輸入 5 后 插入到數(shù)組中形成新的序列: 1 2 4 5 6 7 9 要求:寫出算法思路分析的過程。題目 3:折半查找。在有 N 個元素的數(shù)組(元素由小到大的順序存放)中,查找 x 是否存在 于該數(shù)組,如存在輸出 x 在

6、數(shù)組中的下標,如不存在則輸出“ non-existent !” 折半查找的基本思想說明:設查找數(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 ,則有:1357 91113lowmidhig由于mid為下標的值是7 ,大于x,則修改上限hig135791113

7、Lowmidhig由于mid為下標的值是3,小于x,則修改下限low135791113higLowmid由于mid為下標的值是5,等于x,則找到數(shù)據(jù),結束查找。情況 2) 設要查找的數(shù)據(jù) x=8 ,則有:135791113lowmidhig由于 mid 為下標的值是7 ,小于 x ,則修改下限 low13 579 1113low midhig由于mid 為下標的值是11 ,大于 x,則修改上限 hig13 579 1113higlowmid由于mid 為下標的值是9,大于 x,則修改上限 hig13 579 1113higlow由于上限 hig 小于下限low ,則表示沒有找到,結束查找。實驗

8、4函數(shù)實驗目標:1掌握函數(shù)的定義和調用方法;2、掌握函數(shù)實參與形參的對應關系;3、理解和掌握數(shù)組作為函數(shù)參數(shù)的用法。實驗內容:題目1:執(zhí)行以下程序,寫出執(zhí)行結果,并分析。ttincludesp(int x,int y)nain() int a,b ;b=9;printf(*函數(shù)調用前a-W b-dnBa.b); sp(afb);printfC1 函數(shù)調用后a=*d b=%dXnaiBa,b);題目2:填寫下述del函數(shù)內容,功能是刪除整型數(shù)組中指定的數(shù)。Void del(int b ,int n ,int y)ltdefine N 6Void nainC )int aN=4f8f9,7F0,1

9、fi,x;printf (-請輸入要查找并刪除的數(shù)據(jù)汁); scanfCd&x);del(a fNrx);for(i=0;i如:數(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í)行下列程序,并分析運行結果void fmi (iiu *九 ini )r WVviM 址:a k=n: =b, b=k; *mniii ()1)=6;Inc戸血:上氏b:心fun ; ppiliitf

10、(a,b);(2)試修改上程序,使得函數(shù) fun能夠交換主調函數(shù) main中a, b的值。題目2:給定程序中,函數(shù)fun的功能是:計算形參x所指數(shù)組中N個數(shù)的平均值(規(guī)定所有數(shù)均為正 數(shù)),將所指數(shù)組中大于平均值的數(shù)據(jù)移至數(shù)組的前部,小于等于平均值的數(shù)據(jù)移至x所指數(shù)組的后部,平均值作為函數(shù)值返回,在主函數(shù)中輸出平均值和移動后的數(shù)據(jù)。例如,有 10 個正數(shù):46 30 32 40 6 17 45 15 48 26,平均值為:30.500000 移動后的輸出為:4632 404548306171526請在程序的下劃線處填入正確的內容 并把下劃線刪除,使程序得出正確的結果。注意:不得對源程序增行或刪

11、行,也不得更改程序的結構!define N 12血誠玻fmifdoMble牧)屮觸I-K 余加誡融(v.yN尸0汁如血=0: iN; i+十)*r或 11/* *fOlUL(V * */+J奸一;疋Barirr; i * i * a- + * + *+foiuid * * * * * * tf(或x _3_) yU+=xU如加);i:N: +H1蕊=yffl;*1 靱 i: “收辿tesAfN;如g=0;乎N;計+”jy=imid0%50; jgum(%4Jf :血;屮 piWlCn)10( y恥注蠻m爭k 威坨;加);+RiiwtffWIte 黃駅山:ii如&0;N:計+) piiiufi

12、*o$.0f題目3:函數(shù)fun的功能是:將a、b中的兩個兩位正整數(shù)合并形成一個新的整數(shù)放在c中。合并的方式是:將a中的十位和個位數(shù)依次放在變量c的十位和千位上,b中的十位和個位數(shù)依次放在變量c的個位和百位上。例如,當a= 45, b=12。調用該函數(shù)后,c=5241。注意:請勿改動主函數(shù) main和其它函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#mclude期加 fun(加 a. 如b, long *c|2*Vbid 腳ft)伽也;卩pjjmtrinpii5b:“);v斂測刼T,&九&b);3 加 eb&w1OUU 11 msult K: %1(111);實驗 6 結構體

13、實驗目標: 掌握結構體類型變量的定義和使用;通過該實驗把 C 語言中的幾個主要知識(如:順序結構、選擇結構、循環(huán)結構、數(shù)組、函 數(shù)等)得到綜合應用。實驗內容:題目:建立一個簡單的學生成績管理系統(tǒng)。具體功能如下: (1)錄入學生信息的功能。每個學生的數(shù)據(jù)包括學號、姓名、四門課的成績。 (2)打印學生信息的功能。(3)計算學生平均成績的功能。程序設計與算法語言實驗報告專業(yè)班級姓名學號實驗項目實驗一選擇結構程序設計實驗目的1熟悉if、switch語句形式。2、掌握程序設計的基本方法。3、學會簡單的選擇結構程序設計方法。實驗內容題目1:從鍵盤輸入一個任意大小的實數(shù)x,如果x滿足條件-29.5x30 ,

14、則輸出x及其絕對值,否則只輸出X。要求:寫出算法思路分析的過程。題目2:從鍵盤輸入一個字符,如是小寫字母,則輸出small” ,如是大寫字母則輸出big”,如是數(shù)字則輸出number”,其他字符則輸出other”。題目3:設計一個四則運算的計算器。如輸入:1+2則輸出:1+2=3題目1 :算法設計分析(用流程圖表示算法是怎么實現(xiàn)的。如有多個函數(shù),那么你是怎么組織這些函數(shù)的,為什么要這么劃分,各個函數(shù)之間的調用關系是什么樣的)實驗測試結果及結果分析(列出幾組輸入和輸出結果,針對這些輸入和輸出做分析)-U 立dj菠 崖薯香一先 子祖 有有ndjchzt 3x12 祖先為:her.mother so

15、niSndaLighter-in一lawl-H 擇立UJ找找 詵建薯香一先 子祖 兒的 右有靑輸入雯查找的姓名:sgnl祖先為三 f at he f 點| mo t he r 怡否繼續(xù)琴是否0Press anp key to continue結果分析題目2:算法設計分析實驗測試結果及結果分析題目3:算法設計分析實驗測試結果及結果分析實驗總結(略)附錄實驗程序代碼(該部分請加注釋)/*程序定義部分:*/*主函數(shù)部分:調用選擇界面函數(shù),再依據(jù)用戶的選擇,調用相應函數(shù),實現(xiàn)相關功能*/void mai n()FNODE *head;int n=0;*另注:1源代碼部分請附加適當?shù)淖⑨屨f明;2、打分的

16、表格請置于實驗報告最后一頁的底端;3、請遵照本實驗范例的文字大小和段落格式排版;4、實驗報告雙面打??;5、每個實驗15分計。序號項目得分總分1實驗報告排版(2分)2算法思想分析(3分)3源代碼(7分)4實驗結果及分析(3分)實驗報告雷同者均視為未做。抄襲請慎重!【1-1】#include #include void main()float x,y; /定義浮點數(shù) x,yprintf( 請輸入 x:n);/ 屏幕上顯示請輸入 xy scanf(%f,&x);/ 輸入 x y=sqrt(x*x);/ 開平方根if(x-29.5)/ 判斷范圍 x 是否同時滿足大于等于 -29.5 和小于等于 30

17、printf(%f %f,x,y);/ 輸出else /不然 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); scanf(%

18、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

19、;/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

20、-999 的數(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也就是縮小下界print

21、f( 實數(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-

22、1 】#include#include#define N 11/看到 N 全部換成 11void main()intn=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-

23、1j-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ù): nn); scanf(%d,&x);/

24、輸入 xfor(i=0;i7;i+)if(xi;j-)aj=aj-1; 由倒二 a6開始往倒一 a7前移,即 a6a7 a5a6aj=x;/ 新的挪出來的空位填入 xprintf(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

25、(%4d,ai);printf(n);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; else if(xamid) /m 比中間元素小 high=mid-1; /m 應該在中間元素的左邊,修改查找范圍 else low=mid+1; /m 應該在中間元素的右邊,修改查找范圍if

26、(lowhigh ,已經(jīng)沒有查找范圍了【4-1】#includesp(int x,int y)定義一個叫sp的函數(shù)(sp前沒有,表示缺省int),形參or入口函數(shù)為int x,int y int t,i;/t=x;/x 的值賦給 tx=y;/y 的值賦給 xy=t;/t的值賦給y(x的值賦給y)實現(xiàn)對xy的值互換/省略 return 或無任何表達式無返回值mai n()無返回值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 或無任何表達式

27、無返回值【4-2】#includevoid 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 指向 b void main()int a=3,b=6;int *x,*y;/ 定義指針 xy printf(be

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論