程序設計語言實驗安排數(shù)學104_第1頁
程序設計語言實驗安排數(shù)學104_第2頁
程序設計語言實驗安排數(shù)學104_第3頁
程序設計語言實驗安排數(shù)學104_第4頁
程序設計語言實驗安排數(shù)學104_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、.實驗注意事項:1、 進入機房必須遵守學校實驗室的管理規(guī)定。2、 實驗期間不能進行與實驗無關的工作,特別是不能玩游戲、不能網上聊天。3、 本課程共安排設置8個實驗項目,對每個實驗應獨立完成,不得抄襲。4、 對每個實驗均需填寫一份實驗報告并在下一個實驗前上交本次的實驗報告。5、 注意保存好每次實驗所建立的源程序以備教師檢查。6、 本實驗課程為一個獨立設課的考查課程,教師根據(jù)學生的實驗態(tài)度、實驗報告質量和教師檢查情況進行成績評定。7、 填寫實驗報告應使用學校統(tǒng)一規(guī)定使用的廣州大學實驗報告紙,按照其表格中的各項內容規(guī)范填寫,具體如下:開課學院及實驗室:數(shù)學與信息科學學院 計算機實驗樓307b年月日:

2、填寫各實驗具體的實驗日期實驗課程名稱:統(tǒng)一填寫“程序設計語言實驗”實驗項目名稱:參看下面各實驗的具體安排成績欄和指導教師欄由教師填寫。實驗報告內容填寫3大項:實驗目的、實驗原理、實驗內容(包括源程序、測試數(shù)據(jù)及實驗結果、問題解答等)。實 驗 一實驗項目名稱:c開發(fā)環(huán)境的熟悉與使用實驗時間:2011-9-1實驗目的:1、初步了解c程序的特點和構成。2、熟悉turbo c 2.0 ide環(huán)境的操作。3、掌握c程序上機的4個步驟:編輯、編譯、連接和運行調試。4、初步了解程序的調試方法。實驗原理:1. 啟動tc:方法1:dos狀態(tài)下:進入tc子目錄鍵入tc回車方法2:windows環(huán)境下:雙擊安裝目錄

3、下的tc.exe文件或雙擊其啟動的快捷方式。2. c程序上機的4個步驟:編輯、編譯、連接和運行調試。具體過程如下:(1)編輯源程序,完成后將源程序以擴展名.c存盤。(2)對源程序進行編譯,即將源程序轉換為擴展名為.obj的二進制代碼。若源程序有錯,必須予以修改,然后重新編譯。(3)對編譯通過的源程序連接,即加入庫函數(shù)和其它二進制代碼生成可執(zhí)行程序。連接過程中,可能出現(xiàn)未定義的函數(shù)等錯誤,為此,必須修改源程序,重新編譯和連接。(4)執(zhí)行生成的可執(zhí)行代碼,若不能得到正確的結果,必須修改源程序,重新編譯和連接。若能得到正確結果,則整個編輯、編譯、連接、運行過程順利結束。注:在tc2.0的ide環(huán)境下

4、,對源程序的編譯、連接、運行可在一個命令下一氣呵成。3. 常用命令:存盤:f2或filesave 從磁盤讀入c程序:f3或fileload運行程序:ctrl+f9或runrun 查看運行結果:alt+f5或runuser screen4. 退出tc集成環(huán)境:從file菜單選擇quit命令或按alt+x。 實驗內容:1. 在tc2.0 ide環(huán)境中輸入教材p3的例1.1程序,進行編譯、連接和運行,并且查看運行結果,對程序進行存盤。執(zhí)行filenew命令后再從磁盤讀入該程序進行編輯和運行調試。2. 上機測試并回答下列問題:1) 程序中的錯誤有哪些類型?其特點是什么?一般應如何修改?2) 在tc2.

