函數(shù)程序設(shè)計(jì)-C語(yǔ)言程序?qū)嶒?yàn)報(bào)告_第1頁(yè)
函數(shù)程序設(shè)計(jì)-C語(yǔ)言程序?qū)嶒?yàn)報(bào)告_第2頁(yè)
函數(shù)程序設(shè)計(jì)-C語(yǔ)言程序?qū)嶒?yàn)報(bào)告_第3頁(yè)
函數(shù)程序設(shè)計(jì)-C語(yǔ)言程序?qū)嶒?yàn)報(bào)告_第4頁(yè)
函數(shù)程序設(shè)計(jì)-C語(yǔ)言程序?qū)嶒?yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩10頁(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)介

函數(shù)程序設(shè)計(jì)-C語(yǔ)言程序?qū)嶒?yàn)報(bào)告安徽工程大學(xué)高級(jí)語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告班級(jí)姓名同組者/成績(jī)?nèi)掌?019\11\21指導(dǎo)教師實(shí)驗(yàn)名稱(chēng)函數(shù)程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?.掌握定義函數(shù)的方法。2.掌握函數(shù)實(shí)參與形參的對(duì)應(yīng)關(guān)系,體會(huì)“值傳遞”的方式。3.掌握函數(shù)的嵌套調(diào)用和遞歸調(diào)用的方法。4.掌握全局變量和局部變量、動(dòng)態(tài)變量和靜態(tài)變量的概念與使用方法。5.理解數(shù)組作為函數(shù)參數(shù)的傳遞方式。6.理解宏的概念,掌握宏的定義。7.了解文件包含的概念,掌握其用法。二、實(shí)驗(yàn)內(nèi)容1.完成程序,求解n!具體要求:輸入并完善源程序;對(duì)源程序進(jìn)行編譯、連接和運(yùn)行;寫(xiě)出程序運(yùn)行結(jié)果。2.計(jì)算s=1的k次方+2的k次方+3的k次方+……+N的k次方。具體要求:輸入并完善源程序;對(duì)源程序進(jìn)行編譯、連接和運(yùn)行;寫(xiě)出程序運(yùn)行結(jié)果。3.寫(xiě)出下面3個(gè)程序的輸出結(jié)果,說(shuō)明每個(gè)程序中的各個(gè)x有何不同。4.閱讀程序,理解程序的功能,寫(xiě)出預(yù)期結(jié)果并上機(jī)驗(yàn)證。5.編程并上機(jī)調(diào)試運(yùn)行。(1)編寫(xiě)一個(gè)判斷素?cái)?shù)的函數(shù),在主函數(shù)輸入一個(gè)整數(shù),輸出是否為素?cái)?shù)的信息。(2)輸入一個(gè)整數(shù),將它逆序輸出。要求定義并調(diào)用函數(shù)rverse(number),它的功能是返回number的逆序數(shù)。如reverse(12345)的返回值是54321。(3)用遞歸法求n階勒讓德多項(xiàng)式的值,遞歸公式為P(x)=1,n=0;P(x)=x,n=1;P(x)=[(2n-1)*x-Pn-1(x)-(n-1)Pn-2(x)]/n,n>1(4)編寫(xiě)一函數(shù),由實(shí)參傳遞一個(gè)字符串,統(tǒng)計(jì)此字符串中字母、數(shù)字、空格和其他字符的個(gè)數(shù),在主函數(shù)中輸入字符串并輸出上述結(jié)果。(5)帶參數(shù)的宏,使兩個(gè)參數(shù)的值互換,并寫(xiě)出程序,輸入兩個(gè)數(shù)作為使用宏時(shí)的實(shí)參。輸出交換后的兩個(gè)值。(6)編寫(xiě)函數(shù),實(shí)現(xiàn)兩個(gè)字符串的連接,在主函數(shù)中輸入兩個(gè)字符串并輸出連接后的結(jié)果(不要使用庫(kù)函數(shù)中的strcat函數(shù))。(7)請(qǐng)編寫(xiě)函數(shù)fun,它的功能是:求出1~1000之內(nèi)能被7或11整除,但不能同時(shí)被7和11整除的所有整數(shù),并將它們放在a所指的數(shù)組中,通過(guò)n返回這些數(shù)的個(gè)數(shù),在主函數(shù)中輸出這些整數(shù),并給出統(tǒng)計(jì)的總數(shù)。(8)設(shè)有未完成的函數(shù):charGetChar(charc){chars[]="9038571426";……}字符串s中無(wú)序地存儲(chǔ)了10個(gè)數(shù)字字符,沒(méi)有重復(fù)。函數(shù)的功能是:如果字符c不是數(shù)字字符,函數(shù)原樣返回該字符;否則,在s中查找字符C,并返回其在s中的前一個(gè)字符。如果該字符位于s的最前面(字符'9'),則返回最后一個(gè)字符6'。如GetChar(4)得到字符'I',GetChar(T)得到字符T。請(qǐng)完成該函數(shù)并在主函數(shù)中調(diào)用。*思考題1.請(qǐng)分析不返回值的函數(shù)定義與有返回值的函數(shù)定義有什么不同,思考這兩類(lèi)函數(shù)在實(shí)際編程中的作用。2.請(qǐng)觀察本次實(shí)驗(yàn)中使用的函數(shù)都有幾個(gè)返回值,當(dāng)個(gè)函數(shù)需要有多個(gè)返回值時(shí),應(yīng)該如何處理?3.數(shù)組作為函數(shù)參數(shù)有哪幾種方式?這些方式中有沒(méi)有能解決之前“函數(shù)多值返回問(wèn)題”的方法?4.請(qǐng)分析下面程序的作用。/*format.h*/#defineDIGIT(d)printf("整數(shù)輸出:%d\n",d)#defineFLOAT(f)printf("實(shí)數(shù)輸出:%10.2f\n",f)#defineSTRING(s)printf("字符串輸出:?號(hào)s\n",s)/*user'sprogram*/#include#includeintmain(){intd,num;floatf;chars[80];printf("請(qǐng)選擇輸入格式:1-整數(shù),2-實(shí)數(shù),3-字符串:");scanf("%d",&num);switch(num){case1:printf("請(qǐng)輸入一個(gè)整數(shù):");scanf("%d",&d);DIGIT(d);break;case2:printf("請(qǐng)輸入一個(gè)實(shí)數(shù):");scanf("%f",&f);FLOAT(f);break;case3:printf("請(qǐng)輸入一個(gè)字符串:");scanf("%s",s);STRING(s);break;default:printf("輸入有錯(cuò)誤!");}return0;}三、算法流程圖或?qū)嶒?yàn)步驟(可根據(jù)需要增刪、修改)1.#includef(intn){if(n==1)return(1);elsereturnn*f(n-1);}voidmain(){intx,i;scanf("%d",&i);x=f(i);printf("i!=%d\n",x);}2.#includelongf1(inti,intj){longpower=i;intm;for(m=1;m<j;m++)<p="">power*=i;returnpower;}voidmain(){intn,k,m;longsum=0;printf("pleaseinputN,k:\n");scanf("%d,%d",&n,&k);for(m=1;m<=n;m++)sum+=f1(m,k);printf("sumis%ld\n",sum);}3.(1)#includeintx=8;voidmain(){printf("\nx1=%d",x);{intx=5;printf("\nx2=%d",x);}}(2)#includeintx=8;voidmain(){printf("\nx1=%d",x);{intx=5;printf("\nx2=%d",x);}printf("\nx3=%d",x);}(3)#includevoidmain(){voidsub(void);inti;staticintx;inty;i=1;x=8;y=5;printf("i=%dx=%dy=%d\n",i,x,y);sub();printf("i=%dx=%dy=%d\n",i,x,y);}voidsub(void){inti;staticintx;i=18;x=20;printf("i=%dx=%d\n",i,x);}4.(1)#includevoidsort(inta[]){inti,j,t;for(i=0;i<4;i++)for(j=0;j<4-i;j++)if(a[j]<a[j+1])<p="">{t=a[j];a[j]=a[j+1];a[j+1]=t;}}voidmain(){inta[5]={5,10,-7,3,7},i;sort(a);for(i=0;i<=4;i++)printf("%4d",a[i]);}結(jié)果:10753-7(2)#include#defineSQR(X)X*Xvoidmain(){inta=15,k=1,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}結(jié)果:3(1)#includeintprime(intn){inti;for(i=2;i<n;i++)<p="">if(n%i==0)break;if(i>=n)return1;elsereturn0;}voidmain(){intn;printf(“Inputainteger:”);scanf(“%d”,&n);if(prime(n))printf(“%disaprime\n”,n);elseprintf(“%disnotaprime\n”,n);}(2)#includeintreverse_num(intn){intm=n%10;inti=n/10;while(i>0){inta=i%10;m*=10;m+=a;i/=10;}returnm;}intmain(){intn=0;intm=0;printf("pleaseinputanumber:\n");scanf("%d",&n);printf("thereversenumberis:%d\n",reverse_num(n));return0;}(3)#includedoublep(intn,doublex){if(n==0)return1;elseif(n==1)returnx;elsereturn((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/n;}voidmain(){intn;doublex;printf(“Inputnandx:\n”);scanf(“%d,%lf”,&n,&x);printf(“%f”,p(n,x));}(4)#include#includeintletter=0,digit=0,space=0,other=0;voidcount(chars[]){inti=0;while(s[i]!=‘\0’){if(s[i]>=‘A’&&s[i]<=‘Z’||s[i]>=‘a(chǎn)’&&s[i]<=‘z’)letter++;elseif(s[i]>=‘0’&&s[i]<=‘9’)digit++;elseif(s[i]==‘‘)space++;elseother++;i++;}}voidmain(){chars[20];printf(“Pleseinputastring:”);gets(s);count(s);printf(“l(fā)etter=%d,digit=%d,space=%d,other=%d\n”,letter,digit,space,other);}(5)#include#defineswap(a,b)t=a;a=b;b=t;voidmain(){inta,b,t;scanf(“%d%d”,&a,&b);swap(a,b);printf(“%d,%d”,a,b);}(6)#include#includevoidmain(){voidconnect(chars1[],chars2[]);chars1[20],s2[20];printf(“Pleaseinputstring1:”);gets(s1);printf(“Pleaseinputstring2:”);gets(s2);connect(s1,s2);printf(“Theconnectedstringis:”);puts(s1);}voidconnect(chars1[],chars2[]){intlength1,i,j;length1=strlen(s1);for(i=length1,j=0;s2[j]!=‘\0’;i++,j++)s1[i]=s2[j];s1[i]=‘\0’;}(7)#includeintf(inta[]){inti=0,n;for(n=1;n<=1000;n++){if(n%7==0||n%11==0)//能被7整除或被11整除if(n%77!=0)//不能的同時(shí)被7和11整除a[i++]=n;//符合要求的數(shù)賦值給數(shù)組}returni;}voidmain(){inta[300],length;length=f(a);for(inti=0;i<length;i++)<p="">{printf("%-4d",a[i]);if((i+1)%5==0)//使輸出時(shí)每行五個(gè)數(shù)printf("\n");}printf("\n%d\n",length);}*思考題/*format.h*/#defineDIGIT(d)printf("整數(shù)輸出:%d\n",d)#defineFLOAT(f)printf("實(shí)數(shù)輸出:%10.2f\n",f)#defineSTRING(s)printf("字符串輸出:?號(hào)s\n",s)/*user'sprogram*/#include#includeintmain(){intd,num;floatf;chars[80];printf("請(qǐng)選擇輸入格式:1-整數(shù),2-實(shí)數(shù),3-字符串:");scanf("%d",&num);switch(num){case1:printf("請(qǐng)輸入一個(gè)整數(shù):");scanf("%d",&d);DIGIT(d);break;case2:printf("請(qǐng)輸入一個(gè)實(shí)數(shù):");scanf("%f",&f);FLOAT(f);break;case3:printf("請(qǐng)輸入一個(gè)字符串:");scanf("%s",s);STRING(s);break;default:printf("輸入有錯(cuò)誤!");}return0;}四、實(shí)驗(yàn)結(jié)果及分析1.如第三項(xiàng)程序所示2.如第三項(xiàng)程序所示3.運(yùn)行結(jié)果:x1=5/*此處x為全局變量*/x2=3/*此處x為局部變量*/2)運(yùn)行結(jié)果:x1=5/*此處x為全局變量*/x2=3/*此處x為局部變量*/x3=5/*此處x為引用外部變量*/3)此程序中x為靜態(tài)變量,并且兩個(gè)變量x所處的域不同運(yùn)行結(jié)果:HELLOi=1x=10y=5CPROGRAM1=18x=20HELLO1=1x=10y=54.如第三項(xiàng)程序所示5.如第三項(xiàng)程序所示*思考題1.函數(shù)有返回參數(shù)和輸入?yún)?shù),是函數(shù)最完整的一種形式。在數(shù)據(jù)傳輸方面,一方面,它既可以接收調(diào)用時(shí)傳遞的參數(shù),也可以給調(diào)用的程序返回需要的數(shù)據(jù)。例如:傳給它一副圖片,它可以對(duì)圖片進(jìn)行處理,然后把處理后的圖片再傳回來(lái)。function[out1out2...]=myfunc(in1,in2,...)函數(shù)無(wú)返回參數(shù)而有輸入?yún)?shù),這樣只能給它傳入?yún)?shù),由它對(duì)數(shù)據(jù)進(jìn)行處理,然后作圖顯示

溫馨提示

  • 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)論