金陵科技學(xué)院CMM的C語言實(shí)驗(yàn)冊2014_第1頁
金陵科技學(xué)院CMM的C語言實(shí)驗(yàn)冊2014_第2頁
金陵科技學(xué)院CMM的C語言實(shí)驗(yàn)冊2014_第3頁
金陵科技學(xué)院CMM的C語言實(shí)驗(yàn)冊2014_第4頁
金陵科技學(xué)院CMM的C語言實(shí)驗(yàn)冊2014_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上學(xué) 生 實(shí) 驗(yàn) 報(bào) 告冊(理工類)課程名稱:C語言程序設(shè)計(jì)專業(yè)班級:14電子信息工程(專轉(zhuǎn)本) 學(xué)生學(xué)號:學(xué)生姓名: 常猛猛 所屬院部:電子信息學(xué)院指導(dǎo)教師: 丁宇辰 20142015學(xué)年 第一學(xué)期金陵科技學(xué)院教務(wù)處制實(shí)驗(yàn)報(bào)告書寫要求實(shí)驗(yàn)報(bào)告上交電子稿,標(biāo)題采用四號黑體,正文采用小四號宋體,單倍行距。實(shí)驗(yàn)報(bào)告書寫說明實(shí)驗(yàn)報(bào)告中實(shí)驗(yàn)?zāi)康暮鸵?、?shí)驗(yàn)儀器和設(shè)備、實(shí)驗(yàn)內(nèi)容與過程、實(shí)驗(yàn)結(jié)果與分析這四項(xiàng)內(nèi)容為必需項(xiàng)。教師可根據(jù)學(xué)科特點(diǎn)和實(shí)驗(yàn)具體要求增加項(xiàng)目。填寫注意事項(xiàng)(1)細(xì)致觀察,及時(shí)、準(zhǔn)確、如實(shí)記錄。(2)準(zhǔn)確說明,層次清晰。(3)盡量采用專用術(shù)語來說明事物。(4)外文、

2、符號、公式要準(zhǔn)確,應(yīng)使用統(tǒng)一規(guī)定的名詞和符號。(5)應(yīng)獨(dú)立完成實(shí)驗(yàn)報(bào)告的書寫,嚴(yán)禁抄襲、復(fù)印,一經(jīng)發(fā)現(xiàn),以零分論處。實(shí)驗(yàn)報(bào)告批改說明實(shí)驗(yàn)報(bào)告的批改要及時(shí)、認(rèn)真、仔細(xì),一律用紅色筆批改。實(shí)驗(yàn)報(bào)告的批改成績采用五級記分制或百分制,按金陵科技學(xué)院課堂教學(xué)實(shí)施細(xì)則中作業(yè)批閱成績評定要求執(zhí)行。專心-專注-專業(yè)實(shí)驗(yàn)項(xiàng)目名稱: 初級程序設(shè)計(jì) 實(shí)驗(yàn)學(xué)時(shí): 6 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): A107實(shí)驗(yàn)日期: 2014年9月16號 實(shí)驗(yàn)成績: 批改教師: 批改時(shí)間: 實(shí)驗(yàn)1 初級程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康暮鸵螅?)熟悉Visual C+集成環(huán)境,進(jìn)行編輯、保存、編譯、連接及運(yùn)行,并能進(jìn)行簡單程序調(diào)試;(2)掌握C語言

3、中各種運(yùn)算符的使用;(3)掌握C語言中各種數(shù)據(jù)類型的區(qū)別與應(yīng)用;(4)熟練掌握C語言中變量的定義、賦值和使用,表達(dá)式語句、輸入/輸出語句的使用;(5)掌握C語言中輸入/輸出函數(shù)的使用;(6)掌握C語言中控制語句的使用,含if-else、for、while、do-while語句的使用。二、實(shí)驗(yàn)儀器和設(shè)備奔騰以上計(jì)算機(jī),裝有windows XP以上版本操作系統(tǒng)和Visual C+ 6.0軟件。三、實(shí)驗(yàn)內(nèi)容與過程1、程序調(diào)試(1)#include main() ints,t,p,sum;scanf(“%d%d%d”,&s,&t,&p);sum=s+t+p;printf(“sum=%dn”,sum);