5、0中,用戶的工作目錄如何設置?(注:用戶的工作目錄是指用戶保存源程序文件和讀入源程序文件時的默認目錄)3) 若文件myc1.c編譯成功后會產生什么文件?連接成功后會產生什么文件?這兩個文件的默認保存目錄如何設置?4) 若tc2.0的工作環(huán)境(例如:系統(tǒng)庫文件目錄)設置不正確,將會產生什么問題?5) 在tc2.0中,程序執(zhí)行完畢就馬上返回編輯狀態(tài),致使觀察運行結果時要按alt+f5或runuser screen,為了使程序運行完畢后暫停,應在源程序中加上什么語句?6) 程序調試的手段有哪些?(選做題,但必須了解)實驗1問題回答參考答案:1)程序中的錯誤通常分為三類:一是編譯時的錯誤,主要是語法錯

6、誤,在編譯階段可由編譯系統(tǒng)發(fā)現(xiàn);二是邏輯錯誤,主要是計算公式寫錯、程序邏輯控制錯誤等,造成程序運行不能得到正確結果,一般需使用單步執(zhí)行、打開變量觀察窗口等調試手段;三是運行時的錯誤,一般是用戶輸入的數(shù)據(jù)不合法,如:除數(shù)為0,致使程序出錯運行不下去。解決的方法是完善程序,提高程序運行的可靠性。2) file菜單的change dir命令3)文件myc1.c編譯成功后產生myc1.obj文件,連接成功后會產生myc1.exe文件。這兩個文件的默認保存目錄在options菜單directories命令output directory項中設置。4)在連接階段將會產生如:頭文件、庫文件找不到的錯誤,導致

7、連接無法完成。5)在main()函數(shù)內的最后一行加上getch();語句實 驗 二實驗項目名稱:順序程序設計實驗時間:2011-9-8實驗目的:1、理解和掌握程序設計的順序結構。2、理解和掌握c語言的數(shù)據(jù)類型和表達式。3、掌握c程序設計中的輸入和輸出方法。實驗原理:1. 順序結構的程序是指程序的執(zhí)行自上而下、自左至右, 程序中的每一個語句都能被執(zhí)行一次,而且只能被執(zhí)行一次。順序結構的程序設計是最簡單的。2. c語言的基本數(shù)據(jù)類型有整型、字符型和實型。計算機語言中的數(shù)據(jù)的表數(shù)范圍與數(shù)學上的表數(shù)范圍具有差異。3. 常量和變量的概念及其使用。4. c語言的運算符豐富,運算符具有優(yōu)先級和結合性。5.

8、c語言中表達式的書寫很多時候跟數(shù)學上是不同的。6. 格式輸入和輸出函數(shù)scanf()、printf()的調用格式及其各參數(shù)的意義。實驗內容:1. 驗證實驗教程p12的驗證性程序(1),理解:數(shù)據(jù)的鍵盤輸入格式應與scanf()函數(shù)的格式控制寫法一致;字符型數(shù)據(jù)與整型數(shù)據(jù)的轉換規(guī)定(使用其碼)。2. 驗證實驗教程p13的驗證性程序(2),理解:整型數(shù)據(jù)在c語言的表數(shù)范圍與數(shù)學上的差異及整型數(shù)據(jù)溢出時系統(tǒng)的處理方法;理解負整數(shù)在機器內的補碼表示。3. 完成實驗教程p17的程序分析(2)。4. 完成課本p27練習1113(上機運行時,需補充完整程序),理解“+”、“-”運算符的運算特點;理解格式輸入

9、輸出函數(shù)的格式及其控制功能。5. 驗證課本p27練習14,理解邏輯運算符“與”、“或”的短路運算特點。(選做題)6. 完成課本p28練習15。(選做題)7. 回答下列問題:a) 下列數(shù)學代數(shù)式子寫成c語言表達式應如何書寫: (提示:開根號運算可使用系統(tǒng)函數(shù)sqrt()b) 數(shù)學上表示范圍的式子:0a100,寫成語言的邏輯表達式應如何書寫?實驗2參考答案:第3題: &a,&b a/b a%b 第4題:(課本練習題13)main()int a=2,b=6,c=8;float x=2.3,y=3.4,z=-4.8;long u=52875,l=128765;char c1=e,c2=f;printf

