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

下載本文檔

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

文檔簡(jiǎn)介

1、本文檔如對(duì)你有幫助,請(qǐng)幫忙下載支持!學(xué)生實(shí)驗(yàn)報(bào)告冊(cè)(理工類(lèi))課程名稱(chēng):C語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)專(zhuān)業(yè)班級(jí):學(xué)生學(xué)號(hào):學(xué)生姓名:所屬院部:指導(dǎo)教師:2020學(xué)年第學(xué)期金陵科技學(xué)院教務(wù)處制實(shí)驗(yàn)報(bào)告書(shū)寫(xiě)要求實(shí)驗(yàn)報(bào)告上交電子稿,標(biāo)題采用四號(hào)黑體,正文采用小四號(hào)宋體,單倍行距。實(shí)驗(yàn)報(bào)告書(shū)寫(xiě)說(shuō)明實(shí)驗(yàn)報(bào)告中實(shí)驗(yàn)?zāi)康暮鸵?、?shí)驗(yàn)儀器和設(shè)備、實(shí)驗(yàn)內(nèi)容與過(guò)程、實(shí)驗(yàn)結(jié)果與分析這四項(xiàng)內(nèi)容為必需項(xiàng)。教師可根據(jù)學(xué)科特點(diǎn)和實(shí)驗(yàn)具體要求增加項(xiàng)目。填寫(xiě)注意事項(xiàng)(1)細(xì)致觀察,及時(shí)、準(zhǔn)確、如實(shí)記錄。(2)準(zhǔn)確說(shuō)明,層次清晰。(3)盡量采用專(zhuān)用術(shù)語(yǔ)來(lái)說(shuō)明事物。(4)外文、符號(hào)、公式要準(zhǔn)確,應(yīng)使用統(tǒng)一規(guī)定的名詞和符號(hào)。(5)應(yīng)獨(dú)立完成實(shí)驗(yàn)報(bào)

2、告的書(shū)寫(xiě),嚴(yán)禁抄襲、復(fù)印,一經(jīng)發(fā)現(xiàn),以零分論處。實(shí)驗(yàn)報(bào)告批改說(shuō)明實(shí)驗(yàn)報(bào)告的批改要及時(shí)、認(rèn)真、仔細(xì),一律用紅色筆批改。實(shí)驗(yàn)報(bào)告的批改成績(jī)采用五級(jí)記分制或百分制,按金陵科技學(xué)院課堂教學(xué)實(shí)施細(xì)則中作業(yè)批閱成績(jī)?cè)u(píng)定要求執(zhí)行。實(shí)驗(yàn)項(xiàng)目名稱(chēng):初級(jí)程序設(shè)計(jì)實(shí)驗(yàn)學(xué)時(shí):6同組學(xué)生姓名:實(shí)驗(yàn)地點(diǎn):實(shí)驗(yàn)日期:實(shí)驗(yàn)成績(jī):批改教師:批改時(shí)間:實(shí)驗(yàn)1初級(jí)程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康暮鸵?1)熟悉VisualC+集成環(huán)境,進(jìn)行編輯、保存、編譯、連接及運(yùn)行,并能進(jìn)行簡(jiǎn)單程序調(diào)試;(2)掌握C語(yǔ)言中各種運(yùn)算符的使用;(3)掌握C語(yǔ)言中各種數(shù)據(jù)類(lèi)型的區(qū)別與應(yīng)用;(4)熟練掌握C語(yǔ)言中變量的定義、賦值和使用,表達(dá)式語(yǔ)句、輸入/輸出語(yǔ)句的

3、使用;(5)掌握C語(yǔ)言中輸入/輸出函數(shù)的使用;(6)掌握C語(yǔ)言中控制語(yǔ)句的使用,含if-else、for、while、do-while語(yǔ)句的使用。二、實(shí)驗(yàn)儀器和設(shè)備奔騰以上計(jì)算機(jī),裝有windowsXP以上版本操作系統(tǒng)和VisualC+6.0軟件。三、實(shí)驗(yàn)內(nèi)容與過(guò)程1、程序調(diào)試(1) #include<stdio.h>main()ints,t,p,sum;scanf("%d%d%d,&s,&t,&p);sum=s+t+p;printf("sum=%dn',sum);(2) #include<stdio.h>main()