4、(2)#include main() int k=3;if(k=3) printf(“*”);elseprintf(“#”);(3)#include main()int k=0;do printf(“k=%dn”,k);while(k+0); 2、程序改錯(cuò)下面是判斷一個(gè)學(xué)生考試成績及格與否的程序(成績,或,或者為及格;成績?yōu)檎卟患案瘢?,調(diào)試并改進(jìn)如下程序使其能滿足上述輸出的需要。include main() char mark=“A”;switch(mark) case “A”:case “B”:case “C”: printf(“=60n”);case “D”: printf(“60n”);

5、 default: printf(“Errorn”); 3、程序設(shè)計(jì)(1)功能:編程實(shí)現(xiàn)使實(shí)型正數(shù)保留2位小數(shù),并對第三位進(jìn)行四舍五入。例如:實(shí)型數(shù)為 1234.567,則函數(shù)返回 1234.;實(shí)型數(shù)為 1234.564,則函數(shù)返回 1234.。(2)功能:從鍵盤輸入一個(gè)大寫字母,要求改用小寫字母輸出。(3)功能:編寫函數(shù)計(jì)算下列分段函數(shù)的值:(4)功能:判斷整數(shù)x是否是同構(gòu)數(shù)。若是同構(gòu)數(shù),函數(shù)返回1;否則返回0。x的值由主函數(shù)從鍵盤讀入,要求不大于100。說明:所謂“同構(gòu)數(shù)”是指這樣的數(shù),這個(gè)數(shù)出現(xiàn)在它的平方數(shù)的右邊。例如:輸入整數(shù)5,5的平方數(shù)是25,5是25中右側(cè)的數(shù),所以5是同構(gòu)數(shù)。(

6、5)功能:功能:計(jì)算正整數(shù)n的所有因子(1和n除外)之和并輸出。n的值由鍵盤輸入。例如:n=120時(shí),輸出239。(6)功能:計(jì)算并輸出下列多項(xiàng)式的值 S = 1 + 1/1! + 1/2! + 1/3! + . + 1/n!例如:鍵盤給n輸入15,則輸出為:s=2.。注意:要求n的值大于1但不大于100。(7)功能:從低位開始取出長整型變量s奇數(shù)位上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在t中。例如:當(dāng)s中的數(shù)為:時(shí),t中的數(shù)為:7531。4、思考題(1)功能:判斷一個(gè)三位數(shù)是否水仙花數(shù)。在main函數(shù)中從鍵盤輸入一個(gè)三位數(shù),并輸出判斷結(jié)果。說明:所謂水仙花數(shù)是指一3位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例

7、如:153是一個(gè)水仙花數(shù),因?yàn)?53=1+125+27。(2)功能:計(jì)算并輸出3到n之間所有素?cái)?shù)的平方根之和。例如:鍵盤給n輸入100后,輸出為:sum=148.。(3)功能:輸出Fibonacci數(shù)列中大于s的最小的一個(gè)數(shù)。其中Fibonacci數(shù)列F(n)的定義為: F(0)=0,F(xiàn)(1)=1 F(n)=F(n-1)+F(n-2)例如:鍵盤輸入s=1000時(shí),輸出1597。程序清單及流程圖:四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)程序調(diào)試1結(jié)果如下程序調(diào)試2結(jié)果如下程序調(diào)試3結(jié)果如下程序改錯(cuò)題正確程序如下:#include main() char mark=A; switch(mark)

8、 case A: printf(=60n); break; case B: printf(=60n); break; case C: printf(=60n); break; case D: printf(60n); break; default: printf(Errorn); break; 程序設(shè)計(jì)(1):#include main() float n;scanf(%f,&n);printf(%.2f0000n,n);(2)#include main() char n;printf(Input an 大寫字母n);scanf(%c,&n);n=n+32;printf(%cn,n);(3)#

