C語(yǔ)言中常見(jiàn)的功能函數(shù)_第1頁(yè)
C語(yǔ)言中常見(jiàn)的功能函數(shù)_第2頁(yè)
C語(yǔ)言中常見(jiàn)的功能函數(shù)_第3頁(yè)
C語(yǔ)言中常見(jiàn)的功能函數(shù)_第4頁(yè)
C語(yǔ)言中常見(jiàn)的功能函數(shù)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(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、C語(yǔ)言中常見(jiàn)的功能函數(shù)(應(yīng)掌握的編程)1、 兩個(gè)變量值的交換voidexchang(float*x,float*y)/*形參為兩個(gè)變量的地鐵(指針)*/floatz;z=*x;*x=*y;*y=z;voidmain()floata,b;scanf(“%f%f”,&a,&b);exchang(&a,&b);/*因?yàn)樾螀⑹侵羔?,所以?shí)參必須給變量的地址,不能給變量名*/printf(“a=%f,b=%f”,a,b);2、 判斷一個(gè)整數(shù)的奇偶intjou(intn)/*如果是奇數(shù)返回1,否則返回0*/if(n%2=0)return0;return1;3、 小寫(xiě)字符轉(zhuǎn)換

2、成大寫(xiě)字符根據(jù)實(shí)參傳給形參的字母,判斷是否是小寫(xiě)字母,如果是小寫(xiě)字母,則轉(zhuǎn)換成大寫(xiě)字母,否則不進(jìn)行轉(zhuǎn)換,函數(shù)返回轉(zhuǎn)換后或原來(lái)的字符。本函數(shù)仿照toupper()庫(kù)函數(shù)的功能編寫(xiě)(toupper(c)是將變量c字母轉(zhuǎn)換成大寫(xiě)字母,如果不是小寫(xiě)字母不轉(zhuǎn)換)。chartoupper1(charch)if(ch>=a&&ch<=z)ch-=32;/*小寫(xiě)字母比對(duì)應(yīng)的大寫(xiě)字母ASCII碼值大32*/returnch;4、判斷一個(gè)字符是否是字母(或數(shù)字)根據(jù)實(shí)參傳給形參的字符,判斷是否是字母(或數(shù)字)1,否則返回0。此函數(shù)是根據(jù)庫(kù)函數(shù)isalpha()(或isdigit()來(lái)編

3、寫(xiě)的。int isalpha1(char ch) /*判斷是否是字母*/if(ch>= A &&ch<=Z |ch>= a &&ch<= z ) return 1;else return 0;int isdigit1(char ch) /*判斷是否是數(shù)字字符*/if(ch>= 0 &&ch<=9 ) return 1;elsereturn0;5、根據(jù)學(xué)生成績(jī),返回其等級(jí)charfun(floatcj)charc;switch(int)cj/10)case10:case9:c=A;break;case8:c=B;

4、break;case7:c=C;break;case6:c=D;break;default:c=Ereturnc;6、求1+2+-.+n1)用循環(huán)intsum(intn)inti;for(i=1;i<=n;i+)s+=i;(2)使用遞歸longsum(intn)if(n=1)return1;elsereturnjiec(n-1)+n;根據(jù)本題擴(kuò)展:求s=1+(1+2)+(1+2+3)+.+(1+2+-+n)voidmain()longs=0,s1=0;inti,n;scanf(“%d”,&n);for(i=1;i<=n;i+)s1+=i;/*計(jì)算出每一項(xiàng)的值,通過(guò)累加得到*

5、/s+=s1;/*將每一項(xiàng)的值累加到結(jié)果中去*/printf(“s=%ld”,s);7、 求n!(1)用循環(huán)longjiec(intn)inti;longs=1;for(i=1;i<=n;i+)s*=i;returns;(2)使用遞歸longjiec(intn)if(n=1)return1;elsereturnjiec(n-1)*n;根據(jù)本題擴(kuò)展:求s=1!+2!+3!+.+n!n的值最好不要太大voidmain()longs=0,s1=1;inti,n;scanf(“%d”,&n);/*輸入n的值不要太大,否則結(jié)果long型存不下,輸出時(shí)會(huì)輸出一個(gè)負(fù)數(shù)*/for(i=1;i&l

6、t;=n;i+)s1*=i;/*計(jì)算出每一項(xiàng)的值,通過(guò)累乘得到*/s+=s1;/*將每一項(xiàng)的值累加到結(jié)果中去*/printf(“s=%ld”,s);8、 求某整數(shù)的因子之和intinz(intn)/*計(jì)算數(shù)n的因子之和(包括1和n本身),函數(shù)返回因子之和*/ints=0,i;for(i=1;i<=n;i+)/*通過(guò)本循環(huán),將1-n的數(shù)一個(gè)一個(gè)拿來(lái)看是否能被n整除,如果是真因子的話(huà),就不包括1和n本身*/if(n%i=0)s+=i;/*一個(gè)數(shù)的因子,就是能被其整除的數(shù)*/returns;9、 判斷一個(gè)整數(shù)是否是素?cái)?shù)intss(intn)/*如果是素?cái)?shù)返回1,否則返回0*/inti;for(

7、i=2;i<n/2;i+)if(n%i=0)return0;return1;10、 求一個(gè)整數(shù)的反序數(shù)longfxs(longn)/*函數(shù)返回反序數(shù),形參需要原來(lái)的數(shù)*/longfan=0;while(n!=0)fan=fan*10+n%10;n/=10;returnfan;11、 判斷一個(gè)數(shù)是否是回文數(shù)longhw(longn)/*如果是回文數(shù)函數(shù)返回1,否則返回0*/longfan=0,m=n;while(n!=0)fan=fan*10+n%10;n/=10;if(fan=m)return1;elsereturn0;int sxh(long n) /*判斷任意位數(shù)的整數(shù)是否是水仙花數(shù)

8、,是水仙花數(shù)返回1 ,不是返回0*/longg,i,s=0,m=n;while(n!=0)/*通過(guò)本循環(huán)語(yǔ)句,將數(shù)n從個(gè)位數(shù)字開(kāi)始一個(gè)個(gè)位數(shù)的數(shù)字的立方累加到變量s中*/g=n%10;s=g*g*g;n/=10;if(s=m)return1;elsereturn0;13、 計(jì)算x的y次方本函數(shù)用于計(jì)算x的y次方(x,y為整型,函數(shù)返回值為long型)。仿照庫(kù)函數(shù)pow()(pow(x,y)是用于計(jì)算x的y次方的庫(kù)函數(shù),不過(guò)該函數(shù)的形參x,y和返回值均為double類(lèi)型)編寫(xiě)。longpow1(intx,inty)longs=1;inti;for(i=1;i<=y;i+)/*將變量x的值累

9、乘y次*/s*=x;/*每次將上次累乘的結(jié)果再乘以x*/returns;14、 計(jì)算n個(gè)n(n為一位十進(jìn)制數(shù))本函數(shù)用于計(jì)算n個(gè)n的值,比如:333(3個(gè)3),4444(4個(gè)4)。longmm(intn)/*n為一個(gè)十進(jìn)制數(shù)字*/inti;longs=0;for(i=1;i<=n;i+)s=s*10+n;returns;本函數(shù)可以應(yīng)用于這樣的題目:求s=1-1/22+1/333-1/4444+1/55555-1/666666主函數(shù)可以寫(xiě)成:voidmain()doubles=0;inti,sign=1;/*sign用來(lái)處理每項(xiàng)的符號(hào)(正或負(fù))*/for(i=1;i<=6;i+)s+