4、intk=3;if(k=3)printf("*”);elseprintf("#");(3) #include<stdio.h>main()intk=0;本文檔如對(duì)你有幫助,請(qǐng)幫忙下載支持!doprintf(“k=%dn”,k);while(k+>0);2、程序改錯(cuò)下面是判斷一個(gè)學(xué)生考試成績(jī)及格與否的程序(成績(jī)A,或B,或C者為及格;成績(jī)?yōu)镈者不及格),調(diào)試并改進(jìn)如下程序使其能滿(mǎn)足上述輸出的需要。include<stdio.h>main()charmark=“A”;switch(mark)case“A”:case“B”:case“C”:

5、printf(“>=60n”);case“D”:printf(“<60n”);default:printf(“En”);3、程序設(shè)計(jì)(1)功能:編程實(shí)現(xiàn)使實(shí)型正數(shù)保留2位小數(shù),并對(duì)第三位進(jìn)行四舍五入。例如:實(shí)型數(shù)為1234.567,則函數(shù)返回1234.570000;實(shí)型數(shù)為1234.564,則函數(shù)返回1234.560000。(2)功能:從鍵盤(pán)輸入一個(gè)大寫(xiě)字母,要求改用小寫(xiě)字母輸出。(3)功能:編寫(xiě)函數(shù)計(jì)算下列分段函數(shù)的值:(4)功能:判斷整數(shù)x是否是同構(gòu)數(shù)。若是同構(gòu)數(shù),函數(shù)返回1;否則返回0。x的值由主函數(shù)從鍵盤(pán)讀入,要求不大于100。說(shuō)明:所謂“同構(gòu)數(shù)”是指這樣的數(shù),這個(gè)數(shù)出現(xiàn)在

6、它的平方數(shù)的右邊。例如:輸入整數(shù)5,5的平方數(shù)是25,5是25中右側(cè)的數(shù),所以5是同構(gòu)數(shù)。(5)功能:功能:計(jì)算正整數(shù)n的所有因子(1和n除外)之和并車(chē)出。n的值由鍵盤(pán)輸入。例如:n=120時(shí),輸出239。(6)功能:計(jì)算并輸出下列多項(xiàng)式的值S=1+1/1!+1/2!+1/3!+.+1/n!例如:鍵盤(pán)給n輸入15,則輸出為:s=2.718282。注意:要求n的值大于1但不大于100。(7)功能:從低位開(kāi)始取出長(zhǎng)整型變量s奇數(shù)位上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在t中。例如:當(dāng)s中的數(shù)為:7654321時(shí),t中的數(shù)為:7531。4、思考題(1)功能:判斷一個(gè)三位數(shù)是否"水仙花數(shù)"。在

7、main函數(shù)中從鍵盤(pán)輸入一個(gè)三位數(shù),并輸出判斷結(jié)果。說(shuō)明:所謂"水仙花數(shù)"是指一3位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個(gè)水仙花數(shù),因?yàn)?53=1+125+27。(2)功能:計(jì)算并輸出3到n之間所有素?cái)?shù)的平方根之和。例如:鍵盤(pán)給n輸入100后,輸出為:sum=148.874270。(3)功能:輸出Fibonacci數(shù)列中大于s的最小的一個(gè)數(shù)。其中Fibonacci數(shù)列F(n)的定義為:F(0)=0,F(xiàn)(1)=1F(n)=F(n-1)+F(n-2)例如:鍵盤(pán)輸入s=1000時(shí),輸出1597。程序清單及流程圖:四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)程序調(diào)試1結(jié)

8、果如下程序調(diào)試2結(jié)果如下程序調(diào)試3結(jié)果如下程序改錯(cuò)題正確程序如下:#include<stdio.h>main()charmark='A'switch(mark)case'A':printf(">=60n");break;case'B':printf(">=60n");break;case'C':printf(">=60n");break;case'D':printf("<60n");break;def

9、ault:printf("Errorn");break;程序設(shè)計(jì)(1):#include<stdio.h>main()floatn;scanf("%f",&n);printf("%.2f0000n",n);( 2)#include<stdio.h>main()charn;printf("Inputan大寫(xiě)字母n");scanf("%c",&n);n=n+32;printf("%cn",n);( 3)#include<stdio.h