10、(a=%d b=%d c=%dn,a,b,c);printf(x=%.6f,y=%.6f,z=%.6fn,x,y,z);printf(x+y=%.2f y+z=%.2f z+x=%.1fn,x+y,y+z,z+x);printf(u=%ld l=%ldn,u,l);printf(c1=%c or %d(ascii)n,c1,c1);printf(c2=%c or %d(ascii)n,c2,c2);第6題:(課本練習題15)main()float a,b,c,d,e,sum,ave;scanf(%f%f%f%f%f,&a,&b,&c,&d,&e);sum=a+b+c+d+e;ave=sum/5

11、;printf(sum=%fnave=%fn,sum,ave);第7題:a) a*b/(c*d) 或 a*b/c/d (-b+sqrt(b*b-4*a*c)/(2*a)b) a=0 & a=100實 驗 三實驗項目名稱:選擇結構程序設計實驗時間:2011-09-15、2011-09-22實驗目的:1、 理解c語言的語句、算法的概念、流程圖的表示。2、 掌握程序流程控制選擇(分支)結構。3、 熟練掌握if語句和switch語句的使用。4、 理解if語句和switch語句的嵌套。實驗原理:1. if語句的一般形式:if () else 2. 缺省else的條件語句形式: if () 3. if語句

12、嵌套的一般形式:if( ) if( )語句1 else 語句2else if( )語句3 else 語句4 4. switch語句的一般形式是:switch ()case : case : : : case : default:為了不再執(zhí)行本case后面的其它case和default語句,可用break語句中斷switch語句,使流程跳到switch語句后面。實驗內容:1. 完成教材p71習題5,程序中要輸出max變量的值。2. 閱讀教材p71習題6的程序,判斷其輸出的結果,最后上機驗證你的判斷。3. 完成教材p72習題9。4. 上機測試并回答下列問題:1) 下面程序的功能是什么?對復合語句t

13、=a;a=b;b=t;,若去掉“”和“”程序會發(fā)生編譯上的錯誤嗎?能實現(xiàn)程序原來的功能嗎?在復合語句t=a;a=b;b=t;后面添加一個“;”號,對程序有沒有影響?main()float a,b,c,t;scanf(%f%f%f,&a,&b,&c);if (ab)t=a;a=b;b=t;if (ac)t=a;a=c;c=t;if (bc)t=b;b=c;c=t;printf(%f,%f,%fn,a,b,c);if (ab) /*第一個if*/if (ac) /*第二個if*/temp=a;else temp=b;2) 在嵌套的if語句中,else如何與if配對?對下面的兩個程序段,else與哪

14、個if配對?if (ab) /*第一個if*/if (ac) /*第二個if*/temp=a;else temp=b;3) 閱讀理解下列求一元二次方程ax2+bx+c=0解的程序,該程序全面考慮了系數(shù)a,b,c的各種可能取值。(不用寫入實驗報告)#include main()float a,b,c,d,x1,x2,p,q;printf(input a,b,c:);scanf(%f,%f,%f,&a,&b,&c);if (fabs(a)1e-6) /*也可以直接寫成(a=0)*/if (fabs(b)1e-6) /*也可以直接寫成(b=0)*/if (fabs(c)1e-6) /*也可以直接寫成

15、(c=0)*/printf(is trivial.n);elseprintf(is impossible.n);elseprintf(has only one root:%8.4fn,-c/b);elsed=b*b-4*a*c;if (fabs(d)1e-6) /*也可以直接寫成(d0)*/ x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a); printf(has two diffent real roots:%8.4f and %8.4fn,x1,x2); elsep=-b/(2*a);q=sqrt(-d)/(2*a);printf(has two com

16、plex roots:);printf(x1=%8.4f+%8.4fin,p,q);printf(x2=%8.4f-%8.4fin,p,q);實驗3參考答案:第1題:(課本練習題5)main()int a,b,c,max;printf(input a,b,c:);scanf(%d,%d,%d,&a,&b,&c);if (ab)if(ac) max=a;else max=c;elseif (bc) max=b;else max=c;printf(max(%d,%d,%d)=%dn,a,b,c,max);第2題:(課本練習題6)(1)輸出結果:0 (2)輸出結果:*#第3題:(課本練習題9)#in

