全國計算機等級考試二級C語言教程64總復習_第1頁
全國計算機等級考試二級C語言教程64總復習_第2頁
全國計算機等級考試二級C語言教程64總復習_第3頁
全國計算機等級考試二級C語言教程64總復習_第4頁
全國計算機等級考試二級C語言教程64總復習_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2021/4/21C語言總復習(64學時)以考試難度為限2021/4/22一、一、C語言的數(shù)據(jù)表示語言的數(shù)據(jù)表示 1. 1 常量常量和和變量變量 1. 2 表達式表達式 1. 3 數(shù)據(jù)類型數(shù)據(jù)類型 簡單類型、結(jié)構(gòu)類型、指針類型 1.4 輸入、輸出輸入、輸出2021/4/231.1 常量和變量常量和變量 1.常量常量 常量是在程序執(zhí)行中,值不發(fā)生改變的數(shù)據(jù)。其值預先決定,之后不變。有不同的數(shù)據(jù)類型。 (1)常數(shù)(有的稱直接常量、頁面常量) 例如的: 整數(shù):+5 、-3、017(八進制)、0 x1f(16進制) 實數(shù)(浮點數(shù)):3.14 、-1.2E-3 、1E10 單個字符: A,占一個字節(jié) ,

2、轉(zhuǎn)義字符 非法 77 (八進制ASCII碼63,?),78非法 x3f (十六進制ASCII碼63,?) x3g非法 字符串: “A” 后面有0,占兩個字節(jié)E3,2E3.0不合法不是整型量占一個字節(jié)2021/4/24 (2)符號常量 給常量起標識符名字。 C語言的符號常量(用宏定義): #define PI 3.14159265 好處:提高程序易讀性;方便修改常量的值;注意:1.一般用大寫字母。2, #define M 3 不是C語句,后面沒有“;”。3.可以做M+1,不能做M+. (3)地址常量 當數(shù)組在定義時,其變量名為其首地址,是地址常量。 int a10;可以做a+1,不能做a+. 2

3、021/4/251.1 常量和變量常量和變量 2 變量變量 用各種操作來改變值數(shù)據(jù)。 從“名名”和“值值”兩個角度認識變量 (1)變量名 每個變量,要在使用前定義變量的名字,遵循標識符命名規(guī)則。 只能用字母、數(shù)字和下劃線組成。 不能以數(shù)字開頭。 不能用保留字(int,printf,main.)。2021/4/26 變量定義就是申請數(shù)據(jù)的存儲空間,登記數(shù)據(jù)的各種存儲特性。 例如: int m ;2個字節(jié) -215215-1(-3276832767) long n; 4個字節(jié) -231231-1 char ch; 1 個字節(jié) 0255 float x; 4個字節(jié) 3.4 (10-38 1038)

4、double y; 8個字節(jié) 1.7(10-308 10308) 可以用sizeof獲得字長 sizeof(char)=1 sizeof(int)=2 sizeof(double)=82021/4/27 (2)變量的值)變量的值 變量值就是由變量名所指定空間上的存儲數(shù)據(jù)內(nèi)容。即變量的當前值。 數(shù)據(jù)內(nèi)容用語言的操作語句來改變。 賦值語句;鍵盤輸入語句; char chx; int m; /* 變量的定義 */ chx=A; m=12*3; /* 賦值語句 */ scanf(“%d”,&m); /* 鍵盤輸入語句 */ 在程序運行時,將數(shù)據(jù)存入制定內(nèi)存空間。 變量初始化:變量初始化:定義變量時同時

5、確定變量初值。 例如: char chy=a; int weight=2; 2021/4/281.2 C語言的語言的表達式表達式 1 1、算術(shù)表達式、算術(shù)表達式 2 2、關(guān)系表達式、關(guān)系表達式 3 3、邏輯表達式、邏輯表達式 4 4、賦值表達式、賦值表達式 5 5、逗號表達式、逗號表達式 6 6、條件表達式、條件表達式 7 7、其他表達式、其他表達式C語言的語言的表達式表達式:使用規(guī)定的運算符運算符,將常量、變量、函數(shù)(調(diào)用)連結(jié)的一個有意義的式子。 2021/4/291、算術(shù)表達式、算術(shù)表達式 用算術(shù)運算符來表示對數(shù)據(jù)的算術(shù)運算求值過程。 算術(shù)運算符: + - * / % 2/3結(jié)果是0,2