10、>main()intx,y;printf("PleseInputanXn");scanf("%d",&x);if(x<0&&x!=(-3)y=x*x+x+6;if(x>=0&&x<10&&x!=2&&x!=3)y=x*x-5*x+6;elsey=x*x-x+1;printf("%dn",y);( 4)#include<stdio.h>main()intx;printf("PleseInputanXn");sc

11、anf("%d",&x);if(x>100|x<=0)printf("Eorr");if(x=(x*x%10)|x=x*x%100)printf("1n");elseprintf("0n");( 5)#include<stdio.h>main()intx,i,s;s=0;printf("PleseInputanXn");scanf("%d",&x);for(i=2;i<x;i+)if(x%i=0)s=s+i;printf(&quo

12、t;%dn",s);( 6)#include<stdio.h>main()intx,i,j,k;floats;s=1.0;printf("PleseInputanXn");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<stdio.h>main()ints,t=0,

13、i=1,a=1;scanf("%d",&s);while(s!=0)a=s%10;s=s/100;a=a*i;i=i*10;t=t+a;printf("%dn",t);思考題(1)#include<stdio.h>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");elseprintf("n=NOn");思考題(2)

14、#include<stdio.h>#include<math.h>main()intn,i,j;floats=0.0;scanf("%d",&n);for(i=3;i<=n;i+)for(j=2;j<i;j+)if(i%j=0)break;if(j>=i-1)s=s+sqrt(i);printf("%fn",s);思考題(3)#include<stdio.h>main()inti,n,f0=0,f1=1,f2=1;scanf("%d",&n);for(i=1;i+)

15、f0=f1;f1=f2;f2=f0+f1;if(f2>=n)break;printf("%dn",f2);五、實(shí)驗(yàn)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))在這次實(shí)訓(xùn)中,我對(duì)C語(yǔ)言有了一個(gè)更深的認(rèn)識(shí)了解,也使之前學(xué)的知識(shí)得到鞏固,還嘗試了運(yùn)行編程,每次運(yùn)行程序成功,讓我對(duì)下面的項(xiàng)目充滿(mǎn)了信心通過(guò)自己的努力最終把最初的理論知識(shí)轉(zhuǎn)化成基本技能,這次的實(shí)訓(xùn),是我對(duì)C語(yǔ)言的學(xué)習(xí)產(chǎn)生了濃厚的興趣。本文檔如對(duì)你有幫助,請(qǐng)幫忙下載支持!實(shí)驗(yàn)項(xiàng)目名稱(chēng):中級(jí)程序設(shè)計(jì)實(shí)驗(yàn)學(xué)時(shí):8同組學(xué)生姓名:實(shí)驗(yàn)地點(diǎn):實(shí)驗(yàn)日期:實(shí)驗(yàn)成績(jī):批改教師:批改時(shí)間:本文檔如對(duì)你有幫助,請(qǐng)幫忙下載支持!實(shí)驗(yàn)2中

16、級(jí)程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康暮鸵?1)掌握函數(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ī),裝有windowsXP以上版本操作系統(tǒng)和VisualC+6.0三、實(shí)驗(yàn)內(nèi)容與過(guò)程1、程序調(diào)試#include<stdio.h>intfunc(inta,intb)return(a+b);main()intx=3,y=8,z=4,r;r=func(func(x,y),z);printf(“r=%dn”,

17、r);2、程序改錯(cuò)要求:1、改錯(cuò)時(shí),只允許修改現(xiàn)有語(yǔ)句中的一部分內(nèi)容,不允許添加和刪除語(yǔ)句。2、提示行下一行為錯(cuò)誤行。(1)功能:判斷m是否為素?cái)?shù),若是返回1,否則返回0。#include<stdio.h>/*FOUND*/voidfun(intn)inti,k=1;if(m<=1)k=0;/*FOUND*/for(i=1;i<m;i+)/*FOUND*/if(m%i=0)k=0;/*FOUND*/returnm;voidmain()intm,k=0;for(m=1;m<100;m+)if(fun(m)=1)printf("%4d",m);k+

18、;if(k%5=0)printf("n");(2)功能:在一個(gè)已按升序排列的數(shù)組中插入一個(gè)數(shù),插入后,數(shù)組元素仍按升序排列。#include<stdio.h>#defineN11main()inti,number,aN=1,2,4,6,8,9,12,15,149,156;printf("pleaseenteranintegertoinsertinthearray:n");/*FOUND*/scanf("%d",&number)printf("Theoriginalarray:n");for(i=

