




已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
-數(shù)據(jù)類型:1.簡(jiǎn)單的數(shù)據(jù)類型: 整型 實(shí)型 字符型2.構(gòu)造型: 數(shù)組 結(jié)構(gòu)體(聯(lián)合體) 鏈表 int a,b,c;- 數(shù)組: 同種類型的數(shù)據(jù)在內(nèi)存中占有一片連續(xù)的存儲(chǔ)空間.-根據(jù)數(shù)組所帶有下標(biāo)的個(gè)數(shù):(1)一維數(shù)組 (2)二維數(shù)組(3)多維數(shù)組第一部分: 一維數(shù)組的定義、引用、賦值1.一維數(shù)組定義的一般形式: 類型名 數(shù)組名常量表達(dá)式;例如: int a8;int 類型名 說(shuō)明該數(shù)組中的每個(gè)元素都是整型. a 是數(shù)組名,是用戶自定義,是一個(gè)地址常量. 8 說(shuō)明該數(shù)組中含有8個(gè)元素,該八個(gè)元素分別為: a0a7 ,在該數(shù)組中,數(shù)組的下標(biāo)總是從0開(kāi)始,就把下標(biāo)0叫做該數(shù)組下標(biāo)的下界.把下標(biāo)7叫做該數(shù)組下標(biāo)的上界 .當(dāng)定義數(shù)組的時(shí)候,編譯系統(tǒng)將根據(jù)定義的類型在內(nèi)存中為該數(shù)組分配一定大小的存儲(chǔ)空間.定義多個(gè)數(shù)組:double a8,b100,w200; 和其他變量一起定義:float a,b10,*p;2. 一維數(shù)組的引用的一般形式: 數(shù)組名常量表達(dá)式例如: int a8,i; (i=0&i 數(shù)組中的每個(gè)元素的實(shí)質(zhì):代表了一個(gè)存儲(chǔ)單元,和變量的形式一樣. - int a8,i,k; a8-對(duì)數(shù)組元素的引用不能超出規(guī)定的范圍,如果超出范圍,編譯系統(tǒng)不會(huì)給出出錯(cuò)信息.不一定得到預(yù)期結(jié)果.3.在定義的同時(shí)為數(shù)組的賦值:*完全賦值:例如: int a8=1,2,3,4,5,6,7,8;-數(shù)據(jù)間用逗號(hào)進(jìn)行分隔.-最后一個(gè)元素的后面是沒(méi)有逗號(hào)的。-賦值的個(gè)數(shù)不能超出規(guī)定的個(gè)數(shù).-賦值的元素的類型也要和說(shuō)明的類型要一致.-當(dāng)賦值后,編譯系統(tǒng)將自動(dòng)的把: a0=1 . a7=8 * 不完全賦值:-針對(duì)數(shù)值型數(shù)據(jù):不足部分用0或0.0int a8=2,3,8;int a8=2,3,8,0,0,0,0,0;double b5=1.2,3.4;double b5=1.2,3.4,0.0,0.0,0.0;針對(duì)字符型:不足補(bǔ)充0例如: char ch5=A,B,C; char ch5=A,B,C,0,0;* 通過(guò)完全賦值來(lái)確定一維的大小:int a =1,2,3,4,5,6;int a6=1,2,3,4,5,6;int a =0,0,0,0,0,0,0,0;int a8=0; 說(shuō)明在一維數(shù)組中一維的大小可以省略. 在執(zhí)行過(guò)程中不能給數(shù)組進(jìn)行整體賦值,因?yàn)閿?shù)組名是一個(gè)地址常量不能代表整體.4.如何瀏覽數(shù)組中的元素: -可以通過(guò) 一個(gè)for 來(lái)實(shí)現(xiàn):例如: int a8,i;for(i=0;i8;i+) ai 例如:編寫(xiě)一個(gè)函數(shù),給一個(gè)含有30個(gè)元素的數(shù)組賦1,3,5,7.先按每行10個(gè)順序輸出,再按每行10個(gè)逆序輸出.#include #define M 30 void main() int aM,i; for(i=0;iM;i+) ai=2*i+1; for(i=0;i=0;i-) printf(%4d,ai); if(i%10=0) printf(n); 第二部分:一維數(shù)組和指針 變量的地址:把該變量在內(nèi)存中所占空間的第一個(gè)字節(jié)的地址就叫做該變量的地址. 數(shù)組的地址:把該數(shù)組中第一個(gè)元素的地址就叫做該數(shù)組的首地址. 假設(shè) : int a8,*p; &a0-/代表了數(shù)組的首地址. - 當(dāng)定義一個(gè)數(shù)組的時(shí)候,這時(shí)數(shù)組名就確定了。該數(shù)組名就是一個(gè)地址常量,代表了該數(shù)組第一個(gè)元素的地址值. 數(shù)組名a 和 &a0 數(shù)組名是一個(gè)地址常量就不能給其進(jìn)行賦值運(yùn)算.例如: a+ ;-數(shù)組名是常量,是不可以改變,如何通過(guò)數(shù)組名來(lái)訪問(wèn)某個(gè)元素的地址:* 可以通過(guò)加減一個(gè)整數(shù)的形式來(lái)訪問(wèn)某個(gè) 元素的 地址: 例如: int a8,i; (i=0&i 看看對(duì)一維數(shù)組的幾中引用形式:例如: int a8,*p=a,i; (i=0&i 如果: p=a;3. 帶下標(biāo)的指針: pi4.用指針的形式: *(p+i)第三部分:一維數(shù)組和函數(shù)1. 數(shù)組中的元素作為實(shí)參進(jìn)行傳遞.-由于數(shù)組中的每個(gè)元素的實(shí)質(zhì)都相當(dāng)于一個(gè)變量,因此數(shù)組元素的傳遞實(shí)質(zhì)上就是變量的值傳遞. 例如:#include int fun(int x,int y,int z)int s; s=x+y+z; return s;void main()int a3=1,2,3,s; s=fun(a0,a1,a2); printf(s=%dn,s);2. 數(shù)組名作為實(shí)參,對(duì)應(yīng)的形參為: (1)*a (2)a (3)aM數(shù)組名的傳遞實(shí)質(zhì)上是元素的地址傳遞.例如1:#include #define M 8void fun(int *p)/fun(int p)/fun(int pM)int i; for(i=0;iM;i+) *(p+i)=2*i+1;void main() int aM,i; fun(a); for(i=0;iM;i+) printf(%4d,ai); printf(n);例如2:#include #define M 8void fun(char *a,int n) int i; for(i=0;in;i+) ai=*;void main() char sM=A,B,C,D,E,F,G,H; int i; for(i=0;iM;i+) printf(%3c,si); printf(n); fun(s,4); for(i=0;iM;i+) printf(%3c,si); printf(n); 3.數(shù)組元素的地址作為實(shí)參進(jìn)行傳遞#include #define M 8void fun(char *a,int n) int i; for(i=0;in;i+) ai=*;void main() char sM=A,B,C,D,E,F,G,H; int i; for(i=0;iM;i+) printf(%3c,si); printf(n); fun(&s2,4); for(i=0;iM;i+) printf(%3c,si); printf(n); 第四部分:一維數(shù)組的簡(jiǎn)單應(yīng)用 編寫(xiě)函數(shù):1.定義一個(gè)含有15個(gè)元素的數(shù)組,通過(guò)隨機(jī)函數(shù)給其賦隨機(jī)值0100,然后輸出 2.然后在按每3個(gè)為一組求他們的和值,再在主函數(shù)中輸出他們的和值.例如:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15b0 b1 b2 b3 b4#include #include #define M 15#define N 3int fun(int *a,int *b)int i,s=0,k=0; for(i=0;iM;i+) s+=ai; if(i+1)%N=0) bk+=s;s=0; return k;void main()int aM,bM,i,n; /以下語(yǔ)句用來(lái)給數(shù)組賦值: for(i=0;iM;i+) ai=rand()%100; for(i=0;iM;i+) printf(%4d,ai); printf(nn); n=fun(a,b); for(i=0;in;i+) printf(%4d,bi); printf(n);例如2:編寫(xiě)函數(shù)通過(guò)隨機(jī)函數(shù)給一個(gè)含有8個(gè)元素的數(shù)組賦值,然后輸出該數(shù)組中的值,最后在把該數(shù)組中元素的值按升序進(jìn)行排列再輸出.(排序問(wèn)題(冒泡法)5 7 4 8 9 1 2 00 7 5 8 9 4 2 1 第一位置為基點(diǎn):0 1 7 8 9 5 4 2 第二位置為基點(diǎn):0 1 2 8 9 7 5 4 第三位置為基點(diǎn):0 1 2 4 9 8 7 5 第四位置為基點(diǎn):0 1 2 4 5 9 8 7 第五位置為基點(diǎn): 0 1 2 4 5 7 9 8 第六位置為基點(diǎn): 0 1 2 4 5 7 8 9 第七位置為基點(diǎn): #include #include #define M 8void fun(int *a) int i,t; for(i=0;iM-1;i+) for(j=i+1;jaj)t=ai;ai=aj;aj=t;void main()int aM,i; for(i=0;iM;i+) ai=rand()%50; for(i=0;iM;i+) printf(%4d,ai); printf(n); fun(a); for(i=0;iM;i+) printf(%4d,ai); printf(n);例如3:編寫(xiě)程序:把一個(gè)數(shù)組中的數(shù)據(jù)進(jìn)行倒置,然后輸出. 1 2 3 4 5 6 6 5 4 3 2 1#include #define M 8void fun(int *a) int i,t; for(i=0;iM/2;i+) t=ai; ai=aM-1-i; aM-1-i=t; void main()int aM,i; for(i=0;iM;i+) ai=3*i+2; for(i=0;iM;i+) printf(%4d,ai); printf(n); fun(a); for(i=0;i 一維的大?。罕硎居袔仔小?行下標(biāo)) 二維的大?。罕硎居袔琢?(列下標(biāo))-元素的個(gè)數(shù)=行列下標(biāo)成積-當(dāng)定義數(shù)組的時(shí)候,編譯系統(tǒng)將根據(jù)定義的類型在內(nèi)存中為其開(kāi)辟一定大小的存儲(chǔ)空間。-定義的形式如圖:對(duì)應(yīng)的數(shù)組元素分別為: a00 a01.a13-定義多個(gè)二維數(shù)組float a24,b36;-和其他類型的變量一起定義:double a,b10,w36,*p;2.二維數(shù)組的引用的一般形式: 數(shù)組名常量表達(dá)式1常量表達(dá)式2;例如:int a36,i,j;(i=0&i=0&j賦值的個(gè)數(shù)不能多于規(guī)定的個(gè)數(shù)。-所賦值的個(gè)數(shù)類型都要和規(guī)定的一一對(duì)應(yīng)。-計(jì)算機(jī)的編譯系統(tǒng)將自動(dòng)把:a00=1.a03=4.a13=8* 線性賦值:例如: int a24=1,2,3,4,5,6,7,8;- 不完全賦值:-缺省列:例如1:int a24=1,2,3 , 5,8 ;- int a24=1,2,3,5,8;-缺省行例如1: int a34=1,2,3,4, 5,6,7,8 ;-缺省行列:例如1: int a34=1,2,3 , 5,8 ;*通過(guò)完全賦值來(lái)確定一維大?。豪?int a 4=5,4,4,5,4,5,2,4,5,1,5,4;- 一維的大小=元素的個(gè)數(shù)/列數(shù)* 如果整除就把商作為一維的大小* 如果不能整除就商+1作為一維的大小-說(shuō)明在二維數(shù)組中,一維的大小可以省略,但二維的大小是不能省略的。4.二維數(shù)組的瀏覽:是通過(guò)兩個(gè)for語(yǔ)句來(lái)實(shí)現(xiàn);例如:for(i=0;iM;i+) for(j=0;jN;j+) aij例如:編寫(xiě)函數(shù),給一個(gè)含有2*3的二維數(shù)組賦值 1,2,3,10,20,30然后按行進(jìn)行輸出。#include void main() int i,j,a23; for(i=0;i2;i+) for(j=0;j3;j+) scanf(%d,&aij);/按行進(jìn)行輸出 for(i=0;i2;i+) for(j=0;j &a00 3.看看二維數(shù)組對(duì)元素的幾種引用形式: int a36,i,j;(i=0&i=0&j 二維數(shù)組以行為單位可以把二維數(shù)組看出幾個(gè)一維數(shù)組,那么 ai-就可以看成是某行的首地址。 由于 bj- *(b+j)2) aij - *(ai+j) - 在一維數(shù)組中 ai-*(a+i) 因此 aij- (*(a+i)j3) aij - (*(a+i)j- 由2和3組合:4) *(ai+j) - *(*(a+i)+j)5) *(&a00 +列數(shù)*行下標(biāo)+列下標(biāo))-4.指針數(shù)組:-指針數(shù)組的定義形式:類型名 *指針數(shù)組名常量表達(dá)式;例如: int *p3;-如何通過(guò)指針數(shù)組來(lái)引用二維數(shù)組中的元素。例如:int a32,*p3,i; for(i=0;i使指針數(shù)組中的每個(gè)元素都指向其對(duì)應(yīng)二維數(shù)組的對(duì)應(yīng)行。-指針數(shù)組中的每個(gè)元素每移動(dòng)一次相當(dāng)于移動(dòng)一個(gè)存儲(chǔ)單元。-二維數(shù)組的行下標(biāo)和指針數(shù)組中的下標(biāo)的值要一致。-通過(guò)指針數(shù)組來(lái)引用二維數(shù)組元素的幾種形式:aij -pij*(ai+j) -*(pi+j) pi-*(p+i)pij -(*(p+i)j*(pi+j) -*(*(p+i)+j)5.行指針 - 行指針的一般定義形式:類型名 (*指針變量)常量表達(dá)式;例如1: int (*q)2;-如讓行指針指向一個(gè)二維數(shù)組:例如:int a32,(*q)2; q=a;/-要想保證行指針指向一個(gè)二維數(shù)組必須使行指針的下標(biāo)表達(dá)式和二維數(shù)組中列下標(biāo)的表達(dá)式一致。-如圖所示:-行指針每移動(dòng)一次就移動(dòng)一行。 q+-看如何通過(guò)行指針來(lái)引用二維數(shù)組中的元素: aij- qij *(ai+j)- *(qi+j) (*(a+i)j -(*(q+i)j *(*(a+i)+j) - *(*(q+i)+j)-看看課本:9.129.14第三部分:二維數(shù)組和函數(shù)1.二維數(shù)組名作實(shí)參1)當(dāng)實(shí)參為二維數(shù)組名時(shí),形參必為指針,并且這個(gè)指針應(yīng)指向數(shù)組,指向二維數(shù)組的指針變量為行指針。形參對(duì)應(yīng)格式,即行指針應(yīng)為:(*a)N2)行指針也可以表示成 aMN3)行的表達(dá)式可以缺省 a N2.指針數(shù)組做實(shí)參1.由于指針數(shù)組中每個(gè)元素均為指針,因此對(duì)應(yīng)形參應(yīng)當(dāng)是指向指針的指針 *a2.與指針數(shù)組表示方式相同*aM3.缺省 *a 例如1:1.編寫(xiě)程序通過(guò)調(diào)用隨機(jī)函數(shù)給5*6的二維數(shù)組元素賦040的整數(shù),求出二維數(shù)組每行元素的平均值。#include #include #define M 5#define N 6void fun(int (*a)N,int *b)int i,j,av; for(i=0;iM;i+) av=0; for(j=0;jN;j+) av+=aij; bi=av/N; void main()int aMN,i,j,bM; /調(diào)用隨機(jī)函數(shù)給M*N的數(shù)組賦值: for(i=0;iM;i+) for(j=0;jN;j+) aij=rand()%40;/以行為單位輸出二維數(shù)組中元素的值: for(i=0;iM;i+) for(j=0;jN;j+) printf(%-4d,aij); printf(n); fun(a,b); for(i=0;i在C語(yǔ)言中,字符串沒(méi)有變量只有常量。-在C語(yǔ)言中,沒(méi)有定義一種字符串類型。字符串的存取是依托于一維的字符型數(shù)組來(lái)實(shí)現(xiàn)的。 例如:char s6=ABCDE;-用一維的字符型數(shù)組和字符串的區(qū)分:例如:char s5=A,B,C,D,E char s5=A,B,C,D* 如果要把一個(gè)字符型數(shù)組看成字符串,要求最后一個(gè)元素必須為0,而字符型數(shù)組對(duì)最后一個(gè)元素是沒(méi)有要求的。1.在定義的同時(shí)給一維的字符型數(shù)組賦字符串例如:char s10=A,B,C,D;char s10=ABCD; char s10=ABCD;* 在給字符型數(shù)組賦字符串的時(shí)候,一定要有足夠大的空間。通過(guò)完全賦值來(lái)確定一維的大小:char s =ABCD;*如果要在執(zhí)行部分給字符型數(shù)組賦字符串:不能整體賦值,只能逐個(gè)賦值。例如: char s100; s=ABCD;/是錯(cuò)誤的。 s0=A;s1=B,s2=C,s3=D;最后在人為的給其后天就一個(gè)結(jié)束標(biāo)志: s4=0;2.讓一個(gè)字符型指針指向某個(gè)字符串:* 在定義的同時(shí)讓指針指向字符串。例如: char *p=ABCD;* 在執(zhí)行部分讓指針指向某個(gè)字符串:例如: char str100,*p=str; p=ABCD;3.把字符串賦值給數(shù)組和指針的區(qū)分: -如果把字符串賦值給字符型數(shù)組,那么該數(shù)組就會(huì)根據(jù)字符串的大小在內(nèi)存中為其開(kāi)辟對(duì)應(yīng)大小的存儲(chǔ)空間。而把字符串賦值給字符型指針,只表示該指針指向某個(gè)字符串并沒(méi)有在內(nèi)存中為其開(kāi)辟空間。第二部分:字符串的輸入和輸出1.調(diào)用標(biāo)準(zhǔn)庫(kù)中printf和scanf函數(shù)-printf函數(shù):1輸出字符串的必要條件:(1)可是數(shù)組名(2)可以是指向字符串的指針(3)還可以是字符串的本身。2在C中用格式字符%s來(lái)實(shí)現(xiàn)字符串的整體輸出。3輸出直到遇到第一個(gè)0結(jié)束輸出。例如:#include void main()char str100=ABCD0abcd,*p=&str2; printf(str=%sn,str); printf(str=%sn,p); printf(str=%sn,ABCD0abcd );- scanf 函數(shù)1輸入的必要條件:(1)可以是數(shù)組名(2)可以是指向字符串的指針。2C中用格式字符%s來(lái)實(shí)現(xiàn)字符串整體輸入。例如:#include void main()char str100=*,*p=&str2; scanf(%s,p);/scanf(%s,str); printf(str=%sn,str); 3如何進(jìn)行輸入: *當(dāng)格式字符間是連續(xù)的:#include void main()char str100,str1100,str2100; scanf(%s%s%s,str,str1,str2); printf(str=%s, str1=%s,str2=%sn,str,str1,str2); 輸入的字符串之間要有必要的分隔符。分隔符為(空格、tab、 回車) 用scanf進(jìn)行輸入的時(shí)候,空格,tab,回車都不作為字符來(lái)處理。2.調(diào)用標(biāo)準(zhǔn)庫(kù)中字符串專用 gets和puts函數(shù)1gets函數(shù)的一般調(diào)用形式: gets(參數(shù)); 例如:#include void main()char s100,s1100; gets(s); gets(s1); printf(s=%s,s1=%sn,s,s1);在輸入的時(shí)候,分隔符只能用回車,這時(shí),tab、和空格都將作為字符來(lái)處理。2puts函數(shù)的一般調(diào)用形式: puts(參數(shù));在輸出的時(shí)候,自動(dòng)添加一個(gè)換行。例如:#include void main()char s100; gets(s); puts(s);第三部分:字符串?dāng)?shù)組 zhangsan lisi wangwu s010 s110 s210-在C語(yǔ)言中字符串?dāng)?shù)組的存放是通過(guò)二維的字符型數(shù)組來(lái)實(shí)現(xiàn)的 。1.在定義的同時(shí)為二維字符型數(shù)組賦字符串?dāng)?shù)組例如:char str310=zhangsan, lisi, wangwu ; -在二維的字符型數(shù)組中,一維的大小表示該字符串?dāng)?shù)組中含有字符串的個(gè)數(shù)。二維的大小表示每個(gè)字符串的最大長(zhǎng)度。2.用指針數(shù)組來(lái)存放字符串?dāng)?shù)組。char *p=zhangsan,*q=lisi,*s=wangwu;可以定義一個(gè)字符型指針數(shù)組來(lái)存放字符串:例如:char *p3=zhangsan,lisi,wangwu;3.字符串?dāng)?shù)組的賦值:例如:#include void main()int i; char str530; for(i=0;i5;i+) gets(stri); for(i=0;i5;i+) puts(stri);-4.字符串?dāng)?shù)組的排序:按字符串的長(zhǎng)度排序:#include #include #define M 5void fun(char s 50)int i,j; char t50; for(i=0;iM-1;i+) for(j=i+1;jstrlen(sj) strcpy(t,si); strcpy(si,sj); strcpy(sj,t); void main()char sM50; int i; for(i=0;iM;i+) gets(si); for(i=0;iM;i+) puts(si); fun(s); for(i=0;iM;i+) puts(si); -按字符串的大小排序:#include #include #define M 5void fun(char s 50)int i,j; char t50; for(i=0;iM-1;i+) for(j=i+1;jM;j+) if(strcmp(si,sj)0) strcpy(t,si); strcpy(si,sj); strcpy(sj,t); void main() char sM50; int i; for(i=0;iM;i+) gets(si); printf(-n); for(i=0;iM;i+) puts(si); fun(s); printf(-n); for(i=0;i對(duì)應(yīng)的頭文件 #include 1.拷貝函數(shù) strcpy 一般調(diào)用形式: strcpy(s1,s2);使用:例如#include #include void main() char s1100=abcd,s2100=ABCDE; puts(s1);puts(s2); strcpy(s1,s2); puts(s1);puts(s2); -推導(dǎo):#include void main()char s1100=abcd,s2100=ABC; int i; puts(s1);puts(s2); for(i=0;s2i;i+) s1i=s2i; s1i=0; puts(s1);puts(s2);2.連接函數(shù) strcat - 一般調(diào)用形式: strcat(s1,s2); - 使用#include #include void main() char s1100=abcd,s2100=ABCDE; puts(s1);puts(s2); strcat(s1,s2); puts(s1);puts(s2); - 推導(dǎo):#include void main()char s1100=abcd,s2100=ABCDE; int i,j; puts(s1);puts(s2); for(i=0;s1i;i+) ; for(j=0;s2j;j+) s1i+=s2j; s1i=0; puts(s1);puts(s2);3.長(zhǎng)度函數(shù) strlen; sizeof;一般形式為:strlen(s); sizeof(s); 使用:#include #include void main()char s1000; int k,K; gets(s); k=strlen(s); K=sizeof(s); printf(k=%d,K=%dn,k,K);4.比較函數(shù): strcmp一般調(diào)用形式 strcmp(s1,s2); 使用:#include #include void main()char s1100,s2100 ; gets(s1);gets(s2); if(strcmp(s1,s2)0) puts(s1); else if(strcmp(s1,s2)=0) printf(相等n); else puts(s2);- 推導(dǎo):#include int fun(char *s1,char *s2)int i; for(i=0;s1i!=0&s1i=s2i; i+) ; return s1i-s2i;void main()char s1100,s2100; gets(s1);gets(s2); if(fun(s1,s2)0) puts(s1); else if(fun(s1,s2)=0) printf(相等!n); else puts(s2);第五部分:字符串的簡(jiǎn)單應(yīng)用:1.編寫(xiě)函數(shù):判斷一個(gè)字符串是否為回文,如果是回文,函數(shù)返回1,否則函數(shù)返回0。123321 abcba#include #include int fun(char *s)int i,k; k=strlen(s); for(i=0;iC語(yǔ)言是一種函數(shù)式的語(yǔ)言,在C中提供了函數(shù)的思想,在程序中沒(méi)有子程序的概念只有函數(shù)的思想,因此,C語(yǔ)言的基本單位是函數(shù)。在一個(gè)C程序中,可以有多個(gè)函數(shù)構(gòu)成,但主函數(shù)只能有一個(gè)且唯一。C語(yǔ)言中規(guī)定用main來(lái)作為主函數(shù)來(lái)使用,在main函數(shù)的后面有一個(gè)小括號(hào),該括號(hào)中可以有參數(shù),也可以沒(méi)有參數(shù),無(wú)論有無(wú)參數(shù)該括號(hào)都不能省略。C程序總是主函數(shù)的左邊花括號(hào)開(kāi)始執(zhí)行,到右邊的花括號(hào)結(jié)束。第一部分:帶參數(shù)的主函數(shù) -帶參數(shù)的主函數(shù)的一般形式:void main(類型名1 形參1,類型名2 形參2).例如1:void main(int argc,char *argv).-還可以寫(xiě)成:void main(int argc,char *argv).-如果主函數(shù)帶有參數(shù),那么第一個(gè)參數(shù)的類型必須為int,第二個(gè)參數(shù)必須為char 。而形參是用戶標(biāo)識(shí)符。-如果第一個(gè)參數(shù)有值,那么該值至少為1例如:#include void main(int argc,char *argv)int i; printf(%dn,argc); for(i=1;i 遞歸分類:(1)簡(jiǎn)單遞歸 (2)復(fù)雜遞歸* 構(gòu)成遞歸的必要條件:I要解決的問(wèn)題可以轉(zhuǎn)換為一個(gè)新的問(wèn)題,新問(wèn)題的解題方法和原來(lái)一樣。II通過(guò)轉(zhuǎn)換可以使問(wèn)題得以解決。III必須有一個(gè)明確的結(jié)束條件。例如1:s=n!;#include int fun(int n)if(n=1) return 1; else return n*fun(n-1);void main()int n,s; printf(請(qǐng)輸入n的值: ); scanf(%d,&n); s=fun(n); printf(s=%dn,s);例如2:s=1+2+3+.n#include int fun(int n)if(n=1) return 1; else return n+fun(n-1);void main()int n,s; printf(請(qǐng)輸入n的值: ); scanf(%d,&n); s=fun(n); printf(s=%dn,s);例如3:(11.14)1 1 2 3 5 8 13 21 34 55 89 .#include int fun(int n)if(n=0|n=1) return 1; else return fun(n-1)+fun(n-2);void main()int n,k; printf(請(qǐng)輸入n的值:); scanf(%d,&n); k=fun(n); printf(%d-%d,n,k);例如4:用遞歸算法根據(jù)下列公式求某數(shù)a的平方根:迭代公式為: x=(x0+a/x0)/2#include #include double fun(double a,double x0)double x; x=(x0+a/x0)/2; if(fabs(x-x0)=1e-6) return fun(a,x); return x;void main()double a; printf(請(qǐng)輸入 a的值:); scanf(%lf,&a); printf(%f- %fn,a,fun(a,1.0);例如5:#include void fun(int n,int *s)int f1,f2; if(n=1|n=2) *s=1; else fun(n-1,&f1);fun(n-2,&f2);*s=f1+f2; n=1 x=1n=2 x=1n=3 x=2n=4 x=3n=5 x=5n=6 x=8n=7 x=13.void main() int x; fun(4,&x); printf(x=%dn,x);第三部分:用戶標(biāo)識(shí)符及作用域定義的概念:定義的實(shí)質(zhì)就在內(nèi)存中開(kāi)辟空間的過(guò)程。聲明:介紹變量的所具有的性質(zhì)和功能。* 按變量活動(dòng)的范圍:1 局部變量: 定義:定義在函數(shù)體內(nèi)部或定義在復(fù)合語(yǔ)句體內(nèi)的變量 例如:#inlcude void fun(int x,int y)int c; c=x+y; printf(c=%dn,c);void main()int a=10,b=20; a=a+5; int c=200; c=a+b; printf(c=%dn,c); fun(a,b);printf(a=%d,b=%dn,a,b);- 所有的形式參數(shù)都是局部變量。2 全局變量:外部變量- 定義在函數(shù)體外的變量#include int a=10;void fun()printf(a=%dn,a);int b=20;void main()printf(a=%d,b=%dn,a,b);3當(dāng)全局變量和局部變量同名:例如1:#include int a=100;void fun()int b=20; printf(a=%d,b=%dn,a,b);int b=200;void main()int a=10; printf(a=%d,b=%dn,a,b); fun();例如2:#include void main()int i=1,j=3; printf(%d,i+); int i=0; i+=j*2; printf(%d,%d,i,j); printf(%d,%dn,i,j);1,6,3,2,3*按變量存儲(chǔ)的性質(zhì):1自動(dòng)類定義:被說(shuō)明為auto或沒(méi)有被說(shuō)明的變量 自動(dòng)類的變量在內(nèi)存中占有一個(gè)臨時(shí)空 所有的形參都是自動(dòng)類。2靜態(tài)類 定義: 在內(nèi)存中占有一個(gè)永久的存儲(chǔ)空間 所有的全局變量都是靜態(tài)類的。3對(duì)應(yīng)的說(shuō)明符: 自動(dòng)類:I:自動(dòng)類: auto auto int a; II:寄存器類型 (register) -不能大量定義 - 不能求地址運(yùn)算。 - 靜態(tài)類:I : 靜態(tài)類 static static int a;II :外部類 extern 4靜態(tài)的局部變量:- 靜態(tài)的局部變量的值是在定義的時(shí)候賦予的。如果在定義的時(shí)候,沒(méi)有賦值,編譯系統(tǒng)將默認(rèn)為0- 靜態(tài)的局部變量在內(nèi)存中占有一個(gè)永久的存儲(chǔ)空間。 例如1#include void main()static int a; printf(a=%dn,a);例如2:#include int fun(int a,int b)static int i,m=2; i+=m; m+=i+a+b; return m;vo
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇淮安曙光雙語(yǔ)校2025年中考物理試題仿真試題(二)含解析
- 湖北省孝感市云夢(mèng)縣2024-2025學(xué)年初三普通高校統(tǒng)一招生考試仿真卷(三)生物試題試卷含解析
- 新疆阿克蘇第一師第二中學(xué)2025屆3月初三教學(xué)測(cè)試(一)化學(xué)試題含解析
- 天津商業(yè)大學(xué)《空間創(chuàng)意與設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 河南工業(yè)和信息化職業(yè)學(xué)院《大學(xué)英語(yǔ)基礎(chǔ)課程一》2023-2024學(xué)年第二學(xué)期期末試卷
- 瓶裝水銷售合同風(fēng)險(xiǎn)防范與合規(guī)經(jīng)營(yíng)考核試卷
- 煙草批發(fā)商產(chǎn)品策略考核試卷
- 漁業(yè)捕撈作業(yè)優(yōu)化技術(shù)考核試卷
- 水電站施工安全管理規(guī)范與法規(guī)考核試卷
- 電力系統(tǒng)故障分析與設(shè)備保護(hù)策略考核試卷
- 被執(zhí)行人財(cái)產(chǎn)申報(bào)表
- 小學(xué)部編版六年級(jí)下冊(cè)道德與法治《4、地球-我們的家園》第一課時(shí)說(shuō)課稿
- 人音版六年級(jí)音樂(lè)下冊(cè)(簡(jiǎn)譜)第4課《明天會(huì)更好》教學(xué)設(shè)計(jì)
- 小學(xué)英語(yǔ)牛津上海版5B Unit2 Weather George in four seasons部?jī)?yōu)課件
- 中央空調(diào)(多聯(lián)機(jī))施工方案
- 建筑工人實(shí)名制管理及農(nóng)名工工資支付有關(guān)事項(xiàng)流程圖
- 歡迎上級(jí)領(lǐng)導(dǎo)蒞臨檢查指導(dǎo)
- 信用修復(fù)申請(qǐng)書(shū)
- “十四五”生物質(zhì)能源發(fā)展規(guī)劃
- “育鯤”輪轉(zhuǎn)葉式舵機(jī)工作原理和電氣控制以及故障分析
- 智力七巧板校本課程開(kāi)發(fā)教案
評(píng)論
0/150
提交評(píng)論