6、%3結(jié)果是2 注意不同類型運算問題:doublelongunsignedint floatchar short高低2021/4/2102 2、關(guān)系表達式、關(guān)系表達式 關(guān)系運算符: = 0 , sin(x)=0.5, (a+b)=(c*d) 注意語法合理與數(shù)學邏輯錯誤問題: 分析:10=a=15 a=9 是假 10=a=1510=a 假 00=15 真所以要寫成10=a&a=152021/4/2113、邏輯表達式 用邏輯表達式來表示對數(shù)據(jù)的邏輯關(guān)系判斷,運算結(jié)果是邏輯值“真”1或者“假”0。 C邏輯運算符包括: ! & | 參加邏輯運算的數(shù)據(jù)必須是邏輯量,可以是邏輯類型的變量、常量,關(guān)系表達式或

7、邏輯表達式。 C語言中,沒有專門的邏輯量,語言中,沒有專門的邏輯量,1是真值,是真值,0是是假值。也認為假值。也認為非零非零的值為真值。的值為真值。 如:int a=3, b=4, c=-5; (1) ! (ab) & ! c | 1) (2) if(a)printf(“n yes”);a,c均按非0(即真)處理2021/4/212邏輯運算規(guī)律 在&(與)表達式中,若&的左端為假, 則不再計算另一端,該表達式值肯定為 0(假)。 在|(或)表達式中,若|的左端為真,則不再計算另一端,表達式的值必定為 1(真)。 nint a=5,b=1nk=a0nk?b?假,后面不算了k=0,b=12021/

8、4/213 判斷閏年的條件是:能被4整除但不能被100整除,或能被400整除。(x4= =0&x100!=0) 水仙花數(shù)是指一個三位正整數(shù),其各位數(shù)字的立方和等于該數(shù)本身 (k*100+m*10+n= =k*k*k+m*m*m+n*n*n) 三角形的基本條件 (a+b)c)&(c+b)a)&(c+a)b) 2021/4/214 4、賦值表達式=,+=,-=,*=,/=,+(單目),- (單目)級別僅高于逗號表達式,右結(jié)合int a=3,c=2,ba=b=c;n*=m+2 相當于 n=n*(m+2)k=i+; 先k=i,再i=i+1k=+i; 先i=i+1,再k=ic賦值給b,b=2b賦值給a,

9、a=22021/4/215 5、條件表達式 e1?e2:e3若e1為真,表達式的值為e2,否則為e3. (- -a=b+)? -a : b +5-1=4 T a=4-a a=3 表達式的值為3a=5,b=44-1=5 F b=6b + b=7表達式的值為6a=4,b=5條件表達式的值的類型為e2,e3二者中類型較高者。如果y=5; y3?-1.0:2 其值為2.02021/4/216 6、逗號表達式 表達式的值等于最后一個表達式的值,運算等級最低! a=5,b=2,c=3 a=7+b+c, a+ a=(7+b+c, a+) a=12a=57、強制類型轉(zhuǎn)換表達式(單目) int m; sqrt(

10、float) m);并沒有改變m的類型和數(shù)值2021/4/217理解記憶運算符表 (高高)(低低)!+,-,等算數(shù)運算符算數(shù)運算符 關(guān)系運算符關(guān)系運算符 邏輯運算符邏輯運算符 & |條件運算符條件運算符 賦值運算符賦值運算符 逗號運算符 右結(jié)合單目運算符賦值運算符2021/4/2181.3 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)據(jù)類型:數(shù)據(jù)類型:在高級語言的數(shù)據(jù)表示機制中,數(shù)據(jù)類型(data tyPe )是個核心概念。簡單類型構(gòu)造類型指針類型整型實型字符型數(shù)組結(jié)構(gòu)體共用體數(shù)值型枚舉型空類型2021/4/2191. 3 數(shù)據(jù)類型數(shù)據(jù)類型(輸入、輸出格式輸入、輸出格式 “ “%d”%d”) 類型名 字節(jié)數(shù) 數(shù)值范圍

