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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

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

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

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

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

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

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

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

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

9、點;理解格式輸入輸出函數(shù)的格式及其控制功能。5. 驗證課本p27練習14,理解邏輯運算符“與”、“或”的短路運算特點。(選做題)6. 完成課本p28練習15。(選做題)7. 回答下列問題:a) 下列數(shù)學代數(shù)式子寫成c語言表達式應(yīng)如何書寫: (提示:開根號運算可使用系統(tǒng)函數(shù)sqrt()b) 數(shù)學上表示范圍的式子:0a100,寫成語言的邏輯表達式應(yīng)如何書寫?實驗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

10、c1='e',c2='f'printf("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'

11、 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;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實 驗 三實驗項目名稱:選擇

12、結(jié)構(gòu)程序設(shè)計實驗時間:2011-09-15、2011-09-22實驗目的:1、 理解c語言的語句、算法的概念、流程圖的表示。2、 掌握程序流程控制選擇(分支)結(jié)構(gòu)。3、 熟練掌握if語句和switch語句的使用。4、 理解if語句和switch語句的嵌套。實驗原理:1. if語句的一般形式:if (<表達式>) <語句1> else <語句2>2. 缺省else的條件語句形式: if (<表達式>) <語句1>3. if語句嵌套的一般形式:if( ) if( )語句1 else 語句2else if( )語句3 else 語句4 4.

13、 switch語句的一般形式是:switch (<表達式>)case <常量表達式1>:<語句序列1> case <常量表達式2>:<語句序列2> : : case <常量表達式n>:<語句序列n> default:<語句序列n+1>為了不再執(zhí)行本case后面的其它case和default語句,可用break語句中斷switch語句,使流程跳到switch語句后面。實驗內(nèi)容:1. 完成教材p71習題5,程序中要輸出max變量的值。2. 閱讀教材p71習題6的程序,判斷其輸出的結(jié)果,最后上機驗證你的判

14、斷。3. 完成教材p72習題9。4. 上機測試并回答下列問題:1) 下面程序的功能是什么?對復合語句t=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 (a>b)t=a;a=b;b=t;if (a>c)t=a;a=c;c=t;if (b>c)t=b;b=c;c=t;printf("%f,%f,%fn",a,

15、b,c);if (a>b) /*第一個if*/if (a>c) /*第二個if*/temp=a;else temp=b;2) 在嵌套的if語句中,else如何與if配對?對下面的兩個程序段,else與哪個if配對?if (a>b) /*第一個if*/if (a>c) /*第二個if*/temp=a;else temp=b;3) 閱讀理解下列求一元二次方程ax2+bx+c=0解的程序,該程序全面考慮了系數(shù)a,b,c的各種可能取值。(不用寫入實驗報告)#include <math.h>main()float a,b,c,d,x1,x2,p,q;printf(&q