19、0;i<N-1;i+)printf("%5d",ai);printf("n");/*FOUND*/for(i=N-1;i>=0;i-)if(number<=ai)/*FOUND*/ai=ai-1;elseai+1=number;/*FOUND*/exit;if(number<a0)a0=number;printf("Theresultarray:n");for(i=0;i<N;i+)printf("%5d",ai);printf("n");(3)找出一個(gè)二行三列二維

20、數(shù)組中的最大值,輸出該最大值及其行列下標(biāo),建議二維數(shù)組值由初始化給出。#include"stdio.h#include"conio.hmain()inti,j,max,s,t;/*FOUND*/inta2=1,34,23,56,345,7;clrscr();/*FOUND*/max=0;s=t=0;for(i=0;i<2;i+)/*FOUND*/for(j=1;j<3;j+)if(aij>max)max=aij;s=i;t=j;/*FOUND*/printf("max=a%d%d=%dn",i,j,max);3、程序設(shè)計(jì)說(shuō)明,所有題目均

21、需添加main(),在main()中調(diào)用子函數(shù)并設(shè)計(jì)完整的輸入輸出才可調(diào)試通過(guò)。(1)功能:編寫(xiě)函數(shù)floatfun(intn),求一分?jǐn)?shù)序列2/1,3/2,5/3,8/5,13/8,21/13的前n項(xiàng)之和。說(shuō)明:每一分?jǐn)?shù)的分母是前兩項(xiàng)的分母之和,每一分?jǐn)?shù)的分子是前兩項(xiàng)的分子之和。例如:求前20項(xiàng)之和的值為32.660259。(2)完成子函數(shù)intfun(intn),找出一個(gè)大于給定整數(shù)且緊隨這個(gè)整數(shù)的素?cái)?shù),并作為函數(shù)值返回。4 位的正整數(shù)每一位上5678,則輸出結(jié)果為5 6 7 8 。將一個(gè)數(shù)組中的值按逆序存放,并在3)功能:編寫(xiě)函數(shù)voidfun(intn,inta)的數(shù)字存到一維數(shù)組,然

22、后在主函數(shù)輸出。例如輸入(4)功能:編寫(xiě)函數(shù)voidfun(intarr,intn)main()函數(shù)中輸出。例如:原來(lái)存順序?yàn)?,6,5,4,1。要求改為:1,4,5,6,8。(5)功能:程序定義了NX必二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請(qǐng)編寫(xiě)函數(shù)fun(intaN,intn),使數(shù)組a左下三角元素中的值乘以n。例如:若n的值為3,a數(shù)組中的值為|197|397|a=|238|則返回主程序后a數(shù)組中的值應(yīng)為|698|456|121518|(6) 功能:編寫(xiě)函數(shù)voidfun(intarray33),實(shí)現(xiàn)矩陣(3行3列)的轉(zhuǎn)置(即行列互換)。例如:輸入下面的矩陣:10020030040050060

23、0700800900程序輸出:100400700200500800本文檔如對(duì)你有幫助,請(qǐng)幫忙下載支持!3006009004、討論、思考題(1)功能:編寫(xiě)函數(shù)floatfun(),利用以簡(jiǎn)單迭代方法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的絕對(duì)值小于0.000001,執(zhí)行步驟(5),否則執(zhí)行步驟(2);5)所求x1就是方程cos(x)-x=0的一個(gè)實(shí)根,作為函數(shù)值返回。輸出:程序?qū)⑤敵鼋Y(jié)果Root=0.739085。(2)功能:編寫(xiě)fl