11、 int 2 -32768 32767 shortshort 2 -32768 32767 long long 4 -2147483648 2147483647還有無符號整型(輸入、輸出格式輸入、輸出格式 “ “%u”%u”)Unsigned int 2 0 65535Unsigned short 2 0 65535 Unsigned long 4 0 42949672951.簡單類型簡單類型2021/4/220 (2) 實型實型 實型(float )數(shù)據(jù)的值集是實數(shù)集的一個有限子集. -3.4e38, -3.4e-39, 3.4E-38, 3.4E381.簡單類型簡單類型 類型名類型名 字節(jié)

12、數(shù)字節(jié)數(shù) 輸入、輸出格式輸入、輸出格式 有效數(shù)字位有效數(shù)字位 float 4 %f%f 7 doubule 8 %lf%lf 16 long doubule 16 %lf%lf 19不要以為是長整型E38非法2021/4/221n(3) (輸入、輸出格式輸入、輸出格式 “%c”)n ASCII碼,一個字符占1字節(jié);nchar ca; ca=#;n注意轉(zhuǎn)義字符 的使用。 (4)字符串(輸入、輸出格式輸入、輸出格式 “ “%s”%s”) 所謂“字符串字符串”是指若干有效字符的序列。語言字符串可以包括字母、數(shù)字、專用字符、轉(zhuǎn)義字符等。 字符串常量:使用雙引號使用雙引號 China BASIC a+b

13、=c Li-Li 39.4 %dn 解放軍“ 字符型的一維數(shù)組(相當于字符串變量) char st8, str10; strcpy(st,12345); strcpy(str,st); 不能st=“12345”; str=st;2021/4/222 2. 結(jié)構(gòu)類型 “結(jié)構(gòu)”一般可以稱為數(shù)據(jù)元素數(shù)據(jù)元素,在不同的結(jié)構(gòu)類型中,數(shù)據(jù)元素會有特定的名稱。 結(jié)構(gòu)類型的數(shù)據(jù)由更加基本的成分組成。 這些成分稱為“數(shù)據(jù)項”,結(jié)構(gòu)的子成員子成員。1. 3 數(shù)據(jù)類型數(shù)據(jù)類型2021/4/223 (1) 數(shù)組 A0 A1 A2 A3 A4 A5 A6 A7 10 20 30 40 50 60 70 80 一個數(shù)組(

14、array )是由相同類型的若干數(shù)組元素構(gòu)成的有限序列。 C 語言的數(shù)定義 : int B8 , A8 ; char C10; 2. 結(jié)構(gòu)類型2021/4/224例 日期類型的定義(2) 結(jié)構(gòu)體 C語言中實現(xiàn): struct Date int month ; /*月*/ int day; /*日*/ int year; /*年*/ ; struct Date myd=12,16, 1978; 系統(tǒng)分配給它的內(nèi)存是各成員所需內(nèi)存量的總和。本例是6. 2021/4/225 (1)指針:)指針:變量名的在內(nèi)存中的存儲地址。 (2)指針變量)指針變量 int i=12, *p; P=&i; 把存放變量

15、i 的地址的變量p 稱作指針變量。 指針變量的存放內(nèi)容是數(shù)據(jù)的地址。3. 指針類型 (3)指針引用變量)指針引用變量 指針變量可以指向各種不同的數(shù)據(jù)類型,因此指針變量也要有不同的指針類型。如: int m, *p; float x,*q; int a,*r m=12; p=&m; x=3.14; q=&x; r=a;注意:是否用&2021/4/2261.4 輸入、輸出輸入、輸出 輸出: printf(“.”, .) %d, %6d, %ld %c, %s %f , %10.2f , %lf, %20.8lf n=3; printf(“n %d,%d,%d”, n,+n,n+); 計算從右到左,