16、uot;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) /*也可以直接寫成(c=0)*/printf("is trivial.n");elseprintf("is impossible.n");elseprintf("has only one root:%8.4fn&q

17、uot;,-c/b);elsed=b*b-4*a*c;if (fabs(d)<1e-6) /*也可以直接寫成(d=0)*/printf("has two equal real roots:%8.4fn",-b/(2*a);else if (d>1e-6) /*也可以直接寫成(d>0)*/ 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

18、(-d)/(2*a);printf("has two complex 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 (a>b)if(a>c) max=a;else max=c;els

19、eif (b>c) max=b;else max=c;printf("max(%d,%d,%d)=%dn",a,b,c,max);第2題:(課本練習題6)(1)輸出結(jié)果:0 (2)輸出結(jié)果:*#第3題:(課本練習題9)#include <stdio.h>main()char ch;printf("input a char:");ch=getchar();if (ch>='a' && ch<='z')printf("'%c' is a upper cha

20、rn",ch);else if (ch>='a' && ch<='z')printf("'%c' is a lower charn",ch);else if (ch>='0' && ch<='9')printf("'%c' is a numbern",ch);else printf("'%c' is a other charn",ch);第4題:1)程序的功能

21、是對鍵盤輸入的三個數(shù)按由小到大排序;對復合語句t=a;a=b;b=t;,若去掉“”和“”程序不會發(fā)生編譯上的錯誤,但不能實現(xiàn)程序原來的功能;在復合語句t=a;a=b;b=t;后面添加一個“;”號,對程序沒有影響。 2)在嵌套的if語句中,else總是與前面最近的未配對過的if配對(但復合語句可改變配對關(guān)系)。在中,else與第二個if配對;在中,else與第一個if配對(復合語句改變了配對關(guān)系)。實 驗 四實驗項目名稱:循環(huán)控制程序設(shè)計實驗時間:2011-09-29、2011-10-08實驗目的:1、 理解并掌握程序結(jié)構(gòu)控制的循環(huán)結(jié)構(gòu);2、 理解while、do-while、for語句的語義和

22、break、continue、goto語句的使用;3、 理解三種循環(huán)結(jié)構(gòu)的異同,能實現(xiàn)三種結(jié)構(gòu)間的轉(zhuǎn)換;4、 理解循環(huán)嵌套的執(zhí)行過程;5、 熟練應(yīng)用循環(huán)語句進行程序設(shè)計。實驗原理:1. while循環(huán)的一般格式:while (<表達式>)<語句>其語義是:當<表達式>的值為非零時,則執(zhí)行<語句>,然后再判斷<表達式>的值,只要它不為零,繼續(xù)執(zhí)行<語句>,如此重復,直到<表達式>的值為零為止。2. do-while語句的一般格式是: do <語句> while (<表達式>);其語義是:先

23、執(zhí)行<語句>,再判別<表達式>,若<表達式>的值為非零,則重復執(zhí)行<語句>,直到<表達式>的值為零為止。3. for循環(huán)的格式如下: for(<表達式1><表達式2><表達式3>) <語句>for語句的執(zhí)行過程如下:首先計算<表達式1>。求<表達式2>的值,若其值為非零,執(zhí)行<語句>,然后轉(zhuǎn)執(zhí)行,若<表達式2>的值為零,則結(jié)束for語句。求解<表達式3>,轉(zhuǎn)執(zhí)行。實驗內(nèi)容:1. 閱讀教材p98習題7的程序,判斷其輸出的結(jié)果,最后

24、上機驗證你的判斷。2. 編程實現(xiàn)教材p99習題16。3. 編程實現(xiàn)教材p99習題18。4. 下列兩個程序?qū)崿F(xiàn)的功能相同,說出它們實現(xiàn)什么功能?兩個程序比較,哪個更優(yōu)?main()int 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,su