9、include main() intx,y;printf(Plese Input an Xn);scanf(%d,&x);if(x=0&x10&x!=2&x!=3)y=x*x-5*x+6;else y=x*x-x+1;printf(%dn,y);(4)#include main() int x;printf(Plese Input an Xn);scanf(%d,&x);if(x100|x=0)printf(Eorr);if(x=(x*x%10)|x=x*x%100)printf(1n);elseprintf(0n);(5)#include main() intx,i,s;s=0;printf

10、(Plese Input an Xn);scanf(%d,&x);for(i=2;ix;i+)if(x%i=0)s=s+i;printf(%dn,s);(6)#include main() intx,i,j,k;float s;s=1.0;printf(Plese Input an Xn);scanf(%d,&x);if(x=0)printf(Eorrn);for(i=1;i=x;i+)k=1;for(j=1;j=i;j+)k*=j;s=s+1.0/k;printf(s=%fn,s);(7)#include main() ints,t=0,i=1,a=1;scanf(%d,&s);while(

11、s!=0)a=s%10;s=s/100;a=a*i;i=i*10;t=t+a;printf(%dn,t);思考題(1)#include main() ints,n,t=0,a=1;scanf(%d,&n);s=n;while(s!=0)a=s%10;s=s/10;a=a*a*a;t=t+a;if(n=t)printf(n=YESn);else printf(n=NOn);思考題(2)#include #include main() intn,i,j;float s=0.0;scanf(%d,&n);for(i=3;i=n;i+)for(j=2;j=i-1)s=s+sqrt(i);printf(

12、%fn,s);思考題(3)#include main() int i,n,f0=0,f1=1,f2=1;scanf(%d,&n);for(i=1;i+)f0=f1;f1=f2;f2=f0+f1;if(f2=n) break;printf(%dn,f2);五、實(shí)驗(yàn)體會(遇到問題及解決辦法,編程后的心得體會)C語言實(shí)訓(xùn)和平時(shí)上課所接觸的成有很多不同,所經(jīng)受的考驗(yàn)和克服的困難和平時(shí)的相差不大,遇到不會做的題同學(xué)互相討論,互相幫助,共同解決,攻克了C語言的復(fù)雜程序,我感觸良多。在這次實(shí)訓(xùn)中,我對C語言有了一個(gè)更深的認(rèn)識了解,也對這學(xué)期的知識得到鞏固,還嘗試了運(yùn)行編程,每次運(yùn)行程序成功,讓我對下面的項(xiàng)目

13、充滿了信心通過自己的努力最終把最初的理論知識轉(zhuǎn)化成基本技能,這次的實(shí)訓(xùn),是我對C語言的學(xué)習(xí)產(chǎn)生了農(nóng)活的興趣。實(shí)驗(yàn)項(xiàng)目名稱: 中級程序設(shè)計(jì) 實(shí)驗(yàn)學(xué)時(shí): 8 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): A107實(shí)驗(yàn)日期: 2014年10月14號 實(shí)驗(yàn)成績: 批改教師: 批改時(shí)間: 實(shí)驗(yàn)2中級程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康暮鸵螅?)掌握函數(shù)的定義、調(diào)用及返回、聲明的應(yīng)用;(2)熟練掌握一維數(shù)組的定義、初始化及使用;(3)掌握二維數(shù)組的定義、初始化及應(yīng)用;(4)熟練掌握向函數(shù)傳遞一維數(shù)組的方法和應(yīng)用;(5)掌握向函數(shù)傳遞一維數(shù)組的方法和應(yīng)用。二、實(shí)驗(yàn)儀器和設(shè)備奔騰以上計(jì)算機(jī),裝有windows XP以上版本操作系統(tǒng)和Visu