24、oatfun(floatarray口,intn),統(tǒng)計(jì)出若干個(gè)學(xué)生的平均成績(jī),最高分以及得最高分的人數(shù)。例如:輸入10名學(xué)生的成績(jī)分別為92,87,68,56,92,84,67,75,92,66,則輸出平均成績(jī)?yōu)?7.9,最高分為92,得最高分的人數(shù)為3人。(3)編寫(xiě)函數(shù)intfun(intlim,intaaMAX),該函數(shù)的功能是求出小于lim的所有素?cái)?shù)并放在aa數(shù)組中,該函數(shù)返回求出素?cái)?shù)的個(gè)數(shù)。(4)功能:編寫(xiě)函數(shù)intfun(intaMM),求5行5列矩陣的主、副對(duì)角線(xiàn)上元素之和。注意,兩條對(duì)角線(xiàn)相交的元素只加一次。pp所指一維數(shù)組中。二維數(shù)組中(5)功能:請(qǐng)編一個(gè)函數(shù)voidfun(i

25、ntttMN,intppN),tt指向一個(gè)M行N列的二維數(shù)組,求出二維數(shù)組每列中最小元素,并依次放入的數(shù)已在主函數(shù)中賦予。四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析)程序調(diào)試改錯(cuò)題(1)#include<stdio.h>/*FOUND*/intfun(intn)inti,k=1;if(n<=1)k=0;/*found*/for(i=2;i<n;i+)/*found*/if(n%i=0)k=0;/*found*/returnk;voidmain()intm,k=0;for(m=1;m<100;m+)if(fun(m)=1)printf("%4d",

26、m);k+;if(k%5=0)printf("n");程序改錯(cuò)(2)#include<stdio.h>#defineN11main()inti,number,aN=1,2,4,6,8,9,12,15,149,156;printf("pleaseenteranintegertoinsertinthearray:n");/*FOUND*/scanf("%d",&number);printf("Theoriginalarray:n");for(i=0;i<N-1;i+)printf("

27、%5d",ai);printf("n");/*FOUND*/for(i=N-2;i>=0;i-)if(number<=ai)/*FOUND*/ai+1=ai;elseai+1=number;/*FOUND*/break;if(number<a0)a0=number;printf("Theresultarray:n");for(i=0;i<N;i+)printf("%5d",ai);printf("n");改錯(cuò)(3)#include"stdio.h"#includ

28、e"conio.hmain()inti,j,max,s,t;/*FOUND*/inta3=1,34,23,56,345,7;system("cls");/*FOUND*/max=a00;s=t=0;for(i=0;i<2;i+)/*FOUND*/for(j=0;j<3;j+)if(aij>max)max=aij;s=i;t=j;/*FOUND*/printf("max=a%d%d=%dn",s,t,max);編程(1):#include"stdio.h"floatfun(intn)inti;floatsum