25、m=0;i<=n;i+)s+=i;sum+=s;printf("sum=%ldn",sum);5. 閱讀下面的程序,理解程序設(shè)計的方法。(不用寫入實驗報告)1) 下面程序是教材p98習題6的解答:用泰勒級數(shù)求e的近似值,直到最后一項小于1e-6為止。main()int n;double e,temp;temp=1;e=1;n=1;while(temp>1e-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

26、 i;float n,sum,temp;printf("input n:");scanf("%f",&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) 輸出結(jié)果:8第2題:(課本練習題16)main()float n;double sum=0;doscanf("%f",&n);sum+=n;while(n);printf(&quo

27、t;sum=%lfn",sum);第3題:(課本練習題18)#include <stdlib.h>#include <time.h>main()long n,a;randomize(); /*利用系統(tǒng)時間產(chǎn)生隨機函數(shù)的種子數(shù),這樣可使程序每次運行時產(chǎn)生的隨機數(shù)都不一樣,使用此函數(shù)要包含time.h頭文件*/n=random(38765); /*產(chǎn)生038764間的一個隨機整數(shù),實參38765可任意設(shè)置,使用此函數(shù)要包含stdlib.h頭文件*/doprintf("please input a number:");scanf("%l

28、d",&a);if (a>n)printf("%ld is too largen",a);else if (a<n)printf("%ld is too smalln",a);elseprintf("%ld is correctn",a);while (a!=n); /*這里用do-while循環(huán)比較方便*/getch();第4題:兩個程序的功能均是實現(xiàn)計算:sum=1+(1+2)+(1+2+3)+.+(1+2+3+.+n)的值。兩個程序比較,程序2更優(yōu),顯然程序2的循環(huán)次數(shù)大大減少,它并沒有每次循環(huán)都從

29、1開始累加到n,而是在前一次計算出1+2+(n-1)的基礎(chǔ)上計算1+2+(n-1)+n實 驗 五實驗項目名稱:函數(shù)實驗時間:2011-10-13、2011-10-20實驗目的:1. 掌握c語言中函數(shù)的定義和調(diào)用方法;理解實參和形參結(jié)合時的“單向值傳遞”方式。2. 理解函數(shù)的嵌套調(diào)用和遞歸調(diào)用。3. 掌握函數(shù)原型的概念和使用。4. 理解變量的作用域和生命期。5. 理解預處理命令。實驗原理:1. 函數(shù)定義的一般形式:<類型標識符><函數(shù)名> ( <參數(shù)說明部分>) <說明部分> <語句部分> 2. 函數(shù)調(diào)用形式:<函數(shù)名> (

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

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

32、4. 閱讀教材p123習題12,分析判斷其輸出結(jié)果并上機驗證,理解宏定義和宏展開的特點。5. 閱讀理解下列程序,分析判斷其輸出結(jié)果,最后上機驗證,并理解引用性說明外部變量、定義性說明外部變量、自動變量、靜態(tài)局部變量和實參與形參結(jié)合時的單向值傳遞的工作方式。#include <stdio.h>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"

33、;,w);w=f(x,y);printf("%dn",w);int y=2;實驗5參考答案:第1題:(課本練習題4) long fib(int n)int i;long f,f1=1,f2=1;if (n<1)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):"

34、);scanf("%d",&n);f=fib(n);printf("fibnacci(%d)=%ldn",n,f);getch(); /*注:利用遞歸方法的程序請參看課本例題6.8 */第2題:(課本練習題6) 四條橫線依次是:long p=1; p*=m; long sum=0; sum+=power(i,k);第3題:(課本練習題8) 輸出結(jié)果是:zyxwvu 即:程序功能是實現(xiàn)逆順序輸出第4題:(課本練習題12) 輸出結(jié)果是:7 5 第5題: 輸出結(jié)果是:15 18 注意各變量的存儲類別及參數(shù)的傳遞過程實 驗 六實驗項目名稱:數(shù)組實驗時間:

35、2011-10-27、2011-11-03實驗目的:1. 理解數(shù)組的概念;2. 掌握一維數(shù)組和二維數(shù)組的定義和使用;3. 理解排序、查找等幾個經(jīng)典算法;4. 掌握字符數(shù)組和字符串函數(shù)的使用。實驗原理:1. 同名帶下標的變量形成一個數(shù)組,帶下標的變量統(tǒng)稱為數(shù)組元素。數(shù)組的使用通過逐個引用數(shù)組元素來實現(xiàn)。2. 具有一個下標的數(shù)組稱為一維數(shù)組;一維數(shù)組定義的一般形式為: <類型說明符> <數(shù)組名><常量表達式>3. 具有多個下標的數(shù)組稱為多維數(shù)組,二維數(shù)組是具有兩個下標的數(shù)組。4. c語言沒有提供字符串數(shù)據(jù)類型,而是將字符串作為字符數(shù)組來處理。在字符數(shù)組末尾添加串

36、結(jié)束符0,就成字符串,就可調(diào)用相應(yīng)的字符串處理函數(shù)進行處理。實驗內(nèi)容:1. 閱讀教材p154習題5、8,分析判斷其輸出結(jié)果并上機驗證。2. 編程實現(xiàn)教材p154習題6:找出1256中所有的回文數(shù)。3. 完成教材p154習題14并上機驗證。4. 下面的程序是實驗教程p47倒數(shù)第5行的程序,并作了適當修改,上機驗證其輸出結(jié)果,并說明為什么?(注:教程給出的結(jié)果是錯誤的)#include <string.h>main()char str130="student'n101"char str2="student0abcd"printf(&quo

37、t;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ù)類型所占用的存儲空間的長度。*/5. 閱讀實驗教程p49程序分析類實驗的第一個程序。(不用寫入實驗報告)6. 閱讀理解下面的程序。(不用寫

38、入實驗報告)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;j<=10-i;j+) if(aj>aj+1) t=aj;aj=aj+1;aj+1=t;printf("the sorted numbers is:n");fo