17、clude main()char ch;printf(input a char:);ch=getchar();if (ch=a & ch=a & ch=0 & ch=9)printf(%c is a numbern,ch);else printf(%c is a other charn,ch);第4題:1)程序的功能是對鍵盤輸入的三個數(shù)按由小到大排序;對復合語句t=a;a=b;b=t;,若去掉“”和“”程序不會發(fā)生編譯上的錯誤,但不能實現(xiàn)程序原來的功能;在復合語句t=a;a=b;b=t;后面添加一個“;”號,對程序沒有影響。 2)在嵌套的if語句中,else總是與前面最近的未配對過的if配對(

18、但復合語句可改變配對關系)。在中,else與第二個if配對;在中,else與第一個if配對(復合語句改變了配對關系)。實 驗 四實驗項目名稱:循環(huán)控制程序設計實驗時間:2011-09-29、2011-10-08實驗目的:1、 理解并掌握程序結構控制的循環(huán)結構;2、 理解while、do-while、for語句的語義和break、continue、goto語句的使用;3、 理解三種循環(huán)結構的異同,能實現(xiàn)三種結構間的轉換;4、 理解循環(huán)嵌套的執(zhí)行過程;5、 熟練應用循環(huán)語句進行程序設計。實驗原理:1. while循環(huán)的一般格式:while ()其語義是:當?shù)闹禐榉橇銜r,則執(zhí)行,然后再判斷的值,只要

19、它不為零,繼續(xù)執(zhí)行,如此重復,直到的值為零為止。2. do-while語句的一般格式是: do while ();其語義是:先執(zhí)行,再判別,若的值為非零,則重復執(zhí)行,直到的值為零為止。3. for循環(huán)的格式如下: for(;) for語句的執(zhí)行過程如下:首先計算。求的值,若其值為非零,執(zhí)行,然后轉執(zhí)行,若的值為零,則結束for語句。求解,轉執(zhí)行。實驗內容:1. 閱讀教材p98習題7的程序,判斷其輸出的結果,最后上機驗證你的判斷。2. 編程實現(xiàn)教材p99習題16。3. 編程實現(xiàn)教材p99習題18。4. 下列兩個程序實現(xiàn)的功能相同,說出它們實現(xiàn)什么功能?兩個程序比較,哪個更優(yōu)?main()int

20、i,j,n;long s,sum;scanf(%d,&n);for(i=1,sum=0;i=n;i+)for(j=1,s=0;j=i;j+)s+=j;sum+=s;printf(sum=%ldn,sum);main()int i,n;long s,sum;scanf(%d,&n);for(i=1,s=0,sum=0;i1e-6)temp/=n;e+=temp;n+;printf(e=%lfn,e);2) 下面程序是教材p98習題8的解答:計算數(shù)列n-n/2+n/3-n/4+-n/100。main()int i;float n,sum,temp;printf(input n:);scanf(%f

21、,&n);sum=0;for(i=1;i=100;i+)temp=n/i;sum+=temp;n=-n;printf(n-n/2+n/3-.-n/100=%fn,sum);實驗4參考答案:第1題:(課本練習題7) 輸出結果:8第2題:(課本練習題16)main()float n;double sum=0;doscanf(%f,&n);sum+=n;while(n);printf(sum=%lfn,sum);第3題:(課本練習題18)#include #include main()long n,a;randomize(); /*利用系統(tǒng)時間產生隨機函數(shù)的種子數(shù),這樣可使程序每次運行時產生的隨機數(shù)

22、都不一樣,使用此函數(shù)要包含time.h頭文件*/n=random(38765); /*產生038764間的一個隨機整數(shù),實參38765可任意設置,使用此函數(shù)要包含stdlib.h頭文件*/doprintf(please input a number:);scanf(%ld,&a);if (an)printf(%ld is too largen,a);else if (an)printf(%ld is too smalln,a);elseprintf(%ld is correctn,a);while (a!=n); /*這里用do-while循環(huán)比較方便*/getch();第4題:兩個程序的功能

