第八章函數(shù)公開課一等獎優(yōu)質(zhì)課大賽微課獲獎?wù)n件_第1頁
第八章函數(shù)公開課一等獎優(yōu)質(zhì)課大賽微課獲獎?wù)n件_第2頁
第八章函數(shù)公開課一等獎優(yōu)質(zhì)課大賽微課獲獎?wù)n件_第3頁
第八章函數(shù)公開課一等獎優(yōu)質(zhì)課大賽微課獲獎?wù)n件_第4頁
第八章函數(shù)公開課一等獎優(yōu)質(zhì)課大賽微課獲獎?wù)n件_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

8.1

概述8.2函數(shù)定義普通形式8.3函數(shù)參數(shù)和函數(shù)值8.4

函數(shù)調(diào)用8.5數(shù)組作為函數(shù)參數(shù)8.6局部變量和全局變量8.7

變量存儲類別8.8內(nèi)部函數(shù)和外部函數(shù)8.9如何運營一個多文獻程序第八章函數(shù)第1頁第1頁8.1概述(1)一個源程序文獻是由一個或多個函數(shù)構(gòu)成。一個源程序文獻是一個編譯單位。(2)一個C程序文獻由一個或多個源程序文獻構(gòu)成。(3)C程序執(zhí)行從main函數(shù)開始,調(diào)用其它函數(shù)后回到main函數(shù),并在main函數(shù)中結(jié)束整個程序運營。(4)所有函數(shù)都是平行,在定義函數(shù)時是互相獨立,函數(shù)不能嵌套定義;函數(shù)間能夠互相調(diào)用,但不能調(diào)用main函數(shù)。(5)從用戶使用角度看,函數(shù)分為原則函數(shù)和用戶自定義函數(shù)兩種。(6)從函數(shù)形式看,函數(shù)分為無參函數(shù)和有參函數(shù)兩種。如:第2頁第2頁#include<stdio.h>printstar(){ printf("******************\n");}print_message(){ printf("Howdoyoudo!\n");}main(){ printstar(); print_message(); printstar();}第3頁第3頁8.2函數(shù)定義普通形式1.無參函數(shù)定義

類型標識符函數(shù)名(){申明部分語句}2.有參函數(shù)定義

類型標識符函數(shù)名(形式參數(shù)列表){申明部分語句}3.“空函數(shù)”定義