29、=2.0,f1=2.0,f2=1.0,f3;for(i=2;i<=n;i+)f3=f1+f2;f2=f1;f1=f3;sum+=f1/f2;returnsum;main()inta;printf("pressinputanN(N>1):");scanf("%d",&a);printf("sum=%fn",fun(a);編程(2):#include"stdio.h"floatfun(intn)inti,j;for(i=n+1;i+)for(j=2;j<i;j+)if(i%j=0)break;

30、if(j>=i)printf("%dn",i);break;main()inta;printf("pressinputanN:");scanf("%d",&a);fun(a);編程(3):#include"stdio.h"voidfun(intn,inta)inti,b4=0;for(i=0;i<n;i+)bi=ai;printf("a%d=%dn",i,bi);main()intn,a4=0,i;printf("pressinputanN:");scan

31、f("%d",&n);for(i=3;i>=0;i-)ai=n%10;n=n/10;fun(4,a);編程(4):#include"stdio.h"#defineN5voidfun(intarr,intn)inti,j;for(i=0;i<=N/2;i+)j=arri;arri=arrN-i-1;arrN-i-1=j;voidmain()inti,a=8,6,5,4,1;fun(a,N);for(i=0;i<N;i+)printf("%2d",ai);printf("n");編程(5):#

32、include"stdio.h"#defineN3voidfun(intaN,intn)inti,j;for(i=0;i<N;i+)for(j=0;j<N;j+)if(j=i|i-j=1|i-j=2)aij*=3;voidmain()inti,j,a3=1,9,7,2,3,8,4,5,6;fun(a,N);for(i=0;i<N;i+)for(j=0;j<N;j+)printf("%4d",aij);if(j=N-1)printf("n");編程(6):#include"stdio.h"#d

33、efineN3voidfun(intaN,intn)inti,j,k;for(i=0;i<N;i+)for(j=0;j<N/2;j+)k=aij;aij=aji;aji=k;if(i+j=N)k=aij;aij=aji;aji=k;voidmain()inti,j,a3=100,200,300,400,500,600,700,800,900;fun(a,N);for(i=0;i<N;i+)for(j=0;j<N;j+)printf("%6d",aij);if(j=N-1)printf("n");思考題1:#include<s

34、tdio.h>#include<math.h>floatfun()floatx1=0.0,x0;inti;for(i=0;i+)x0=x1;x1=cos(x0);if(fabs(x0-x1)<0.000001)break;returnx1;voidmain()printf("Root=%fn",fun();思考題2#include<stdio.h>#defineN10floatfun(floatarray,intn)floatavg,sum=0.0,k;inti,j=0,max=0;for(i=0;i<n;i+)sum+=array

35、i;if(arrayi>max)max=arrayi;for(i=0;i<n;i+)if(max=arrayi)j+;avg=sum/10.0;printf("平均成績(jī)=%.1fn最高分=%dn得最高分的人數(shù)=%dn",avg,max,j);voidmain()floataN=92,87,68,56,92,84,67,75,92,66;fun(a,10);思考題3:#include<stdio.h>本文檔如對(duì)你有幫助,請(qǐng)幫忙下載支持!#defineMAX1000intfun(intlim,intaaMAX)inti,j,m=1;for(i=3;i&l

36、t;lim;i+)for(j=2;j<i;j+)if(i%j=0)break;if(j>=i-1)m+;aam-1=i;returnm;voidmain()intn,aMAX=0;scanf("%d",&n);printf("%dn",fun(n,a);思考題4:#include<stdio.h>#defineM5intfun(intaM)inti,j,sum1=0,sum2=0;for(i=0;i<M;i+)for(j=0;j<M;j+)if(i=j)sum1+=aij;if(i+j=M-1)sum2+=ai

37、j;printf("主對(duì)角線(xiàn)=%dn副對(duì)角線(xiàn)=%dn",sum1,sum2-aM-3M-3);printf("主對(duì)角線(xiàn)+付對(duì)角線(xiàn)=%dn",sum1+sum2-aM-3M-3);voidmain()intaMM=1,2,3,4,1,6,1,8,1,1,2,3,1,5,6,7,1,9,1,2,1,4,5,6,1;fun(a);思考5:#include<stdio.h>#defineM4#defineN5intfun(intttMN,intppN)inti,j,min=0;for(i=0;i<N;i+)for(j=0;j<M;j+)m

38、in=tt0i;if(ttji<min)min=ttji;ppi=min;printf("pp%d=%dn",i,ppi);voidmain()intaMN=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)體會(huì)(遇到問(wèn)題及解決辦法,編程后的心得體會(huì))通過(guò)實(shí)訓(xùn)我們也發(fā)現(xiàn)了許多問(wèn)題,在試訓(xùn)中我認(rèn)識(shí)到自己還有很多知識(shí)沒(méi)學(xué)好,最基本的知識(shí)點(diǎn)沒(méi)有理清楚,而且許多東西要經(jīng)過(guò)翻書(shū),上網(wǎng)查閱,搜索,遇到一小點(diǎn)錯(cuò)誤運(yùn)行不出來(lái),就會(huì)煩躁不安,覺(jué)得有些自暴自棄或這抱怨題目有些變態(tài),以后要克服,盡量保持一顆良好的心態(tài),學(xué)好C

39、語(yǔ)言。本文檔如對(duì)你有幫助,請(qǐng)幫忙下載支持!實(shí)驗(yàn)項(xiàng)目名稱(chēng):高級(jí)程序設(shè)計(jì)實(shí)驗(yàn)學(xué)時(shí):6同組學(xué)生姓名:實(shí)驗(yàn)地點(diǎn):實(shí)驗(yàn)日期:實(shí)驗(yàn)成績(jī):批改教師:批改時(shí)間:本文檔如對(duì)你有幫助,請(qǐng)幫忙下載支持!實(shí)驗(yàn)3高級(jí)程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康暮鸵?1)理解C語(yǔ)言中指針的本質(zhì),區(qū)分指針與指針變量,掌握有關(guān)指針的應(yīng)用;(2)熟練掌握字符串常量和字符串的存儲(chǔ)及字符串處理函數(shù)的使用;(3)掌握字符指針的定義、使用等;(4)掌握向函數(shù)傳遞字符串的方法;二、實(shí)驗(yàn)儀器和設(shè)備奔騰以上計(jì)算機(jī),裝有windowsXP以上版本操作系統(tǒng)和VisualC+6.0軟件。三、實(shí)驗(yàn)內(nèi)容與過(guò)程1、程序調(diào)試(1) main()inta=10,b=20,x,*