23、均是實現(xiàn)計算:sum=1+(1+2)+(1+2+3)+.+(1+2+3+.+n)的值。兩個程序比較,程序2更優(yōu),顯然程序2的循環(huán)次數(shù)大大減少,它并沒有每次循環(huán)都從1開始累加到n,而是在前一次計算出1+2+(n-1)的基礎上計算1+2+(n-1)+n實 驗 五實驗項目名稱:函數(shù)實驗時間:2011-10-13、2011-10-20實驗目的:1. 掌握c語言中函數(shù)的定義和調用方法;理解實參和形參結合時的“單向值傳遞”方式。2. 理解函數(shù)的嵌套調用和遞歸調用。3. 掌握函數(shù)原型的概念和使用。4. 理解變量的作用域和生命期。5. 理解預處理命令。實驗原理:1. 函數(shù)定義的一般形式: ( ) 2. 函數(shù)調

24、用形式: ()c語言規(guī)定:實參對形參的數(shù)據(jù)傳遞為“單向值傳遞”,只能由實參傳遞值給形參,形參不能傳遞值給實參。3. 函數(shù)說明的一般形式(函數(shù)原型): ( );作用:在程序的編譯階段,利用它對調用函數(shù)的合法性進行全面檢查。4. 遞歸概念一個函數(shù)直接或間接地調用自己叫遞歸。采用遞歸方法求解問題需符合的條件:(1)可以把一個問題轉化為一個新的問題,而這個新問題的解決方法仍與原問題解法相同,只是新處理的對象有所不同。(2)必定要有一個明確的結束遞歸的條件,否則遞歸將無止境地進行下去。5. 從變量的作用域范圍的不同,變量可分為:局部變量和全局變量。局部變量:在一個函數(shù)內部定義的變量(又叫內部變量)。它可

25、分為:auto變量、static變量和register變量。全局變量:在函數(shù)之外定義的變量(又叫外部變量或全程變量)。它可分為:static外部變量和普通外部變量(帶extern說明的為引用性說明,不帶extern說明的為定義性說明)。6. c語言中預處理命令有三種:(1)宏定義、(2)文件包含、(3)條件編譯實驗內容:1. 編程實現(xiàn)教材p121習題4,其中fibnacci數(shù)列fib(n)的定義為:2. 完成教材p121習題6。3. 閱讀教材p122習題8,分析判斷其輸出結果并上機驗證,理解遞歸調用的執(zhí)行過程。4. 閱讀教材p123習題12,分析判斷其輸出結果并上機驗證,理解宏定義和宏展開的特

26、點。5. 閱讀理解下列程序,分析判斷其輸出結果,最后上機驗證,并理解引用性說明外部變量、定義性說明外部變量、自動變量、靜態(tài)局部變量和實參與形參結合時的單向值傳遞的工作方式。#include int x=1;f(int a,int b)static int x=3;int c=4,z;extern y;z=(+x)+(y+)+(a+)+b+(c+);return z;extern int y;main()int x=3,w;w=f(x,y);printf(%dn,w);w=f(x,y);printf(%dn,w);int y=2;實驗5參考答案:第1題:(課本練習題4) long fib(int

27、 n)int i;long f,f1=1,f2=1;if (n1)printf(data error!n);return -1;if (n=1|n=2) return 1;for (i=3;i=n;i+)f=f1+f2;f1=f2;f2=f;return f;main()int n;long f;printf(please input n for fibnacci(n):);scanf(%d,&n);f=fib(n);printf(fibnacci(%d)=%ldn,n,f);getch(); /*注:利用遞歸方法的程序請參看課本例題6.8 */第2題:(課本練習題6) 四條橫線依次是:lon