16、輸出從左到右。 %s是輸出以指定首地址到第一個0或空格之間的字符串。char a=“abcd efg”,*p=a;printf(“%s”,*+p); bcd5,5,32021/4/2271.4 輸入、輸出輸入、輸出 輸入: scanf(“.”, .) %d, %ld 對應int long %c, %s 對應char char str %f , %lf 對應flaot double 常見錯誤 int a,b;char d,e20; scanf(%d,%fn”,&a,&b); scanf(%d,%f”,a,b); scanf(%7.2f,&a); scanf(%s,&e); scanf(%c,d)

17、;2021/4/228 (1)表達式語句表達式語句 (2)流程控制語句流程控制語句 (3)復合語句復合語句C語語言言語語句句 指令語句指令語句 非指令語句非指令語句 數(shù)據(jù)定義語句數(shù)據(jù)定義語句 float x; int m; 編譯預處理編譯預處理宏定義 #define PI 3.14159文件包含處理 #include 二、C語言的程序結(jié)構(gòu)與相關(guān)語句2021/4/229表達式語句 1. 表達式語句的組成: 由一個表達式后接一個分號組成的由一個表達式后接一個分號組成的。 i=i+1 (是表達式,沒有構(gòu)成語句) i=i+1; (是語句) x+y; (是合法語句,但沒有實際意義) 表達式語句的分類:

18、賦值語句: i=1; c=getchar(); 函數(shù)調(diào)用語句: printf(n Hello,world !); 空語句。其形式為: 逗號表達式語句: +a,-b;2021/4/230 完成一定的控制功能。9種控制語句: 判斷語句判斷語句 條件判斷語句 if()else 多分支選擇語句 switch()case 循環(huán)語句循環(huán)語句 循環(huán)次數(shù)控制語句 for() 先判斷后執(zhí)行循環(huán)控制語句while() 先執(zhí)行后判斷循環(huán)控制語句dowhile() 轉(zhuǎn)移控制語句轉(zhuǎn)移控制語句 直接轉(zhuǎn)移語句 goto 終止語句 break(用在循環(huán)結(jié)構(gòu)、swicth) 跳轉(zhuǎn)語句 continue (僅用在循環(huán)結(jié)構(gòu)) 返回

19、語句 return流程控制語句流程控制語句2021/4/231復合語句復合語句 一組語句括在一對花括號一對花括號之中,稱復合語句復合語句。 c=getchar(); putchar(c); 注意,一個復合語句的后花括號之后一個復合語句的后花括號之后不應再寫分號不應再寫分號。 在語法上是一個整體,相當于一個語句。 凡是能夠使用簡單語句的地方,都可以使用復合語句凡是能夠使用簡單語句的地方,都可以使用復合語句。一個復合語句中又可以包含另一個或多個復合語句。 2021/4/232二、C語言的程序結(jié)構(gòu)與相關(guān)語句 程序的三種基本結(jié)構(gòu): 順序結(jié)構(gòu)順序結(jié)構(gòu) 選擇結(jié)構(gòu)選擇結(jié)構(gòu) if()else switch()

20、case 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) for().; while(); do ; while()2021/4/233選擇結(jié)構(gòu) 單分支結(jié)構(gòu) if(a=b)printf(“yes”); 雙分支結(jié)構(gòu) if(a=b) printf(“yes”); else printf(“no”); 多分支結(jié)構(gòu) switch_case 2021/4/234多分支選擇語句 switch(表達式)(表達式) case 常量表達式常量表達式1: 語句序列語句序列1; break;case 常量表達式常量表達式2: 語句序列語句序列2; break;case 常量表達式常量表達式n: 語句序列語句序列n; break;default:

21、語句序列:語句序列n+1; 根據(jù)“表達式”的值從上至下去尋找與表達式的值相匹配的“case常量表達式”,執(zhí)行一個分支后,再執(zhí)行下一個分支,直到break結(jié)束,然后執(zhí)行switch結(jié)構(gòu)后面的程序。 找不到匹配的入口標號時,執(zhí)行“語句序列n+1”,然后結(jié)束。順序向下執(zhí)行程序。2021/4/235main() int a=1,b=1;switch (a)case 1: switch (b) case 0:printf(“$”);break; case 1:printf(“#”);break; case 2:printf(“*”); case 2:printf(“”); case 3:printf(“

22、”); break; case 4:printf(“&”);a=1case 1:swtch(1)b=1printf #,break跳出switch(b)結(jié)構(gòu)進入switch(a)結(jié)構(gòu)case 2:printf case 2:printf break 跳出switch(a)結(jié)構(gòu)# 2021/4/236for,while,do-while三種結(jié)構(gòu) 循環(huán)變量初始化,繼續(xù)循環(huán)條件,改變循環(huán)變量是不可缺少的三個環(huán)節(jié)。 for常用于循環(huán)次數(shù)已知的問題中。括號中的兩個“;”不可省。 while與do-while常用于循環(huán)次數(shù)未知的問題中。2021/4/237注意 在for和while語句之后一般沒有分號 有