類型標識符函數(shù)名(){}注意:假如在定義函數(shù)時不指定函數(shù)參數(shù),系統(tǒng)會隱含指定函數(shù)類型為int型。第4頁第4頁#include<stdio.h>intmax(intx,inty)//或采用老式方式intmax(x,y){//intx,y; intz;//{intz;…. z=(x>y)?x:y; returnz;}main(){ intc,a,b; scanf("%d,%d",&a,&b); c=max(a,b); printf("%d",c); return1;}第5頁第5頁8.3函數(shù)參數(shù)和函數(shù)值1.形式參數(shù)和實際參數(shù)實際參數(shù):主調(diào)函數(shù)中提供數(shù)據(jù)。能夠是常量、變量、表示式等,是詳細數(shù)值。形式參數(shù):被調(diào)函數(shù)中用以接受主調(diào)函數(shù)數(shù)據(jù)變量。(1)在定義函數(shù)中指定形參,在未出現(xiàn)函數(shù)調(diào)用時,不占內(nèi)存中存放單元。在調(diào)用結(jié)束后,形參所占內(nèi)存單元也被釋放。(2)實參能夠是常數(shù)、變量或表示式,但要求有確定值。調(diào)用時將實參值賦給形參(形參是數(shù)組名除外)。(3)在被定義函數(shù)中,必須指定形參類型。(4)實參加形參類型應(yīng)相同或賦值兼容。若類型不同,則進行類型轉(zhuǎn)換,將實參類型轉(zhuǎn)換為形參類型。(5)實參變量對形參變量數(shù)據(jù)傳遞是單向值傳遞。2a2x3b3y2a10x3b15y第6頁第6頁2.函數(shù)返回值(1)函數(shù)返回值是通過函數(shù)中return語句取得。return(表示式);或return表示式;(2)函數(shù)值類型是在函數(shù)定義時指定。C語言要求,凡不加類型闡明函數(shù),一律按整型處理。(3)假如函數(shù)值類型與return語句中表示式值類型不一致,則以函數(shù)類型為準,并自動進行類型轉(zhuǎn)換。(如:見例子)(4)假如被調(diào)用函數(shù)中沒有return語句,函數(shù)帶回是一個不擬定值。(5)為了明確表示“不帶回值”,能夠用“void”定義“無類型。第7頁第7頁#include<stdio.h>intmax(floatx,floaty){ return((x>y)?x:y);}main(){ intc;floata,b; scanf("%f,%f",&a,&b); c=max(a,b); printf("%d",c); return1;}第8頁第8頁8.3函數(shù)調(diào)用主調(diào)函數(shù):主動去調(diào)用其它函數(shù)被調(diào)函數(shù):被其它函數(shù)所調(diào)用1.函數(shù)調(diào)用普通形式函數(shù)名(實參列表);含多個實參,則各參數(shù)用逗號分開,實參加形參個數(shù)應(yīng)相等(不等則犯錯),類型應(yīng)一致(不一致則轉(zhuǎn)換),實參求值次序是不確定,有從左至右,有從右至左(如TC,MSC)。按函數(shù)在程序中出現(xiàn)位置不同,函數(shù)調(diào)用可分為:函數(shù)語句:printstar();帶返回值函數(shù)語句:p=f(i,i++);//注意求解次序問題函數(shù)表示式:c=2*max(a,b);函數(shù)參數(shù):m=max(a,max(b,c));第9頁第9頁2.對被調(diào)函數(shù)申明和函數(shù)原型在一個函數(shù)中調(diào)用另一個函數(shù)需要具備:(1)被調(diào)函數(shù)必須是已經(jīng)存在函數(shù)(庫函數(shù)或自定義函數(shù))。(2)假如被調(diào)函數(shù)是庫函數(shù),普通應(yīng)當在文獻開頭用#include命令將相關(guān)頭文獻包括到本文獻中來(見附錄V)。如:#include<stdio.h>(3)假如被調(diào)函數(shù)是自定義函數(shù),且與主調(diào)函數(shù)在同一個文獻中,普通應(yīng)當在主調(diào)函數(shù)中在調(diào)用之前對被調(diào)函數(shù)作申明。格式:

函數(shù)類型函數(shù)名(參數(shù)類型1,參數(shù)類型2,····);函數(shù)類型函數(shù)名(參數(shù)類型1參數(shù)名1,參數(shù)類型2參數(shù)名2,····);(4)函數(shù)調(diào)用時函數(shù)名、實參個數(shù)應(yīng)與函數(shù)定義一致,實參類型必須與函數(shù)定義中形參類型賦值兼容。第10頁第10頁#include<stdio.h>main(){ floatadd(floatx,floaty);floata,b,c; scanf("%f,%f",&a,&b); c=add(a,b); printf("sumis%f",c); return1;}floatadd(floatx,floaty){ floatz; z=x+y; return(z);}第11頁第11頁函數(shù)申明語句中。(1)函數(shù)類型函數(shù)名(參數(shù)類型1,參數(shù)類型2,····)(2)函數(shù)類型函數(shù)名(參數(shù)類型1參數(shù)名1,參數(shù)類型2參數(shù)名2,····)稱為函數(shù)原型:編譯系統(tǒng)不檢查參數(shù)名,因此參數(shù)名是什么都無所謂。但應(yīng)確保函數(shù)原型與函數(shù)首部寫法一致,即函數(shù)類型、函數(shù)名、參數(shù)個數(shù)、參數(shù)類型和參多順序必須相同。闡明:

以前C版本只申明函數(shù)名和函數(shù)類型,不包括參數(shù)類型和參數(shù)個數(shù)。假如函數(shù)調(diào)用之前,沒有對函數(shù)作申明,則編譯系統(tǒng)會把第一次碰到該函數(shù)形式作為函數(shù)申明,并將函數(shù)類型默認為int型,即假如函數(shù)類型為整型或字符型,能夠在函數(shù)調(diào)用之前不必作函數(shù)申明(但不對參數(shù)類型和個數(shù)進行檢查)。假如函數(shù)定義在主調(diào)函數(shù)之前,則能夠不必申明。也能夠在所有函數(shù)之前,在函數(shù)外部進行函數(shù)申明。如:第12頁第12頁

charletter(char,char);floatf(float,float);intI(float,float);main(){······}charletter(charc1,charc2);{······}floatf(floatx,floaty);{······}intI(floatj,floatk);{······}第13頁第13頁8.4函數(shù)嵌套調(diào)用C語言不允許嵌套定義函數(shù),但能夠嵌套調(diào)用函數(shù),即,在調(diào)用一個函數(shù)過程中,又調(diào)用另一個函數(shù)。函數(shù)嵌套調(diào)用圖示maina函數(shù)b函數(shù)調(diào)用a函數(shù)調(diào)用b函數(shù)123456789結(jié)束第14頁第14頁8.5函數(shù)遞歸調(diào)用遞歸:在函數(shù)調(diào)用過程中,直接或間接調(diào)用本身。

1.直接遞歸:在函數(shù)體內(nèi)又調(diào)用本身如:intf(intx){inty,z;z=f(y);return(2*z);}2.間接遞歸:當函數(shù)去調(diào)用另一函數(shù)時,而另一函數(shù)反過來又調(diào)用本身。f1()┇調(diào)用f1()┇f1()函數(shù)f2()函數(shù)

調(diào)用f2()函數(shù)調(diào)用f1()函數(shù)第15頁第15頁能夠看到,這兩種遞歸調(diào)用都是無終止本身調(diào)用,處理無終止遞歸調(diào)用辦法是:擬定好結(jié)束遞歸條件。條件成立,進行遞歸用if語句控制條件不成立:結(jié)束遞歸第16頁第16頁例有5個人在一起問年齡,第5個人比第4個人大2歲,第4個人比第3個人大2歲...第2個人比第1個人大2歲,第1個人為10歲。age(5)age(4)age(3)age(2)age(1)=2+age(4)=2+age(3)=2+age(2)=2+age(1)=10=18=16=14=1210n=1用式子表示:age(n)=age(n-1)+2n>1第17頁第17頁

問年齡遞歸程序下列:age(intn){intc;if(n==1)c=10;elsec=2+age(n-1);return(c);}main(){printf(“%d\n”,age(5));}第18頁第18頁用遞歸法求n!floatfac(intn){floatf;if(n<0)printf(“n<0dataerror!\n”);elseif(n==0||n==1)f=1;elsef=n*fac(n-1);return(f);}main(){intn;floaty;printf(“inputaintegernumber:”);scanf(“%d”,&n);y=fac(n);printf(“%d!=%15.0f\n”,n,y);}1(n=0,1)用式子表示:n!=n.(n-1)!(n>1)第19頁第19頁

8.6數(shù)組作為函數(shù)參數(shù)1、數(shù)組元素做函數(shù)參數(shù)數(shù)組元素作實參時,與變量作實參同樣,也是單向傳送。2、數(shù)組作為函數(shù)參數(shù)數(shù)組名作實參時,實參和形參都用數(shù)組名,傳送是數(shù)組地址(地址常量)。調(diào)用函數(shù)時,對形參數(shù)組元素操作,事實上也是對實參數(shù)組元素操作。

幾點闡明:①數(shù)組名作形、實參數(shù)時,應(yīng)分別在主、被調(diào)函數(shù)中對其申明為數(shù)組;②形、實參數(shù)數(shù)組類型要完全一致(int,char也不能通用);③形參數(shù)組能夠不指定大小,需要時能夠用一實參將數(shù)組長度傳遞給形參;數(shù)組名作參數(shù)時,傳遞是地址值,對形參數(shù)組操作事實上也是對實參數(shù)組操作。