14、al C+ 6.0軟件。三、實(shí)驗(yàn)內(nèi)容與過程1、程序調(diào)試#include intfunc(inta,int b) return(a+b); main()int x=3,y=8,z=4,r;r=func(func(x,y),z); printf(“r=%dn”,r);2、程序改錯(cuò)要求:1、改錯(cuò)時(shí),只允許修改現(xiàn)有語句中的一部分內(nèi)容,不允許添加和刪除語句。2、提示行下一行為錯(cuò)誤行。(1) 功能:判斷m是否為素?cái)?shù),若是返回1,否則返回0。#include /*FOUND*/void fun( int n)inti,k=1; if(m=1) k=0;/*FOUND*/ for(i=1;im;i+)/*FO

15、UND*/ if(m%i=0) k=0;/*FOUND*/ return m;void main()intm,k=0; for(m=1;m100;m+) if(fun(m)=1) printf(%4d,m);k+; if(k%5=0) printf(n); (2)功能:在一個(gè)已按升序排列的數(shù)組中插入一個(gè)數(shù),插入后,數(shù)組元素仍按升序排列。#include #define N 11main() inti,number,aN=1,2,4,6,8,9,12,15,149,156;printf(please enter an integer to insert in the array:n); /*FO

16、UND*/scanf(%d,&number) printf(The original array:n);for(i=0;i=0;i-) if(number=ai) /*FOUND*/ ai=ai-1; else ai+1=number; /*FOUND*/ exit; if(numbera0) a0=number;printf(The result array:n); for(i=0;iN;i+)printf(%5d,ai);printf(n);(3)找出一個(gè)二行三列二維數(shù)組中的最大值,輸出該最大值及其行列下標(biāo),建議二維數(shù)組值由初始化給出。#include stdio.h#include co

17、nio.hmain()inti,j,max,s,t;/*FOUND*/int a2=1,34,23,56,345,7;clrscr();/*FOUND*/ max=0; s=t=0; for(i=0;i2;i+)/*FOUND*/ for(j=1;jmax) max=aij; s=i; t=j; /*FOUND*/printf(max=a%d%d=%dn,i,j,max);3、程序設(shè)計(jì)說明,所有題目均需添加main(),在main()中調(diào)用子函數(shù)并設(shè)計(jì)完整的輸入輸出才可調(diào)試通過。(1)功能:編寫函數(shù)float fun(int n),求一分?jǐn)?shù)序列2/1,3/2,5/3,8/5,13/8,21/1

18、3的前n項(xiàng)之和。說明:每一分?jǐn)?shù)的分母是前兩項(xiàng)的分母之和,每一分?jǐn)?shù)的分子是前兩項(xiàng)的分子之和。例如:求前20項(xiàng)之和的值為32.。(2)完成子函數(shù)int fun(int n),找出一個(gè)大于給定整數(shù)且緊隨這個(gè)整數(shù)的素?cái)?shù),并作為函數(shù)值返回。(3)功能:編寫函數(shù)void fun(intn,int a),按順序?qū)⒁粋€(gè)4位的正整數(shù)每一位上的數(shù)字存到一維數(shù)組,然后在主函數(shù)輸出。例如輸入5678,則輸出結(jié)果為 5 6 7 8。(4)功能:編寫函數(shù)void fun(intarr,int n)將一個(gè)數(shù)組中的值按逆序存放,并在main()函數(shù)中輸出。例如:原來存順序?yàn)?,6,5,4,1。要求改為:1,4,5,6,8。(

19、5)功能:程序定義了NN的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請編寫函數(shù)fun(int aN,int n),使數(shù)組a左下三角元素中的值乘以n。例如:若n的值為3,a數(shù)組中的值為 | 1 9 7 | | 3 9 7 | a = | 2 3 8 | 則返回主程序后a數(shù)組中的值應(yīng)為 | 6 9 8 | | 4 5 6 | | 12 15 18|(6)功能:編寫函數(shù)void fun(int array33),實(shí)現(xiàn)矩陣(3行3列)的轉(zhuǎn)置(即行列互換)。例如:輸入下面的矩陣: 100 200 300 400 500 600 700 800 900程序輸出: 100 400 700 200 500 800 30