40、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()inta=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,*pa,*pb);(3) int*swap(int*a,int*b)int*p;p=a;a=b;b=p;return(a);

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

42、t;pleaseenter10integers:n");for(i=0;i<n;i+)/*ERROR*/scanf("%d",p);voidmax_min(int*arr,intn)int*min,*max,*p,t;min=max=arr;for(p=arr+1;p<arr+n;p+)/*ERROR*/if(*p<*max)max=p;elseif(*p<*min)min=p;t=*arr;*arr=*min;*min=t;/*ERROR*/if(max=arr)max=min;t=*(arr+n-1);*(arr+n-1)=*max;*

43、max=t;voidoutput(int*arr,intn)int*p,i;p=arr;printf("Thechangedarrayis:n");/*ERROR*/while(i=0;i<n;i+)printf("%3d",*p+);printf("n");main()inta10;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)容為&qu

44、ot;DCBAABCD"#include<conio.h>#include<stdio.h>#include<string.h>/*FOUND*/voidfun(chars,chart)inti,d;/*FOUND*/d=len(s);/*FOUND*/for(i=1;i<d;i+)ti=sd-1-i;for(i=0;i<d;i+)td+i=si;/*FOUND*/t2*d='/0'main()chars100,t100;printf("nPleaseenterstringS:");scanf(&qu

45、ot;%s",s);fun(s,t);printf("nTheresultis:%sn",t);3、程序設(shè)計(jì)說(shuō)明,所有題目均需添加main(),在main()中調(diào)用子函數(shù)并設(shè)計(jì)完整的輸入輸出才可調(diào)試通過(guò)。(1) 功能:請(qǐng)編寫(xiě)一個(gè)函數(shù)intfun(int*s,intt,int*k),用來(lái)求出數(shù)組的最大元素在數(shù)組中的下標(biāo),用k返回。例如:輸入如下整數(shù):876675896101301401980431451777則輸出結(jié)果為:6,980(2) 功能:編寫(xiě)函數(shù)voidlen_cat(charc1,charc2)將第二個(gè)串連接到第一個(gè)串之后,不允許使用strcat函數(shù)(3)

46、 功能:編寫(xiě)函數(shù)longfun(char*p),將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)(不得調(diào)用C語(yǔ)言提供的將字符串車(chē)t換為整數(shù)的函數(shù))。例如:若輸入字符串"-1234",則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。(4) 功能:編寫(xiě)函數(shù)intfun(char*ptr)過(guò)濾串,即只保留串中的字母字符,并統(tǒng)計(jì)新生成串中包含的字母?jìng)€(gè)數(shù)作為函數(shù)的返回值。(5) 功能:編寫(xiě)函數(shù)voidfun(chars)將一個(gè)由四個(gè)數(shù)字組成的字符串轉(zhuǎn)換為每?jī)蓚€(gè)數(shù)字間有一個(gè)空格的形式輸出。例如:輸入4567”,應(yīng)輸出4'口5口6口7”(口表示空格)。(6) 功能:編寫(xiě)函數(shù)voidfun(chars,charc

47、)從字符串s中刪除指定的字符c。說(shuō)明:該字符可能多次和連續(xù)出現(xiàn),算法應(yīng)全面考慮。4、討論、思考題(1)功能:請(qǐng)編寫(xiě)函數(shù)voidfun(char(*s)N,char*b),將MfN列的二維數(shù)組中的字符數(shù)據(jù)按列的順序依次放到一個(gè)字符串中。例如:二維數(shù)組中的數(shù)據(jù)為:WWWWSSSSHHHH則字符串中的內(nèi)容應(yīng)是:WSHWSHWSHWSH(2)功能:編寫(xiě)函數(shù)voidfun(charstr,inti,intn),從字符串str中刪除第i個(gè)字符開(kāi)始的連續(xù)n個(gè)字符(注意:str0代表字符串的第一個(gè)字符)。(3)功能:編寫(xiě)函數(shù)voidfun(char*s,chart口),將s所指字符串中除了下標(biāo)為奇數(shù)、同時(shí)AS