第20頁第20頁3、多維數(shù)組名作為函數(shù)參數(shù)多維數(shù)組名作實參和形參時,形參數(shù)組能夠指定每一維大小,也能夠省略第一維大小,二者等價。8.7局部變量和全局變量1、局部變量局部變量:作用域僅限在所定義函數(shù)或復合語句內(nèi)部。說明:(1)在不同函數(shù)(包含main函數(shù))中允許同名,它們占據(jù)不同內(nèi)存單元,相互之間互不影響。(2)形參屬局部變量,只能在其所在函數(shù)內(nèi)部使用。(3)能夠在復合語句中定義變量,這些變量只在本復合語句中有效且能夠與整個函數(shù)變量同名。第21頁第21頁

2、全局變量全局變量:在一個文獻所有函數(shù)以外定義變量稱為外部或全局變量。作用域:從定義變量位置開始到源程序結(jié)束。

闡明:①在源程序開始定義全局變量,對源程序中所有函數(shù)有效②在源程序中間定義全局變量,僅對其后面所有函數(shù)有效③在函數(shù)或復合語句中定義局部變量假如與全局變量同名,則局部變量優(yōu)先,全局變量不起作用.④全局變量使用,增長了函數(shù)間數(shù)據(jù)聯(lián)系渠道,同一文獻中所有函數(shù)都能引用全局變量值,當某函數(shù)改變了全局變量值時,便會影響其它函數(shù)。第22頁第22頁#include<stdio.h>inta=3,b=5;/*全局變量作用域及其使用情況*/max(inta,intb){ intc; c=a>b?a:b; return(c);}voidmain(){ inta=8; printf("%d",max(a,b));}第23頁第23頁

8.8變量存儲類別1、動態(tài)存儲方式與靜態(tài)存儲方式在C中,每一個變量和函數(shù)有兩個屬性:數(shù)據(jù)類型和數(shù)據(jù)存儲類別。依據(jù)變量存儲類別,能夠知道變量作用域和生存期。從變量值作用域可分為全局變量和局部變量從變量值存在時間即生存期來看,又可分為:(1)靜態(tài)存儲方式:即程序運營期間為其分派存儲單元是固定。(2)動態(tài)存儲方式:程序運營期間依據(jù)需要為其動態(tài)分派存儲單元。

程序運營時,在內(nèi)存中存儲情況下列:

第24頁第24頁代碼段數(shù)據(jù)段程序區(qū)靜態(tài)存儲區(qū)動態(tài)存儲區(qū)編譯、連接后生成指令代碼。外部、局部靜態(tài)(static):程序運營開始到結(jié)束始終占用形參、自動變量、函數(shù)調(diào)用時現(xiàn)場保護和返回值等。函數(shù)調(diào)用時分派存儲單元,調(diào)用結(jié)束時釋放用戶區(qū)第25頁第25頁