10、=sign*mm(i);/*因?yàn)閙m()函數(shù)返回的值是長(zhǎng)整型,所以必須用,而不能用1,因?yàn)檎统哉?,結(jié)果是整型*/sign=-sign;/*每次變換一下sign的符號(hào)(正或負(fù))*/這樣的題目包括:求s=a+aa+aaa+aaaa+aa.aa(n個(gè)a),a和n都在1-9之間。longfun(inta,intn)longs=0,t=0;inti;for(i=1;i<=n;i+)t=t*10+a;s+=t;returns;/*或者return(s);*/15、 求兩個(gè)整數(shù)的最大公約數(shù)(1)輾轉(zhuǎn)相除法intfun(intm,intn)intt,r;if(m<n) t=m;m=n;n=t

11、; /*保證m>n如果m<n則交換兩個(gè)變量的值 */r=m%n;while(r!=0)m=n;n=r;r=m%n;returnn;/*n為最大公約數(shù)*/(2)窮舉法(按數(shù)學(xué)定義)intfun(intm,intn)/*此方法可以求多個(gè)數(shù)的最大公約數(shù)*/inti,min,gys;if(m<n)min=m;/*找出兩個(gè)數(shù)中的最小數(shù)*/elsemin=n;for(i=1;i<min;i+)if(m%i=0&&n%i=0)gys=i;returngys;16、 計(jì)算Fibonacci數(shù)列的第n項(xiàng)本函數(shù)完成的功能:計(jì)算出該數(shù)列的第n項(xiàng)的值,并返回。遞歸方法longf

12、bnc(longn)if(n=1|n=2)return1;elsereturnfbnc(n-1)+fbnc(n-2);/*從第三項(xiàng)開(kāi)始,后一項(xiàng)是前面兩項(xiàng)之和*/維數(shù)值型數(shù)組的輸入:voidintput1(floata,intn)/*n為數(shù)組a中元素的個(gè)數(shù),此函數(shù)以float型數(shù)組為例*/inti;for(i=0;i<n;i+)scanf(“%f”,&ai);二維數(shù)值型數(shù)組的輸入:voidintput2(floata3,intn)/*n為數(shù)組a中元素的行數(shù),此函數(shù)以float型數(shù)組為例,形參定義時(shí),如果是二維數(shù)組,則第二維(列)的數(shù)字不能少,比如本例中的3*/inti,j;for(

13、i=0;i<n;i+)/*表示行的外循環(huán)*/for(j=0;j<3;j+)/*表示列的內(nèi)循環(huán)*/scanf(“%f”,&aij);18、 數(shù)組的輸出一維數(shù)值型數(shù)組元素的輸出:voidoutput1(floata,intn)/*n為數(shù)組a中元素的個(gè)數(shù),此函數(shù)以float型數(shù)組為例*/inti;for(i=0;i<n;i+)printf(“%10.2f”,ai);二維數(shù)值型數(shù)組元素的輸出:voidoutput2(floata3,intn)/*n為數(shù)組a中元素的行數(shù),此函數(shù)以float型數(shù)組為例,形參定義時(shí),如果是二維數(shù)組,則第二維(列)的數(shù)字不能少,比如本例中的3*/in

