版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
函數(shù)程序設(shè)計(jì)-C語言程序?qū)嶒?yàn)報(bào)告安徽工程大學(xué)高級語言程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告班級姓名同組者/成績?nèi)掌?019\11\21指導(dǎo)教師實(shí)驗(yàn)名稱函數(shù)程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?.掌握定義函數(shù)的方法。2.掌握函數(shù)實(shí)參與形參的對應(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!具體要求:輸入并完善源程序;對源程序進(jìn)行編譯、連接和運(yùn)行;寫出程序運(yùn)行結(jié)果。2.計(jì)算s=1的k次方+2的k次方+3的k次方+……+N的k次方。具體要求:輸入并完善源程序;對源程序進(jìn)行編譯、連接和運(yùn)行;寫出程序運(yùn)行結(jié)果。3.寫出下面3個(gè)程序的輸出結(jié)果,說明每個(gè)程序中的各個(gè)x有何不同。4.閱讀程序,理解程序的功能,寫出預(yù)期結(jié)果并上機(jī)驗(yàn)證。5.編程并上機(jī)調(diào)試運(yùn)行。(1)編寫一個(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)編寫一函數(shù),由實(shí)參傳遞一個(gè)字符串,統(tǒng)計(jì)此字符串中字母、數(shù)字、空格和其他字符的個(gè)數(shù),在主函數(shù)中輸入字符串并輸出上述結(jié)果。(5)帶參數(shù)的宏,使兩個(gè)參數(shù)的值互換,并寫出程序,輸入兩個(gè)數(shù)作為使用宏時(shí)的實(shí)參。輸出交換后的兩個(gè)值。(6)編寫函數(shù),實(shí)現(xiàn)兩個(gè)字符串的連接,在主函數(shù)中輸入兩個(gè)字符串并輸出連接后的結(jié)果(不要使用庫函數(shù)中的strcat函數(shù))。(7)請編寫函數(shù)fun,它的功能是:求出1~1000之內(nèi)能被7或11整除,但不能同時(shí)被7和11整除的所有整數(shù),并將它們放在a所指的數(shù)組中,通過n返回這些數(shù)的個(gè)數(shù),在主函數(shù)中輸出這些整數(shù),并給出統(tǒng)計(jì)的總數(shù)。(8)設(shè)有未完成的函數(shù):charGetChar(charc){chars[]="9038571426";……}字符串s中無序地存儲(chǔ)了10個(gè)數(shù)字字符,沒有重復(fù)。函數(shù)的功能是:如果字符c不是數(shù)字字符,函數(shù)原樣返回該字符;否則,在s中查找字符C,并返回其在s中的前一個(gè)字符。如果該字符位于s的最前面(字符'9'),則返回最后一個(gè)字符6'。如GetChar(4)得到字符'I',GetChar(T)得到字符T。請完成該函數(shù)并在主函數(shù)中調(diào)用。*思考題1.請分析不返回值的函數(shù)定義與有返回值的函數(shù)定義有什么不同,思考這兩類函數(shù)在實(shí)際編程中的作用。2.請觀察本次實(shí)驗(yàn)中使用的函數(shù)都有幾個(gè)返回值,當(dāng)個(gè)函數(shù)需要有多個(gè)返回值時(shí),應(yīng)該如何處理?3.數(shù)組作為函數(shù)參數(shù)有哪幾種方式?這些方式中有沒有能解決之前“函數(shù)多值返回問題”的方法?4.請分析下面程序的作用。/*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("請選擇輸入格式:1-整數(shù),2-實(shí)數(shù),3-字符串:");scanf("%d",&num);switch(num){case1:printf("請輸入一個(gè)整數(shù):");scanf("%d",&d);DIGIT(d);break;case2:printf("請輸入一個(gè)實(shí)數(shù):");scanf("%f",&f);FLOAT(f);break;case3:printf("請輸入一個(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("請選擇輸入格式:1-整數(shù),2-實(shí)數(shù),3-字符串:");scanf("%d",&num);switch(num){case1:printf("請輸入一個(gè)整數(shù):");scanf("%d",&d);DIGIT(d);break;case2:printf("請輸入一個(gè)實(shí)數(shù):");scanf("%f",&f);FLOAT(f);break;case3:printf("請輸入一個(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ù)。例如:傳給它一副圖片,它可以對圖片進(jìn)行處理,然后把處理后的圖片再傳回來。function[out1out2...]=myfunc(in1,in2,...)函數(shù)無返回參數(shù)而有輸入?yún)?shù),這樣只能給它傳入?yún)?shù),由它對數(shù)據(jù)進(jìn)行處理,然后作圖顯示
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025江蘇蘇州大學(xué)附屬兒童醫(yī)院博士專項(xiàng)招聘20人備考題庫附答案
- 2025年湖州長興縣中醫(yī)院健共體集團(tuán)招聘編外工作人員17人備考題庫附答案
- 2025年南昌市東湖區(qū)廉政教育中心公開選調(diào)工作人員5人備考題庫附答案
- 2025廣東肇慶四會(huì)市建筑安裝工程有限公司招聘工作人員考試參考題庫附答案
- 2026四川巴中市巴州區(qū)公益性崗位安置5人筆試模擬試題及答案解析
- 2026廣西南寧市西鄉(xiāng)塘區(qū)那龍衛(wèi)生院招聘編外工作人員2人筆試備考題庫及答案解析
- 2026浙江臺(tái)州浙江大學(xué)科技園發(fā)展有限公司招聘2人筆試模擬試題及答案解析
- 2026云南臨滄市滄源佤族自治縣婦幼保健院招聘編外合同制人員7人筆試參考題庫及答案解析
- 2026福建福州市馬尾海關(guān)單證資料管理崗位輔助人員招聘1人筆試參考題庫及答案解析
- 2026重慶市合川區(qū)人民醫(yī)院招聘8人筆試備考題庫及答案解析
- 人工智能在金融策略中的應(yīng)用
- JCT640-2010 頂進(jìn)施工法用鋼筋混凝土排水管
- 赤壁賦的議論文800字(實(shí)用8篇)
- 輸變電工程技術(shù)標(biāo)書【實(shí)用文檔】doc
- 南部山區(qū)仲宮街道鄉(xiāng)村建設(shè)規(guī)劃一張表
- 加工中心點(diǎn)檢表
- GB/T 2652-1989焊縫及熔敷金屬拉伸試驗(yàn)方法
- GB/T 25630-2010透平壓縮機(jī)性能試驗(yàn)規(guī)程
- GB/T 19668.1-2014信息技術(shù)服務(wù)監(jiān)理第1部分:總則
- 精排版《化工原理》講稿(全)
評論
0/150
提交評論