20、0 600 9004、討論、思考題(1)功能:編寫函數(shù)float fun(),利用以簡單迭代方法Xn+1=cos(Xn)求方程:cos(x)-x=0的一個(gè)實(shí)根。迭代步驟如下:1)取x1初值為0.0;2)x0=x1,把x1的值賦給x0;3)x1=cos(x0),求出一個(gè)新的x1;4)若x0-x1的絕對值小于0.,執(zhí)行步驟(5),否則執(zhí)行步驟(2);5)所求x1就是方程cos(x)-x=0的一個(gè)實(shí)根,作為函數(shù)值返回。輸出:程序?qū)⑤敵鼋Y(jié)果Root=0.。(2)功能:編寫float fun(float array,int n),統(tǒng)計(jì)出若干個(gè)學(xué)生的平均成績,最高分以及得最高分的人數(shù)。例如:輸入10名學(xué)生

21、的成績分別為92,87,68,56,92,84,67,75,92,66,則輸出平均成績?yōu)?7.9,最高分為92,得最高分的人數(shù)為3人。(3)編寫函數(shù)int fun(intlim,intaaMAX),該函數(shù)的功能是求出小于lim的所有素?cái)?shù)并放在aa數(shù)組中,該函數(shù)返回求出素?cái)?shù)的個(gè)數(shù)。(4)功能:編寫函數(shù)int fun(int aMM),求5行5列矩陣的主、副對角線上元素之和。注意,兩條對角線相交的元素只加一次。(5)功能:請編一個(gè)函數(shù)void fun(intttMN,int ppN),tt指向一個(gè)M行N列的二維數(shù)組,求出二維數(shù)組每列中最小元素,并依次放入pp所指一維數(shù)組中。二維數(shù)組中的數(shù)已在主函數(shù)

22、中賦予。四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)程序調(diào)試改錯(cuò)題(1)#include /*FOUND*/int fun( int n)inti,k=1;if(n=1) k=0;/*FOUND*/for(i=2;in;i+)/*FOUND*/if(n%i=0) k=0;/*FOUND*/returnk;void main()intm,k=0;for(m=1;m100;m+)if(fun(m)=1) printf(%4d,m);k+;if(k%5=0) printf(n); 程序改錯(cuò)(2)#include #define N 11main() inti,number,aN=1,2,4,6,8,9

23、,12,15,149,156;printf(please enter an integer to insert in the array:n); /*FOUND*/scanf(%d,&number);printf(The original array:n);for(i=0;i=0;i-)if(number=ai) /*FOUND*/ ai+1=ai; else ai+1=number; /*FOUND*/break; if(numbera0) a0=number;printf(The result array:n);for(i=0;iN;i+)printf(%5d,ai);printf(n);

24、改錯(cuò)(3)#include stdio.h#include conio.hmain()inti,j,max,s,t;/*FOUND*/int a3=1,34,23,56,345,7;system(cls);/*FOUND*/max=a00; s=t=0;for(i=0;i2;i+)/*FOUND*/for(j=0;jmax) max=aij; s=i; t=j; /*FOUND*/printf(max=a%d%d=%dn,s,t,max);編程(1):#include stdio.hfloat fun(int n)inti;float sum=2.0,f1=2.0,f2=1.0,f3;for(