48、CII值也為奇數(shù)的字符之外,其余的所有字符都刪除,串中剩余字符所形成的一個(gè)新串放在t所指的數(shù)組中。例如:若s所指字符串中的內(nèi)容為:"ABCDEFG12345;其中字符A的ASCII碼值雖為奇數(shù),但所在元素的下標(biāo)為偶數(shù),因此必需刪除;而字符1的ASCII碼值為奇數(shù),所在數(shù)組中的下標(biāo)也為奇數(shù),因此不應(yīng)當(dāng)刪除,其他依此類(lèi)推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是:"135"。(4)功能:請(qǐng)編寫(xiě)函數(shù)intfun(char*s),統(tǒng)計(jì)一行字符串中單詞的個(gè)數(shù)作為函數(shù)值返回。規(guī)定所有單詞由小寫(xiě)字母組成,單詞之間由若干個(gè)空格隔開(kāi),一行的開(kāi)始沒(méi)有空格。四、實(shí)驗(yàn)結(jié)果與分析(程序運(yùn)行結(jié)果及其分析

49、)程序調(diào)試1程序調(diào)試2程序調(diào)試3:, 但結(jié)果為什么沒(méi)有交換?思考:上面程序中函數(shù)swap()預(yù)將兩個(gè)數(shù)的值相互交換答:程序只是調(diào)換了指向?qū)?yīng)值的指針,并沒(méi)有對(duì)值進(jìn)行調(diào)換。改錯(cuò)1:#include<stdio.h>voidinput(int*arr,intn)int*p,i;p=arr;printf("pleaseenter10integers:n");for(i=0;i<n;i+)/*ERROR*/scanf("%d",p+);voidmax_min(int*arr,intn)int*min,*max,*p,t;min=max=arr;

50、for(p=arr+1;p<arr+n;p+)/*ERROR*/if(*p>*max)max=p;elseif(*p<*min)min=p;t=*arr;*arr=*min;*min=t;/*ERROR*/if(max=arr)max=min;t=*(arr+n-1);*(arr+n-1)=*max;*max=t;voidoutput(int*arr,intn)int*p,i;p=arr;printf("Thechangedarrayis:n");/*ERROR*/for(i=0;i<n;i+)printf("%3d",*p+);

51、printf("n");main()inta10;input(a,10);max_min(a,10);output(a,10);改錯(cuò)(2):#include<conio.h>#include<stdio.h>#include<string.h>/*FOUND*/voidfun(chars,chart)inti,d;/*FOUND*/d=strlen(s);/*FOUND*/for(i=0;i<d;i+)ti=sd-1-i;for(i=0;i<d;i+)td+i=si;/*FOUND*/t2*d='0'main(

52、)chars100,t100;printf("nPleaseenterstringS:");scanf("%s",s);fun(s,t);printf("nTheresultis:%sn",t);編程1:#include<stdio.h>intfun(int*s,intt,int*k)inti,m=0,max;k=s+1;max=*s;for(i=0;i<t-1;i+)if(*(k+i)>max)max=*(k+i);m=i+1;printf("nTmaxis:%d,%dn",m,max);

53、main()inti,s10=0,*p=0;printf("nPleaseenterstringS:n");for(i=0;i<10;i+)scanf("%d",&si);fun(s,10,p);編程2:#defineN100000#include<stdio.h>voidlen_cat(charc1,charc2)inti,j,k,max;chardN;for(i=0;c1i!='0'i+)di=c1i;for(j=0;c2j!='0'j+)di+j=c2j;di+j='0'pr

54、intf("%s",d);printf("n");main()inti;charsN,tN;printf("nPleaseenterstringS:");gets(s);printf("nPleaseenterstringT:");gets(t);len_cat(s,t);編程(3):#defineN100#include<stdio.h>longfun(char*p)inti,m=0;for(i=0;*(p+i)!='0'i+)if(*(p+i)='-')printf(

55、"%c",*(p+i);elsem=m*10+(*(p+i)-48);printf("%d",m);printf("n");main()charsN;printf("nPleaseenterstringS:");gets(s);fun(s);編程(4):#defineN100#include<stdio.h>intfun(char*ptr)inti,j,m=0,aN;for(i=0;*(ptr+i)!='0'i+)if(*(ptr+i)>='A'&&*(ptr+i)<='Z'|*(ptr+i)>='a'&&*(ptr+i)<='z')m+;am=*(pt

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論