28、g p=1; p*=m; long sum=0; sum+=power(i,k);第3題:(課本練習題8) 輸出結果是:zyxwvu 即:程序功能是實現(xiàn)逆順序輸出第4題:(課本練習題12) 輸出結果是:7 5 第5題: 輸出結果是:15 18 注意各變量的存儲類別及參數(shù)的傳遞過程實 驗 六實驗項目名稱:數(shù)組實驗時間:2011-10-27、2011-11-03實驗目的:1. 理解數(shù)組的概念;2. 掌握一維數(shù)組和二維數(shù)組的定義和使用;3. 理解排序、查找等幾個經典算法;4. 掌握字符數(shù)組和字符串函數(shù)的使用。實驗原理:1. 同名帶下標的變量形成一個數(shù)組,帶下標的變量統(tǒng)稱為數(shù)組元素。數(shù)組的使用通過逐個

29、引用數(shù)組元素來實現(xiàn)。2. 具有一個下標的數(shù)組稱為一維數(shù)組;一維數(shù)組定義的一般形式為: 3. 具有多個下標的數(shù)組稱為多維數(shù)組,二維數(shù)組是具有兩個下標的數(shù)組。4. c語言沒有提供字符串數(shù)據(jù)類型,而是將字符串作為字符數(shù)組來處理。在字符數(shù)組末尾添加串結束符0,就成字符串,就可調用相應的字符串處理函數(shù)進行處理。實驗內容:1. 閱讀教材p154習題5、8,分析判斷其輸出結果并上機驗證。2. 編程實現(xiàn)教材p154習題6:找出1256中所有的回文數(shù)。3. 完成教材p154習題14并上機驗證。4. 下面的程序是實驗教程p47倒數(shù)第5行的程序,并作了適當修改,上機驗證其輸出結果,并說明為什么?(注:教程給出的結果

30、是錯誤的)#include main()char str130=studentn101;char str2=student0abcd;printf(length of str1:%s is %d,size of str1 is %dn,str1,strlen(str1),sizeof(str1);printf(length of str2:%s is %d,size of str2 is %dn,str2,strlen(str2),sizeof(str2);/* 注:strlen()函數(shù)是求實參字符串的長度,sizeof是一個單目運算符,功能是求一個變量或一種數(shù)據(jù)類型所占用的存儲空間的長度。*

31、/5. 閱讀實驗教程p49程序分析類實驗的第一個程序。(不用寫入實驗報告)6. 閱讀理解下面的程序。(不用寫入實驗報告)1) 下面程序是冒泡法排序算法的實現(xiàn)。#define n 10main()int i,j,t;int an+1;printf(input 10 numbers:);for (i=1;i=n;i+)scanf(%d,&ai);printf(n);for (i=1;i=n-1;i+) for (j=1;jaj+1) t=aj;aj=aj+1;aj+1=t;printf(the sorted numbers is:n);for (i=1;i=n;i+)printf(%6d,ai);

32、printf(n);2) 下面程序是教材p155習題17的解答:從鍵盤輸入一行字符串,統(tǒng)計英文字母、空格、數(shù)字字符和其它字符的個數(shù)。#include main()int i;int letters=0,space=0,numbers=0,other=0;char c80;gets(c);/*gets()函數(shù)的作用是從鍵盤讀入一行字符(以回車鍵為行標志),保存在實參字符數(shù)組中,一行字符中可包含空格。利用scanf(“%s”,c)讀入的字符串是不可能包含空格的。當然可以利用循環(huán)和scanf(“%c”,ci)讀入包含空格的一行字符。*/i=0;while(ci!=0)if(ci=a & ci=a &

33、 ci=0 & ci=9) numbers+;else other+;i+;printf(letters=%dnspace=%dnnumbers=%dnother=%dn,letters,space,numbers,other);實驗6參考答案:第1題:課本練習題5輸出結果:17 9 17 5 課本練習題8輸出結果:3 5 7第2題:(課本練習題6) :找出1256中所有的回文數(shù)。int huiwen1(long m) /*使用數(shù)組求解*/long x;int i,shma10,shmageshu=0;x=m*m;for (i=0;i+)shmai=x%10;shmageshu+;x=x/10