25、i=2;i1):);scanf(%d,&a);printf(sum=%fn,fun(a);編程(2):#include stdio.hfloat fun(int n)inti,j;for(i=n+1;i+)for(j=2;j=i)printf(%dn,i);break;main()int a;printf(press input an N:);scanf(%d,&a);fun(a);編程(3):#include stdio.hvoid fun(intn,int a)inti,b4=0;for(i=0;i=0;i-)ai=n%10;n=n/10;fun(4,a);編程(4):#include s

26、tdio.h#define N 5void fun(intarr,int n)inti,j;for(i=0;i=N/2;i+)j=arri;arri=arrN-i-1;arrN-i-1=j;void main()inti,a=8,6,5,4,1;fun(a,N);for(i=0;iN;i+)printf(%2d,ai);printf(n);編程(5):#include stdio.h#define N 3void fun(int aN,int n)inti,j;for(i=0;iN;i+)for(j=0;jN;j+)if(j=i|i-j=1|i-j=2)aij*=3;void main()in

27、ti,j,a3=1,9,7,2,3,8,4,5,6;fun(a,N);for(i=0;iN;i+)for(j=0;jN;j+)printf(%4d,aij);if(j=N-1)printf(n);編程(6):#include stdio.h#define N 3void fun(int aN,int n)inti,j,k;for(i=0;iN;i+)for(j=0;jN/2;j+)k=aij;aij=aji;aji=k;if(i+j=N)k=aij;aij=aji;aji=k;void main()inti,j,a3=100,200,300,400,500,600,700,800,900;fu

28、n(a,N);for(i=0;iN;i+)for(j=0;jN;j+)printf(%6d,aij);if(j=N-1)printf(n);思考題1:#include#includefloat fun ()float x1=0.0,x0;inti;for(i=0;i+)x0=x1;x1=cos(x0);if(fabs(x0-x1)0.)break;return x1; void main()printf(Root=%fn,fun();思考題2#include#define N 10float fun(float array,int n)floatavg,sum=0.0,k;inti,j=0,m

29、ax=0;for(i=0;imax)max=arrayi;for(i=0;in;i+)if(max=arrayi)j+;avg=sum/10.0;printf(平均成績=%.1fn最高分=%dn得最高分的人數(shù)=%dn,avg,max,j);void main() float aN=92,87,68,56,92,84,67,75,92,66;fun(a,10);思考題3:#include#define MAX 1000int fun(intlim,intaaMAX)inti,j,m=1;for(i=3;ilim;i+)for(j=2;j=i-1)m+;aam-1=i;return m;void

30、main()intn,aMAX=0;scanf(%d,&n);printf(%dn,fun(n,a);思考題4:#include#define M 5int fun(int aM)int i,j,sum1=0,sum2=0;for(i=0;iM;i+)for(j=0;jM;j+)if(i=j)sum1+=aij;if(i+j=M-1)sum2+=aij;printf(主對角線=%dn副對角線=%dn,sum1,sum2-aM-3M-3);printf(主對角線+付對角線=%dn,sum1+sum2-aM-3M-3);void main()int aMM=1,2,3,4,1, 6,1,8,1,1

31、, 2,3,1,5,6, 7,1,9,1,2, 1,4,5,6,1;fun(a);思考5:#include#define M 4#define N 5int fun(intttMN,int ppN)inti,j,min=0;for(i=0;iN;i+)for(j=0;jM;j+)min=tt0i;if(ttjimin)min=ttji;ppi=min;printf(pp%d=%dn,i,ppi);void main()int aMN=1,5,3,4,5, 6,7,8,9,1, 2,2,1,5,6, 7,2,9,5,2,bN=0;fun(a,b);五、實(shí)驗(yàn)體會(遇到問題及解決辦法,編程后的心得體

32、會)這次實(shí)訓(xùn),最令人激動(dòng)的就是同學(xué)遇到問題互相幫助雖然只是一個(gè)很小得實(shí)訓(xùn),但同學(xué)們的滿腔人情卻是值得驕傲的,我們在實(shí)訓(xùn)中取長補(bǔ)短在實(shí)訓(xùn)中長知識,提高了我們學(xué)習(xí),雖然對有些時(shí)候老師沒給我們指出解決問題的方法有一些小抱怨,但到了結(jié)束是才知道,這種教學(xué)讓我們自己學(xué)會了自學(xué),學(xué)會了去看懂別人的代碼。更多的是老師的感動(dòng),每天在我們來之前家到了機(jī)房,給我們我分享他學(xué)C語言的感受,還提醒我們注意在編程時(shí)與遇到的事項(xiàng),這些是我們平時(shí)上課無發(fā)了解到的知識是我們更深層次的極大收獲。 通過實(shí)訓(xùn)我們也發(fā)現(xiàn)了許多問題,在試訓(xùn)中我認(rèn)識到自己還有很多知識沒學(xué)好,最基本的知識點(diǎn)沒有理清楚,而且許多東西要經(jīng)過翻書,上網(wǎng)查閱,搜

33、索,遇到一小點(diǎn)錯(cuò)誤運(yùn)行不出來,就會煩躁不安,覺得有些自暴自棄或這抱怨題目有些變態(tài),以后要克服,盡量保持一顆良好的心態(tài),學(xué)好C語言,用C 語言來編寫一個(gè)按要求的系統(tǒng)。實(shí)驗(yàn)項(xiàng)目名稱: 高級程序設(shè)計(jì) 實(shí)驗(yàn)學(xué)時(shí): 6 同組學(xué)生姓名: 實(shí)驗(yàn)地點(diǎn): A107實(shí)驗(yàn)日期: 2014年11月11號 實(shí)驗(yàn)成績: 批改教師: 批改時(shí)間: 實(shí)驗(yàn)3 高級程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康暮鸵螅?)理解C語言中指針的本質(zhì),區(qū)分指針與指針變量,掌握有關(guān)指針的應(yīng)用;(2)熟練掌握字符串常量和字符串的存儲及字符串處理函數(shù)的使用;(3)掌握字符指針的定義、使用等;(4)掌握向函數(shù)傳遞字符串的方法;二、實(shí)驗(yàn)儀器和設(shè)備奔騰以上計(jì)算機(jī),裝有win