2、auto變量函數(shù)內(nèi)部無static申明局部變量、函數(shù)中形參均為自動變量。當變量存儲類別為自動時,申明符auto可?。蛔詣幼兞勘环峙稍趧討B(tài)區(qū),未賦初值時,其值未定義,每次調(diào)用重新賦值。比如:intf(inta){autointb,c=3;···3、用static申明局部變量若希望函數(shù)調(diào)用結(jié)束后,其值不消失,下次調(diào)用函數(shù)時繼續(xù)使用,則用static對變量加以申明為“靜態(tài)局部變量”。如:第26頁第26頁例考察靜態(tài)局部變量值f(inta){auto[int]b=0;static[int]c=3;b=b+1;c=c+1;return(a+b+c);}main(){inta=2,i;for(i=0;i<3;i++)printf(“%d”,f(a));}main()iaf(a)02f(2)12f(2)22f(2)f(a)abcreturn(a+b+c)20314return(7)20415return(8)20516return(9)運營結(jié)果:789第27頁第27頁靜態(tài)局部變量闡明:(1)分派在靜態(tài)區(qū),程序運營結(jié)束釋放存儲單元。(2)僅開始時賦初值一次(未賦初值時為0),以后每次調(diào)用函數(shù)時,變量不再賦值,前次操作結(jié)果被保留。(3)局部動態(tài)變量若未賦初值,其值是不擬定,所分派存儲單元是不固定;而局部靜態(tài)變量未賦初值,其值為0(字符型變量值為‘\0’),所分派存儲單元是固定。(4)靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后雖存在,但其它函數(shù)不能引用它。第28頁第28頁使用局部靜態(tài)變量有下列幾種情況(1)需要保留上一次調(diào)用結(jié)束時值例打印1~5階乘值intfac(n)intn;{staticintf=1;f=f*n;return(f);}main(){inti;for(i=1;i<=5;i++)printf(“%d!=%d\n”,i,fac(i));}(2)初始化后變量只被引用而不改變其值,則用靜態(tài)局部變量較以便,缺點:從程序運營開始到結(jié)束始終占用內(nèi)存,這樣會浪費系統(tǒng)資源。第29頁第29頁

4、register變量CPU內(nèi)部有存儲器組可用來存儲數(shù)據(jù),若把數(shù)據(jù)申明為存儲器類型,則將該類型數(shù)據(jù)存儲在存儲器中,其長處在于:減少數(shù)據(jù)與內(nèi)存之間互換頻率,提升程序效率和速度。intfac(intn){registerinti,f=1;for(i=1;i<=n;i++)f=f*i;return(f);}main(){inti;for(i=1;i<=5;i++)printf(“%d!=%d\n”,i,fac(i));}第30頁第30頁存放器類型變量幾點說明:1.只有局部自動類型和形參可定義為存放器類型,其它(如全局變量、靜態(tài)變量)不行。2.使用存放器類別變量個數(shù)與系統(tǒng)相關(guān),Turboc中,register變量作auto變量處理。當今優(yōu)化編譯系統(tǒng)會自動將使用頻繁變量放在存放器中,不需要程序設(shè)計者指定。3.auto,static,register,全局變量分別屬于不同存放區(qū),因而不能重合使用。4.存放器類型變量不允許對其地址操作。第31頁第31頁

5、用extern申明外部變量外部變量也稱全局變量,在函數(shù)外部定義,其作用域是從變量定義處開始,到本程序文獻未尾。用extern對全局變量進行申明,能夠擴展全局變量作用域。全局變量分派在靜態(tài)存儲區(qū)。(1)在一個文獻內(nèi)部申明外部變量例—用extern申明外部變量,擴展程序文獻中作用域intmax(intx,inty){intz;z=x>y?x:y;return(z);}main(){externA,B;/*類型名可寫也可省略*/printf(“%d”,max(A,B));}intA=13,B=-8;第32頁第32頁

(2)在多文獻程序中申明外部變量當一個程序由多個文獻構(gòu)成時,要在一個文獻中引用另一文獻中定義外部變量時,此時要用extern加以申明;若在兩個文獻中都要使用同一個外部變量,若同時對同名外部變量申明,則系統(tǒng)將提醒“重定義類型錯”,處理辦法是:在任一文獻中定義外部變量,在另一文獻用extern對該變量作“外部變量申明”。比如,file1.c為:intAmain(){}文獻file2.c為:externA;power(intn);{}第33頁第33頁

6、用static申明外部變量

若使全局變量只限于定義它文獻中函數(shù)引用,而不讓其它文獻中函數(shù)引用,需要用static加以闡明,稱為靜態(tài)全局變量。(注意:此種說法只在工程辦法中有效,而在文獻包括中則不起作用)第34頁第34頁

7、關(guān)于變量申明和定義申明部分:對相關(guān)標識符(變量,函數(shù),結(jié)構(gòu)體)屬性進行闡明。對于函數(shù),申明和定義區(qū)別明顯,申明是函數(shù)原型,定義是函數(shù)本身,是一個獨立程序模塊;對于變量,有兩種情況:1.定義性申明:需建立存儲空間,如inta;也稱定義。2.引用性申明:不建立存儲空間,如externA廣義地講,申明包括定義,但并非所有申明都是定義;如:intA;既包括申明又包括定義;externA;只是申明,而無定義。商定:建立存儲空間申明稱定義;不建立存儲空間申明稱申明。auto,register,static申明變量時,是在定義變量基礎(chǔ)上加上這些關(guān)鍵字,不能單獨使用。第35頁第35頁8、存儲類別小結(jié)在C中,定義數(shù)據(jù)需指出數(shù)據(jù)類型和存儲類別。(1)作用域:變量在某個文獻或函數(shù)范圍內(nèi)是有效,則稱該文獻或函數(shù)是該變量作用域。

自動(動態(tài)局部)變量:離開函數(shù),值消失靜態(tài)局部變量:離開函數(shù),值仍保留存儲器變量:離開函數(shù),值消失形式參數(shù):可定義為自動或存儲器變量局部變量靜態(tài)外部變量:只限本文獻引用外部(非靜態(tài))變量:允許其它文獻引用全局變量第36頁第36頁

(2)生存期:變量在某一時刻是存在,認為這一時刻屬于該變量生存期:

自動變量(本函數(shù)內(nèi)有效)存儲器變量(本函數(shù)內(nèi)有效)形式參數(shù)動態(tài)存儲靜態(tài)局部變量(函數(shù)內(nèi)有效)靜態(tài)外部變量(本文獻內(nèi)有效)外部變量(其它文獻可引用)靜態(tài)存儲第37頁第37頁(3)從變量存在位置來分:靜態(tài)局部變量靜態(tài)外部變量(函數(shù)外部靜態(tài)變量)外部變量(可為其它文獻引用)內(nèi)存中靜態(tài)存儲區(qū)內(nèi)存中動態(tài)存儲區(qū)自動變量和形式參數(shù)CPU中存儲器存儲器變量第38頁第38頁

8.9內(nèi)部函數(shù)和外部函數(shù)函數(shù)能否被其它源文獻中函數(shù)調(diào)用,看其是內(nèi)部還是外部函數(shù)1、內(nèi)部函數(shù)只能被本文獻中其它函數(shù)所調(diào)用

形式:static類型標識符函數(shù)名(形參表列)若是內(nèi)部函數(shù),其作用域僅限于定義它所在文獻。此時在其它文獻中能夠有相同函數(shù)名,它們互相之間互不干擾。2、外部函數(shù)能被其它文獻中函數(shù)所調(diào)用。形式:extern類型標識符函數(shù)名(形參表列)注意:extern可省,隱含時,系統(tǒng)默認其為外部函數(shù)。第39頁第39頁

8.10如何運營一個多文獻程序

1.用turboC集成環(huán)境(1)工程辦法①建立工程文獻名.prj,其中包括一個程序各文獻名,②在工程菜單項中設(shè)置工程文獻名③運營工程文獻,按F9(2)文獻包括辦法①在主函數(shù)頭部將本程序各文獻用#include“文獻名.c”,編譯時,系統(tǒng)自動將“文獻名.c”放到main函數(shù)前頭,作為一個整體編譯。這時,這些函數(shù)被認為是在同一個文獻中,函數(shù)中extern申明能夠不要。②運營該程序2.在MSC上①分別對4個文獻進行編譯,得到4個.obj文獻②linkfile1+file2+file3+file4得可執(zhí)行文獻file1.exe第40頁第40頁下列程序輸出結(jié)果是:_

。main(){intx=0;sub(&x,8,1);printf("%d\n",x);}sub(int*a,intn,intk){if(k<=n)sub(a,n/2,2*k);*a+=k;}第41頁第41頁#include<stdio.h>

inti=10;

intmain()

{

inti=1;

printf("%d\t,i);

{

inti=2;

pritnf("%d\t",i);

{

externi;

i+=1;

printf("%d\t",i);

}

printf("%d\t",++i);

}

printf("%d\n",++i);

return0;

}

運營結(jié)果為

1

2

11

3

2

第42頁第42頁例、寫出下面程序執(zhí)行結(jié)果。intk=3;

main()

{intk=7;

printf("k=%d\n",k);

{intk=11;

printf("k=%d\n",k);

{k+=1;

printf("k=%d\n",k);

}

printf("k=%d\n",k);

}

printf("k=%d\n",k);

}k=7

k=11

k=12

k=12

k=7第43頁第43頁例、寫出下列程序執(zhí)行結(jié)果。#include"stdio.h"

inti=3;

main()

{inti,j;

i=f1();

for(j=3;j<6;++j)

{printf("i=%d,j=%d\n",i,j);

printf("f2(%d)=%d\n",i,f2(i));

printf("f3(%d)=%d\n",i,f3(i));

printf("f4(%d)=%d\n",i+j,f4(i+j));

}

getch();

}intf1()

{returni;}intf2(intj)

{returnj=++i;}intf3(intj)

{staticinti=9;

returnj=i--;

}intf4(inti)

{intj=10;

returni=j+=i;

}i=3,j=3

f2(3)=4

f3(3)=9

f4(6)=16i=3,j=4

f2(3)=5

f3(3)=8

f4(7)=17i=3,j=5

f2(3)=6

f3(3)=7

f4(8)=18第44頁第44頁

下列程序運營后,輸出結(jié)果是_____func(inta,intb){staticintm=0,i=2;i+=m+1;m=i+a+b;return(m);}main(){intk=4,m=1,p;p=func(k,m);printf(“%d,”,p);p=func(k,m);printf(“%d\n”,p);}第45頁第45頁編寫函數(shù)fun,該函數(shù)功效是:從字符中刪除指定字符,同一字母大、小寫按不同字符處理。voidfun(chars[],intc){inti=0;char*p;p=s;while(*p){if(*p!=c){s[i]=*p;i++;}p++;}s[i]='\0';}第46頁第46頁請編寫一個函數(shù)fun,它功效是:輸出一個字符串長度。(不得調(diào)用C語言提供求字符串長度函數(shù))。

intfun(char*s){inti=0;while(*s++)i++;returni;}第47頁第47頁請編寫函數(shù)fun,其功效是:將s所指字符串中除了下標為偶數(shù)、同時ASCII值也為偶數(shù)字符外,其余全都刪除;串中剩余字符所形成一個新串放在t所指一個數(shù)組中。voidfun(char*s,chart[]){inti,j,n;n=strlen(s);for(i=0;i<n;i++)if(i%2==0&s[i]%2==0){t[j]=s[j];j++;}t[j]='\0';}第48頁第48頁請編寫一個函數(shù)fun,它功效是:將ss所指字符串中所有下標為奇數(shù)位置上字母轉(zhuǎn)換為大寫(若該位置上不是字母則不轉(zhuǎn)換)。voidfun(char*ss){inti,n;n=strlen(ss);for(i=1;i<n;i+=2;)if(ss[i]>='a'&&ss[i]<='z')ss[i]=ss[i]-32;}第49頁第49頁一個整數(shù),它加上100后是一個完全平方數(shù),再加上168又是一個完全平方數(shù),請問該數(shù)是多少?#include"math.h"

main()

{

longinti,x,y,z;

for(i=1;i<100000;i++)

{x=sqrt(i+100);

/*x為加上100后開方后結(jié)果*/

y=sqrt(i+268);

/*y為再加上168后開方后結(jié)果*/

if(x*x==i+100&&y*y==i+268)/*假如一個數(shù)平方根平方等于該數(shù),這闡明此數(shù)是完全平方數(shù)*/

printf("\n%ld\n",i);

}

}第50頁第50頁一個數(shù)假如正好等于它因子之和,這個數(shù)就稱為“完數(shù)”。比如6=

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論