23、分號表示循環(huán)體就是分號之前的內(nèi)容(空循環(huán)體) while (i 100);i+; for (i = 0; i 100; i+);printf(%d, i); if,swtich,while,for后面的語句只能是一句,因此,多句時別忘了。2021/4/238在while( e )和for( ;e ;)中的e是循環(huán)繼續(xù)的條件,不能寫其它條件!如果缺省,就是死循環(huán)!在if(e),while( e )和for( ;e ;)中e的值是邏輯值(0或非0)e一般是關(guān)系表達式,邏輯表達式或變量。if(x=1)if(x=1)main() int i=1; doi-;while(i+); printf(“%d”

24、,i-); A) -1 B) 0 C) 1 D)陷入死循環(huán)i=1i-,i=0while(i)終止循環(huán)i+,i=1輸出i=1i-,i=02021/4/239break,coutinue break只能用于switch和循環(huán)語句中,作用提前終止本層次switch和循環(huán)。 coutinue是跳過循環(huán)體內(nèi)尚未執(zhí)行的語句,接著執(zhí)行下次循環(huán)。2021/4/240常用的循環(huán)算法 求素數(shù)、水仙花數(shù)、最小公倍數(shù)、最大公約數(shù)、分解多位數(shù)的數(shù)字,累加,累乘,分解質(zhì)因數(shù)等。 各種有規(guī)律的圖案。while( m) k = m%10 ; /*求最低位的數(shù)字*/ m=m/10; /*除去最低位的數(shù)字*/ 分解多位數(shù)的數(shù)字2

25、021/4/241判斷素數(shù)main() int i,x,flag=0; scanf(“%d”,&x); for(i=2;i0; -x ) y *= x; return(y);main() long y; for ( y=1; x0; -x ) y *= x; printf(“%ld”,y); main( ) int m, n; long cmn, facto( ); scanf (%d%d, &m, &n); cmn = facto(m) / (facto(n) * facto(m-n); printf (%ldn, cmn); 求求C(m,n) = m!/(n!*(m-n)!) 2021/4

26、/243 數(shù)組的定義類型標識符 數(shù)組名常量表達式 錯誤的定義是: 或 int n; int n=10; scanf(%d,&n); int an; int an; 定義int a5時, a0,a1.=?隨機數(shù)!只有int a5=3后,后面幾項自動賦0三三 數(shù)組數(shù)組2021/4/244數(shù)組的初始化 合法:int a=1,2,3,4,5; int i 3=1,2,3,4,5,6; int a5=1,2,3; char a4=“boy” char a3=b,o,y不合法: int a5=,2, ,4,5; int i2 =1,2,3,4,5,6; int a5= ;char a4=boy2021/4

27、/245分別用三種方法(數(shù)組元素下標法、數(shù)組名地址法、指針變量法)訪問數(shù)組元素。 #include void main() int a5=1,3,5,7,9, i, *p; for(i=0;i5;i+)printf(%d , ai ); /*下標法*/ printf(n); for(i=0;i5;i+)printf(%d , *(a+i) ); /*地址法*/ printf(n); for(p=a;pa+5;p+)printf(%d , *p ); /*指針變量*/ 2021/4/246數(shù)組的操作往往用循環(huán)結(jié)構(gòu).數(shù)值數(shù)組#define M 10int aM;for(i=0;iM;i+)字符數(shù)組

28、#define M 10char aM;for(i=0;ai!=0;i+)數(shù)值數(shù)組倒序#define M 10main()int i,j,aM;for(i=0;iM;i+) scanf(“%d”,ai);for(i=0,j=M;ij;i+,i-) 交換ai,aj字符數(shù)組倒序main()int i,j;char a50;gets(a);for(i=0,j=strlen(a);ij;i+,i-) 交換ai,aj2021/4/247用函數(shù)實現(xiàn)倒序數(shù)值數(shù)組void inv(int x,int n);#define M 10main()int i,j,aM;for(i=0;iM;i+) scanf(“%

29、d”,ai);inv(a,M);for(i=0;iM;i+) printf(“%d”,ai);字符數(shù)組void inv(char x)main()int i,j;char a50;gets(a);inv(a);puts(a);多一個參多一個參數(shù),表示數(shù),表示元素個數(shù)元素個數(shù)可以整可以整體輸入,體輸入,輸出輸出必須單必須單個輸入,個輸入,輸出輸出2021/4/248數(shù)值數(shù)組void inv(int x,int m) int i,j,k; j=m; for(i=0;ij;i+,i-) k=xi; xi=xj; xj=k;字符數(shù)組void inv(int x ) int i,j,k; j=strle