34、dows XP以上版本操作系統(tǒng)和Visual C+ 6.0軟件。三、實(shí)驗(yàn)內(nèi)容與過程1、程序調(diào)試(1) main() int a=10,b=20,x,*pa,*pb; pa=&a;pb=&b;printf(“%d,%d,%d,%d”,a,b,*pa,*pb);x=*pa;*pa=*pb;*pb=x; printf(“%d,%d,%d,%d”,a,b,*pa,*pb);(2) main() int a=10,b=20,*p,*pa=&a,*pb=&b;printf(“%d,%d,%d,%d”,a,b,*pa,*pb);p=pa;pa=pb;pb=p;printf(“%d,%d,%d,%d”,a,b

35、,*pa,*pb); (3) int *swap(int *a,int *b) int *p; p=a; a=b; b=p;return(a);main()int x=3,y=4,z=5;swap(swap(&x,&y),&z); printf(“%d,%d,%d”,x,y,z);思考:上面程序中函數(shù)swap()預(yù)將兩個(gè)數(shù)的值相互交換,但結(jié)果為什么沒有交換?2、程序改錯(cuò)要求:1、改錯(cuò)時(shí),只允許修改現(xiàn)有語句中的一部分內(nèi)容,不允許添加和刪除語句。2、提示行下一行為錯(cuò)誤行。(1)功能:為一維數(shù)組輸入10個(gè)整數(shù);將其中最小的數(shù)與第一個(gè)數(shù)對換,將最大的數(shù)與最后一個(gè)數(shù)對換,輸出數(shù)組元素。#include

36、void input(int *arr,int n) int *p,i; p=arr;printf(please enter 10 integers:n); for(i=0;in;i+) /*ERROR*/scanf(%d,p);void max_min(int *arr,int n) int *min,*max,*p,t;min=max=arr; for(p=arr+1;parr+n;p+) /*ERROR*/ if(*p*max) max=p; else if(*p*min) min=p;t=*arr;*arr=*min;*min=t;/*ERROR*/ if(max=arr) max=m

