• /  23
  • 下載費用: 9.90積分  

c精品課件教學作者昆明理工大學7第五章1.ppt

'c精品課件教學作者昆明理工大學7第五章1.ppt'
第五章1函 數1 研究式學習—C程序設計(第五章)上講主要內容字符數組◆ 概念的引入◆ 字符數組的定義、引用及初始化◆ 程序舉例用于字符串處理的函數 2 研究式學習—C程序設計(第五章)本講主要內容函數的概念函數的定義及調用函數的返回值函數的參數及其傳遞方式3 研究式學習—C程序設計(第五章)函數的概念C程序的組織 :文件1文件2文件n   函數1函數2函數n程序只有一個main函數函數是C語言程序的基本組成部分,C語言程序由一個或多個函數組成,但至少、且只能包含一個主函數。 C語言的函數可以分為三類:主函數:main()標準庫函數:由系統提供,如gets(),puts()等。自定義函數:由用戶編寫4 研究式學習—C程序設計(第五章)問題的提出我們先研究在一個main()函數里完成的程序 main(){ long int j,t=1,s=0; for(j=1;j<=3;j++) t=t*j; s+=t; for(t=1,j=1;j<=5;j++) t=t*j; s+=t; for(t=1,j=1;j<=8;j++) t=t*j; s+=t; printf(“3!+5!+8!=%ld\n”,s);}如何使用函數編程計算3!+5!+8!重復累贅,可重用性、可靠性、可維護性 差! 5 研究式學習—C程序設計(第五章)把求階乘的程序段獨立寫成一個函數:main(){long s=0; s=jch(3)+jch(5)+jch(8); printf(“3!+5!+8!=%ld\n”,s);}long jch(int n) { long t=1; int j; for(j=1;jy) z=x; else z=y; return(z); }程序格式C是函數式的語言。一個C源程序至少包含一個main函數,也可以包含一個main函數和若干個其它函數。函數可分為系統提供的庫函數(如scanf)、用戶自己定義的函數(如max)及main函數 8 研究式學習—C程序設計(第五章)函數的定義 函數頭{ 函數體 }函數頭:類型標識符 函數名(形式參數表)命名規則同變量,函數名不能重復,它是被初始化的內部變量,壽命和可見性僅限于函數內部若不說明類型,一律自動按整型處理。當函數無返回值時用void作為類型定義符。若無參數,寫void9 研究式學習—C程序設計(第五章){ 說明部分; 語句部分; }當函數要返回一個值時,必須通過return語句返回,其形式如下:return (表達式); 函數的定義函數體:例如:long jch(int n) { long t=1; int j; for(j=1;j=0) return x; else return -x;}例5_4void pok(){printf(“0k”); return;}程序的執行從當前函數返回其上級(調用它的函數)   釋放該函數的參數及變量所占用的內存空間。 向函數返回一個值(如果函數的類型不是void時)只能通過一個return語句返回一個值可以缺省函數體內不能再定義函數 (不能嵌套定義 )int ff1() { … float ff2() { … } } 函數的定義就是給出:函數的名字函數的返回值函數的形參名字與類型函數的實現語句(函數體)11 研究式學習—C程序設計(第五章)函數的聲明 函數調用:就是一個函數(調用函數)調用另一個 函數(被調用函數) 。當函數調用在前,定義在后時(當函數為int型時,也可不聲明),必須用函數原型聲明。函數原型(下列信息):u    函數類型u     函數名u     函數的參數(個數、類型及順序)調用函數的說明部分按如下形式說明:類型說明符 被調用函數名(含類型說明的形參表)如:int absint(int); void pok(); 聲明時參數名可以缺省,但類型名不可以缺省 。int ff1(int age,char sex); 也可以寫為:int ff1(int ,char); 12 研究式學習—C程序設計(第五章)函數的調用 函數必須通過調用才能被執行,函數調用的功能是:u     實參數向形參數傳遞數據。(由演員擔當角色)u     為參數和函數體內的變量分配內存空間。u     中斷當前函數的執行,把執行流程轉向被調用函數的入口,執行被調用函數。函數調用形式為:函數名(實參表列)如:pok(); 函數無返回值c=max(a,b); 函數有返回值,調用表達式作為其他表達式的一部分。13 研究式學習—C程序設計(第五章)定義與調用舉例main(){int addxy(); int x,y,z; scanf(“%d%d”,&x,&y); z=addxy(x,y); printf(“The sum of %d and %d is %d.”,x,y,z);}*從鍵盤輸入兩個整數,并將兩個整數之和顯示出來。1.調用就是把控制傳遞給被調函數的第一個語句并執行函數體,執行完后控制返回調用函數。2.調用時實參的數據傳給形參。實參的個數、類型和位置必須與形參一一對應3.除void類型外,任何函數都返回一個值。值由return語句完成。int addxy(int a,int b) int a,b; {int c; c=a+b; return(c);}14 研究式學習—C程序設計(第五章)返回值舉例float fc(int n) /*求1+1/2+1/3+…+1/n的值*/ {float s; int i; s=0; for(i=1; i<=n; i++) s+=1/(float)i; return(s);}main() /*主函數*/{float sum; sum=fc(50)+fc(100)+fc(150)+fc(200); printf(“sum=%f ”,sum);}求s=s1+s2+s3+s4的值。其中: s1=1+1/2+1/3+…+1/50s2=1+1/2+1/3+…+1/100s3=1+1/2+1/3+…+1/150s4=1+1/2+1/3+…+1/20015 研究式學習—C程序設計(第五章)返回值舉例double power(float x,int n) /*求x的n次方,n是整數*/ {double pw; int i; pw=1; for(i=1;i<=n;i++) pw*=x; return(pw);} 該函數中x和n為函數的形式參數,形參的類型必須說明。所求結果通過return語句返回調用函數。上述函數無法直接執行,因為參數無值。必須通過調用函數的調用,把實參的數據傳遞給形參后才能執行。main()函數可以放在程序的任何地方,但放在所有其它函數之前時必須用函數原型說明被調用函數。main(){double power(float x,int n); print(“%f\n”,power(5,3));}16 研究式學習—C程序設計(第五章)函數間的參數傳遞函數的參數常用于在調用函數和被調函數之間進行數據傳遞,所以要求實參表中的實參個數、數據類型及順序必須與函數定義時的形參完全對應。函數調用時,先將實參傳遞給形參然后才執行函數體。參數傳遞分為:“值傳遞” 是把實參的值傳遞給形參,而被調函數中形參的改變不會影響調用函數中實參的值,因此, “值傳遞”具有單向性。 “地址傳遞” 是把實參的地址傳遞給形參,在被調函數中通過該地址可以訪問調用函數中的實參,而對形參的任何改變實際上就是對調用函數中實參的改變, “地址傳遞”具有雙向性。 17 研究式學習—C程序設計(第五章)“值傳遞”舉例main() /*將一整數乘以10后顯示出來*/{int num=5,result; result=mult10(num); printf(“result=%d ”,result); printf(“num=%d ”,num);}int mult10(n) int n;{n*=10; return(n);}調用mult10時:實參變量num的值新分配的形參單元 n 復制到返回時: num n在內存mnu與n是兩個不同的存儲單元,如果同名呢?“值傳遞”是單向傳遞18 研究式學習—C程序設計(第五章)數組名作函數的參數 (地址傳遞)對一組整形數據排序的函數: void sort(一維數組,int n) { 用某種算法對該數組排序}數據個數void sort(int s[],int n) { 用某種算法對該數組排序}C語言允許一維數組作形參時,可不定義大小發生調用時,實參數組的首地址傳給形參數組,這樣實參數組和形參數組共用同一段內存單元,對形參數組的操作就是對實參數組的操作 19 研究式學習—C程序設計(第五章)void sort(int s[],int n) { int j,t,k;for(j=0;j<n-1;j++) for( k=j+1;k<n;k++) if(s[j]<s[k]) {t=s[j]; s[j]=s[k]; s[k]=t;} main(){int j,a[]={60,70,55,89,90,100,67,88,76,95}; sort(a,10);for(j=0;j<10;j++) printf(“%d,”,a[j]);}數組名作函數的參數 (程序)發生調用時對s數組的排序,就是對a數組的排序20 研究式學習—C程序設計(第五章)“地址傳遞”舉例void add1(int b[],int n ){int i; for(i=0;i<n;i++) b[i]++;}main() {int i; static int a[]={0,1,2,3,4,5,6,7,8,9}; add1(a,10); for(i=0;i<10;i++) printf(“%d ”,a[i]);} 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9ab調用時a數組的首址送給b數組,使形參數組與實參數組占用同樣的存儲區域,b[i]++實際上就是a[i]++。調用前后數組內容的變化編程:將一維數組中每個元素的值加上1后顯示出來21 研究式學習—C程序設計(第五章)函數間的參數傳遞在函數被調用時才分配形參的存儲單元實參可以是常量、變量或表達式實參類型必須與形參相符單個變量傳遞時是傳遞參數值,即單向傳遞數組作為參數時的情況:*數組元素作實參,與單個變量一樣,是“值傳遞”*數組名作參數,形、實參數都應是數組名,類型要 一樣,傳送的是數組首地址,是“地址傳遞”22 研究式學習—C程序設計(第五章)作業 復習教材 第五章的第1、2、3節預習教材 第五章的第4、5、6、7節自學第六單元的第四部分課外作業:第六單元全部習題上機實習內容:實驗七23 研究式學習—C程序設計(第五章)
關 鍵 詞:
教學 作者 昆明 理工大學 第五 精品
 天天文庫所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:c精品課件教學作者昆明理工大學7第五章1.ppt
鏈接地址: http://www.476824.live/p-51617206.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服點擊這里,給天天文庫發消息,QQ:1290478887 - 聯系我們

本站為“文檔C2C交易模式”,即用戶上傳的文檔直接賣給(下載)用戶,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有【成交的100%(原創)】。本站是網絡服務平臺方,若您的權利被侵害,侵權客服QQ:1290478887 歡迎舉報。

[email protected] 2017-2027 http://www.476824.live 網站版權所有

粵ICP備19057495號 

收起
展開
球探网即时蓝球比分 河北快三最新遗漏 内蒙古11选55开奖结果 山西快乐10分开奖走势 疯狂飞艇是正规的吗 极速赛车计划全天精准版 三分钟幸运赛车开奖记录 深圳风彩开奖走势图100期 31选7体彩技巧稳赚 票据理财平台哪个好 广东好彩1开奖号码