14、ti,j;for(i=0;i<n;i+)/*表示行的外循環(huán)*/for(j=0;j<3;j+)printf(%11.2f ” ,aij);printf(“n”);/*按行輸出,所以每一行輸出后,輸出一個(gè)換行符*/19、 二分查找/*在有序數(shù)組a中查找值為x的,找到返回找到的數(shù)下標(biāo),沒(méi)找到返回-1*/intfind(floata,floatx,intn)/*有序數(shù)組a中的數(shù)是從小到大,n為數(shù)組中數(shù)的個(gè)數(shù)*/intleft,right,mid;right=0;left=n-1;while(left>right)mid=(left+right)/2;if(amid=x)returnm

15、id;elseif(amid>x)left=mid;elseright=mid;return-1;20、 冒泡排序/*對(duì)存放在數(shù)組a中的n個(gè)數(shù)進(jìn)行排序,(或者對(duì)從地址a開(kāi)始的n個(gè)數(shù)進(jìn)行排序),排序是從小到大)*/voidsort1(inta,intn)inti,j,t;for(i=0;i<n-1;i+)/*排序趟數(shù)*/for(j=0;j<n-1-i;j+)if(aj>aj+1)/*從小到大排序,如果是從大到小排序,則將大于號(hào)改成小于號(hào)*/t=aj;aj=aj+1;aj+1=t;/*不符合小到大的進(jìn)行交換*/21、直接選擇排序void sort1(int a,int n)

16、 /*對(duì)以地址(指針)a開(kāi)始的n個(gè)數(shù),按從小到大進(jìn)行排序*/inti,j,k,t;for(i=0;i<n-1;i+)/*排序趟數(shù)*/k=i;for(j=i+1;j<n-1-i;j+)if(aj<ak) k=j;/* 從小到大排序,如果是從大到小排序,則將大于號(hào)改成小于號(hào)*/if(k!=i)t=ai; ai=ak; ak=t; /*如果找的極值不在下標(biāo)為i ,則進(jìn)行交換 */22、求字符串長(zhǎng)度本函數(shù)是仿照庫(kù)函數(shù)strlen()的功能編寫(xiě)的。1)常歸方法intstrlen1(chars)/*字符串第一個(gè)0的下標(biāo)就是字符串的長(zhǎng)度*/inti;for(i=0;si!=0;i+)/*循

17、環(huán)體中只有一個(gè)空語(yǔ)句,即只有;,沒(méi)有表達(dá)式,本循環(huán)退出時(shí), si!= 0 ,si=0,則i就是字符0的下標(biāo)*/returni;intstrlen1(chars)char*p1,*p2;p1=s;for(p2=p1;*p2!=0;p2+);/*循環(huán)體中只有一個(gè)空語(yǔ)句,循環(huán)結(jié)束后,指針p2指向0這個(gè)字符*/returnp2-p1;/*兩個(gè)指針相減即為字符串長(zhǎng)度*/23、 字符串拷貝本函數(shù)是仿照庫(kù)函數(shù)strcpy()的功能編寫(xiě)的。voidstrcpy1(chats1,chars2)/*將字符串s2拷貝到字符串s1中*/inti;for(i=0;s2i!=0;i+)s1i=s2i;s1i=0;/*因上

18、述循環(huán)沒(méi)有將字符串結(jié)束標(biāo)志0拷貝到s1中,所以需要加一個(gè)字符串結(jié)束標(biāo)志0*/24、 字符串連接本函數(shù)是仿照庫(kù)函數(shù)strcat()的功能編寫(xiě)的。#include<>voidstrcat1(chars1,chars2)/*將字符串s2連接到字符串s1后面*/inti,len=strlen(s1);for(i=0;s2i!=0;i+)s1i+len=s2i;s1i+len=0;/*因上述循環(huán)沒(méi)有將字符串結(jié)束標(biāo)志0拷貝到s1中,所以需要加一個(gè)字符串結(jié)束標(biāo)志0*/否則返回 0。比較字符串s1與s2的大小,如果s1大于s2返回1,如果s1小于s2返回-1,intstrcmp1(chars1,chars2)inti;for(i=0;s1i!=0|&&s2i!=0;i+)/*如果有一個(gè)字符串先到0,則用0(ASCII碼為0的字符)與另一個(gè)字符串進(jìn)行比較,0肯定小于任何其他字符*/if(s1i>s2i)return1;elseif(s1i<s2i)return-1;if(s1i=0&&s2i=0)return0;/*說(shuō)明兩個(gè)字符串一樣長(zhǎng),并且前

溫馨提示

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