37、in;t=*(arr+n-1); *(arr+n-1)=*max; *max=t;void output(int *arr,int n) int *p,i; p=arr;printf(The changed array is:n); /*ERROR*/ while(i=0;in;i+)printf(%3d,*p+); printf(n);main()int a10; input(a,10);max_min(a,10); output(a,10);(2)功能:將s所指字符串的反序和正序進(jìn)行連接形成一個(gè)新串放在t所指的數(shù)組中。例如:當(dāng)s所指的字符串的內(nèi)容為ABCD時(shí),t所指數(shù)組中的內(nèi)容為DCBAA

38、BCD。#include #include #include /*FOUND*/void fun (char s, char t)inti, d; /*FOUND*/ d = len(s); /*FOUND*/ for (i = 1; id; i+) ti = sd - 1 - i ; for (i = 0; id; i+) t d + i = si;/*FOUND*/t2*d = /0;main() char s100, t100;printf(nPlease enter string S:); scanf(%s, s); fun(s, t);printf(nThe result is: %

39、sn, t);3、程序設(shè)計(jì)說明,所有題目均需添加main(),在main()中調(diào)用子函數(shù)并設(shè)計(jì)完整的輸入輸出才可調(diào)試通過。(1)功能:請編寫一個(gè)函數(shù)int fun(int *s, int t, int *k),用來求出數(shù)組的最大元素在數(shù)組中的下標(biāo),用k返回。例如:輸入如下整數(shù):876 675 896 101 301 401 980 431 451 777 則輸出結(jié)果為: 6, 980(2)功能:編寫函數(shù)voidlen_cat(char c1,char c2)將第二個(gè)串連接到第一個(gè)串之后,不允許使用strcat函數(shù)(3)功能:編寫函數(shù)long fun ( char *p),將一個(gè)數(shù)字字符串轉(zhuǎn)換為

40、一個(gè)整數(shù)(不得調(diào)用C語言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。例如:若輸入字符串-1234,則函數(shù)把它轉(zhuǎn)換為整數(shù)值 -1234。(4)功能:編寫函數(shù)intfun(char *ptr)過濾串,即只保留串中的字母字符,并統(tǒng)計(jì)新生成串中包含的字母個(gè)數(shù)作為函數(shù)的返回值。(5)功能:編寫函數(shù)void fun(char s)將一個(gè)由四個(gè)數(shù)字組成的字符串轉(zhuǎn)換為每兩個(gè)數(shù)字間有一個(gè)空格的形式輸出。例如:輸入“4567”,應(yīng)輸出“4567”(表示空格)。(6)功能:編寫函數(shù)void fun(char s,char c)從字符串s中刪除指定的字符c。說明:該字符可能多次和連續(xù)出現(xiàn),算法應(yīng)全面考慮。4、討論、思考題(1)

41、功能:請編寫函數(shù)void fun(char (*s)N, char *b),將M行N列的二維數(shù)組中的字符數(shù)據(jù)按列的順序依次放到一個(gè)字符串中。例如:二維數(shù)組中的數(shù)據(jù)為:W W W W S S S S H H H H則字符串中的內(nèi)容應(yīng)是:WSHWSHWSHWSH。(2)功能:編寫函數(shù)void fun(char str,int i,int n),從字符串str中刪除第i個(gè)字符開始的連續(xù)n個(gè)字符(注意:str0代表字符串的第一個(gè)字符)。(3)功能:編寫函數(shù)void fun(char *s,char t),將s所指字符串中除了下標(biāo)為奇數(shù)、同時(shí)ASCII值也為奇數(shù)的字符之外,其余的所有字符都刪除,串中剩余字符所形成的一個(gè)新串放在t所指的數(shù)組中。例如:若s所指字符串中的內(nèi)容為:ABCDEFG12345,其中字符A的ASCII碼值雖為奇

溫馨提示

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

最新文檔

評論

0/150

提交評論