39、r (i=1;i<=n;i+)printf("%6d",ai);printf("n");2) 下面程序是教材p155習題17的解答:從鍵盤輸入一行字符串,統(tǒng)計英文字母、空格、數(shù)字字符和其它字符的個數(shù)。#include <stdio.h>main()int i;int letters=0,space=0,numbers=0,other=0;char c80;gets(c);/*gets()函數(shù)的作用是從鍵盤讀入一行字符(以回車鍵為行標志),保存在實參字符數(shù)組中,一行字符中可包含空格。利用scanf(“%s”,c)讀入的字符串是不可能包含空

40、格的。當然可以利用循環(huán)和scanf(“%c”,ci)讀入包含空格的一行字符。*/i=0;while(ci!='0')if(ci>='a' && ci<='z' | ci>='a' && ci<='z')letters+;else if (ci=' ') space+;else if (ci>='0' && ci<='9') numbers+;else other+;i+;printf(

41、"letters=%dnspace=%dnnumbers=%dnother=%dn",letters,space,numbers,other);實驗6參考答案:第1題:課本練習題5輸出結(jié)果:17 9 17 5 課本練習題8輸出結(jié)果: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;if (x=0) break;for (i=0;i<shm

42、ageshu/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 (i=1;i<=256;i+)

43、if (huiwen2(i) /*可分別調(diào)用huiwen1()和huiwen2()去測試*/ii=i*i;printf("%ld %ld*%ld=%ldn",i,i,i,ii);第3題:(課本練習題14) :#include <stdio.h>#include <string.h>main()char a20="cehjknptw"char s="fdla"int i,j,k;for(k=0;sk!='0'k+) /*按要插入的字符串中的每個字符順次循環(huán)*/j=0;while(sk>=aj

44、 && aj!='0')j+;/*找到要插入的字符在a數(shù)組中的位置*/for (i=strlen(a);i>=j;i-)ai+1=ai; /*插入位置開始至字符串結(jié)束的每個字符順次后移*/aj=sk; /*插入位置空出來后,插入該字符*/printf("%sn",a);第4題:輸出結(jié)果:length of str1: student'a is 10,size of str1 is 30length of str2:student is 7,size of str2 is 13實 驗 七實驗項目名稱:指針實驗時間:2011-11-

45、10、2011-11-17、2011-11-24實驗目的:1. 理解地址和指針的概念;掌握指針作為函數(shù)參數(shù)的應(yīng)用。2. 理解指針與數(shù)組的關(guān)系;理解字符串指針。3. 掌握指針的運算。4. 理解指針數(shù)組和指向指針的指針、指向函數(shù)的指針。實驗原理:1. 指針變量定義的一般形式: <類型標識符> *<標識符>2. 兩個有關(guān)的運算符: &:取地址運算符 *:指針運算符3. 指針變量作為函數(shù)實參時,通過改變指針變量(形參)所指向的存儲單元的值,可把改變的結(jié)果帶回主調(diào)函數(shù)。4. 指針和數(shù)組之間有兩個重要的恒等式: data+i=&datai datai=*(data+

46、i)實驗內(nè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 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(a<b) sw

47、ap2(a,b);printf("%d,%dn",a,b);pointer_1=&a;pointer_2=&b;if(a<b) swap3(pointer_1,pointer_2);printf("%d,%dn",*pointer_1,*pointer_2);if(a<b) swap1(pointer_1,pointer_2);printf("%d,%dn",*pointer_1,*pointer_2);printf("%d,%dn",a,b);2. 閱讀教材p187習題3、4、9,分析

48、判斷其輸出結(jié)果并上機驗證。3. 編程實現(xiàn)教材p188習題5:寫一通用函數(shù),實現(xiàn)從一個一維數(shù)組中尋找指定的一個數(shù),若找到返回該數(shù)所在的下標,否則返回-1。提示:函數(shù)原型可設(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ù)類型的字符串轉(zhuǎn)換為整數(shù);根據(jù)程序原來的意圖,填寫空格使程序完整,并上機驗證。#include<stdio.h>#include<string.h>main()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("stri

溫馨提示

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

最新文檔

評論

0/150

提交評論