34、;if (x=0) break;for (i=0;ishmageshu/2;i+)if (shmai!=shmashmageshu-i-1) return 0;else continue;return 1;int huiwen2(long m) /*不使用數(shù)組求解*/long x1,x2=0,x3;x1=x3=m*m;while(1)x2=x2+x1%10;x1=x1/10;if(x1=0) break;x2*=10;if (x2!=x3) return 0;else return 1;main()long i;long ii;printf(huiwen shu(1-256):n);for (

35、i=1;i=256;i+)if (huiwen2(i) /*可分別調用huiwen1()和huiwen2()去測試*/ii=i*i;printf(%ld %ld*%ld=%ldn,i,i,i,ii);第3題:(課本練習題14) :#include #include main()char a20=cehjknptw;char s=fdla;int i,j,k;for(k=0;sk!=0;k+) /*按要插入的字符串中的每個字符順次循環(huán)*/j=0;while(sk=aj & aj!=0)j+;/*找到要插入的字符在a數(shù)組中的位置*/for (i=strlen(a);i=j;i-)ai+1=ai;

36、/*插入位置開始至字符串結束的每個字符順次后移*/aj=sk; /*插入位置空出來后,插入該字符*/printf(%sn,a);第4題:輸出結果:length of str1: studenta is 10,size of str1 is 30length of str2:student is 7,size of str2 is 13實 驗 七實驗項目名稱:指針實驗時間:2011-11-10、2011-11-17、2011-11-24實驗目的:1. 理解地址和指針的概念;掌握指針作為函數(shù)參數(shù)的應用。2. 理解指針與數(shù)組的關系;理解字符串指針。3. 掌握指針的運算。4. 理解指針數(shù)組和指向指針的

37、指針、指向函數(shù)的指針。實驗原理:1. 指針變量定義的一般形式: *2. 兩個有關的運算符: &:取地址運算符 *:指針運算符3. 指針變量作為函數(shù)實參時,通過改變指針變量(形參)所指向的存儲單元的值,可把改變的結果帶回主調函數(shù)。4. 指針和數(shù)組之間有兩個重要的恒等式: data+i=&datai datai=*(data+i)實驗內容:1. 下面的程序中,三個swapx()函數(shù)的功能均是實現(xiàn)形參的交換,哪個函數(shù)能實現(xiàn)交換實參?上機運行試試,為什么?swap1(int *p1,int *p2) int temp;temp=*p1;*p1=*p2;*p2=temp;swap2(int x,int

38、y)int temp;temp=x;x=y;y=temp;swap3(int *p1,int *p2)int *p;p=p1;p1=p2;p2=p;main()int a,b,*pointer_1,*pointer_2;scanf(%d,%d,&a,&b);if(ab) swap2(a,b);printf(%d,%dn,a,b);pointer_1=&a;pointer_2=&b;if(ab) swap3(pointer_1,pointer_2);printf(%d,%dn,*pointer_1,*pointer_2);if(ab) swap1(pointer_1,pointer_2);pri

39、ntf(%d,%dn,*pointer_1,*pointer_2);printf(%d,%dn,a,b);2. 閱讀教材p187習題3、4、9,分析判斷其輸出結果并上機驗證。3. 編程實現(xiàn)教材p188習題5:寫一通用函數(shù),實現(xiàn)從一個一維數(shù)組中尋找指定的一個數(shù),若找到返回該數(shù)所在的下標,否則返回-1。提示:函數(shù)原型可設計為:int search(int a,int n,int find),參數(shù)中,int a為已知數(shù)組,n是數(shù)組的長度,find為要查找的數(shù)。4. 編程實現(xiàn)教材p188習題7。(可閱讀參考實驗教程p54的程序)5. 完成實驗教程p60習題(3):將一個整數(shù)類型的字符串轉換為整數(shù);根據(jù)

40、程序原來的意圖,填寫空格使程序完整,并上機驗證。#include#includemain()char s10;int n;int chtonum(char *p);printf(please input a integer string:);scanf(%s,s); /*要求輸入的是純數(shù)字字符串或開始處帶一個負號的數(shù)字字符串*/if (*s=-)n=-chtonum(s+1); /*對負整數(shù)字符串的特殊處理*/elsen=chtonum(s);printf(string convert to number is: %dn,n);int chtonum(char *p) /*傳遞的是不帶負號的純數(shù)字整數(shù)字符串*/int n

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論