30、n(x); for(i=0;ij;i+,i-) k=xi; xi=xj; xj=k;2021/4/249main( ) int i,j,s=0,a33; for ( i=0; i3; i+ ) for ( j=0; j3; j+ ) scanf(%d,&aij); for ( i=0; i3; i+ ) for ( j=0; j3; j+ ) if ( i=j | i+j=2 ) s+=aij; printf(s=%dn,s);主對角線i=j副對角線i+j=22021/4/250累加(積)# define M 10main() int i,aM,s=0; for (i=0;iM;i+) sca

31、nf(“%d”,&ai); for (i=0;iM;i+) s+=ai; printf(“s=%d”,s);# define M 10main() int i,aM,s=1; for (i=0;iM;i+) scanf(“%d”,&ai); for (i=0;iM;i+) s*=ai; printf(“s=%d”,s);2021/4/251求最大(小)值#define M 30main() int i,k,k_i,aM; for(i=0;iM;i+) scanf(“%d”,&ai); k=a0; k_i=0; for(i=1;iM;i+) if(kai) k=ai; k_i=i; printf

32、(“max=%d,maxi=%d”,k, k_i);最小值 if(kai)最大值2021/4/252字符數(shù)組char str50;int i;for (i=0;stri!=0,i+)構(gòu)造新的字符數(shù)組(刪除,插入,復制,連接,倒序)。 1.用和不用字符串函數(shù)實現(xiàn)上述功能。 2.用指針實現(xiàn)。 3.必須注意最后一項一定是: stri =0;或 *p=0;2021/4/253二維字符數(shù)組二維數(shù)組在內(nèi)存中的排列順序是“按行優(yōu)先存放”二維數(shù)組amn可以視為由n個一維數(shù)組am組成的。二維字符數(shù)組中m由其中最長的字符串決定。char stu56= “Tom,“Anne,“Mary,“Peter; 其中stu0

33、= “Tom“ stu1=“Anne2021/4/254字符串函數(shù) 要用#include 字符串拷貝函數(shù)strcpy 字符串連接函數(shù)strcat 字符串比較函數(shù)strcmp 測字符串長度函數(shù)strlen 函數(shù)函數(shù)strlen的值為的值為0之前的全部字符個數(shù)之前的全部字符個數(shù).它它與數(shù)組長度不是一個概念與數(shù)組長度不是一個概念.char s6=H,o,w,0,o,kstrlen (s) =32021/4/255字符串函數(shù)的應用字符串賦值字符串比較s1=s2strcpy(s1,s2)s1=s2strcmp(s1,s2)=0s1s2strcmp(s1,s2)0s1s2strcmp(s1,s2)0202

34、1/4/256一 函數(shù)定義的形式: 存儲類型存儲類型 數(shù)據(jù)類型數(shù)據(jù)類型 函數(shù)名函數(shù)名(形式參數(shù)表形式參數(shù)表) 變量數(shù)據(jù)定義語句序列;變量數(shù)據(jù)定義語句序列; 可執(zhí)行語句序列;可執(zhí)行語句序列; int fun(int x,int y) int z; z=x+y; return z;函函數(shù)數(shù)首首部部 函函數(shù)數(shù)體體四四 函數(shù)函數(shù)2021/4/257非非void型型int fun(int x,int y);main() int a,b; scanf(“%d,%d”,&a,&b); printf(“%d”,fun(a,b);int fun(int x,int y) int z; z=x+y; return

35、 z;作為框架記住作為框架記住void型型void fun(int x,int y);main() int a,b; scanf(“%d,%d”,&a,&b); fun(a,b); printf(“%d,%d”,a,b);void fun(int x,int y) int z; z=x;x=y;y=z; printf(“%d,%d”,x,y);2021/4/258填main()char fun(int x,int y) int z; z=x+y; return z;main()int a,b; 函數(shù)實參函數(shù)實參char c; 函數(shù)返回值函數(shù)返回值scanf(“%d,%d”, a,b); 實參賦

36、值實參賦值c=fun(a,b); 調(diào)用函數(shù)調(diào)用函數(shù)printf(“%c”, c); 輸出結(jié)果輸出結(jié)果注意變量數(shù)據(jù)類型的對應注意變量數(shù)據(jù)類型的對應int %d long %ldfloat %f double %lfchar %c或或%s2021/4/259遞歸調(diào)用的概念遞歸調(diào)用的概念 在語言中,一個函數(shù)直接或間接地調(diào)在語言中,一個函數(shù)直接或間接地調(diào)用自身,便構(gòu)成了函數(shù)的遞歸調(diào)用。用自身,便構(gòu)成了函數(shù)的遞歸調(diào)用。 前者為直接遞歸調(diào)用前者為直接遞歸調(diào)用,后者稱間接遞歸調(diào)用。后者稱間接遞歸調(diào)用。計算n!的函數(shù)rfact() long fac(int n) long p; if (n=0 |n=1) p

37、=1; else p= n*fac(n-1); /*自己調(diào)自己*/ return p; void main() printf(“%ld”, fac(5); 記住遞歸調(diào)用的框架記住遞歸調(diào)用的框架2021/4/260數(shù)組名作函數(shù)實參void fun(int a ,int n);main() int arr10,i; for(i=0;i10;i+) scanf(“%d”,&arri); fun(arr,10); for(i=0;i10;i+) printf(“%d”,arri);2021/4/261main( ) int i,a=2; for(i=1;i=5;i+) f( i ); printf(

38、“%dn”,a); f( j ) int j; static int a=100; auto k=1; +k; printf( “%d+%d+%d=%dn”,a,k,j,a+k+j); a+=10; 函數(shù)調(diào)用函數(shù)調(diào)用函數(shù)定義函數(shù)定義函數(shù)內(nèi)定義函數(shù)內(nèi)定義,值不保留。值不保留。運行結(jié)果:運行結(jié)果:100+2+1=103110+2+2=114120+2+3=125130+2+4=136140+2+5=1472兩個函數(shù)變兩個函數(shù)變量同名量同名,互互不影響。不影響。靜態(tài)變量靜態(tài)變量2021/4/262 五五 指針指針(1)指針指針: 某變量的某變量的地址地址值稱為該變量的指針稱為該變量的指針。(2)指針

39、變量:指針變量: 指針變量是存放普通變量地址的變量。 指針變量指向這個普通變量。1112ab地址1010101210101012pq地址100220042006指針變量指針變量 整型變量整型變量2021/4/263指針變量的定義 數(shù)據(jù)類型數(shù)據(jù)類型 *指針變量名指針變量名1; double *pd,d1,d2; /*pd為指向double型變量的指針*/ char *pc,c1,c2; /*pc為指向char型變量的指針*/ float *pf,f1,f2; /*pf為指向float型變量的指針*/ 定義指針變量必須在變量名前加指針說明符“*”。指針變量名本身不含“*”號。 定義指針變量后,系統(tǒng)為這個指針變量也分配一個存儲單元,這個存貯單元一般都占有固定的字節(jié)(如16位計算機是2個字節(jié))。該存貯單元用于存放普通變量的地址。2021/4/264指針變量的初始化 char *str=“abcdef”;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論