全國計(jì)算機(jī)等級考試二級C程序基礎(chǔ)培訓(xùn)課件



《全國計(jì)算機(jī)等級考試二級C程序基礎(chǔ)培訓(xùn)課件》由會員分享,可在線閱讀,更多相關(guān)《全國計(jì)算機(jī)等級考試二級C程序基礎(chǔ)培訓(xùn)課件(267頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,,,0,,,01 十一月 2024,1,全國計(jì)算機(jī)等級考試二級C程序基礎(chǔ)培訓(xùn),二級C語言考試介紹,考核內(nèi)容:二級定位為程序員,考核內(nèi)容包括公共基礎(chǔ)知識和程序設(shè)計(jì)。所有科目對基礎(chǔ)知識作統(tǒng)一要求,使用統(tǒng)一的公共基礎(chǔ)知識考試大綱和教程。二級公共基礎(chǔ)知識在各科筆試中的分值比重為30%(30分)。程序設(shè)計(jì)部分的比重為70%(70分),主要考查考生對程序設(shè)計(jì)語言使用和編程調(diào)試等基本能力。,二級C語言考試介紹,考試形式:二級所有科目的考試包括筆試和上機(jī)考試兩部分。二級,C,筆試時(shí)間為90分鐘,上機(jī)時(shí)間改為90分鐘。,,二級,
2、C,上機(jī)應(yīng)用軟件為,Visual C++6.0,二級C語言考試介紹,考試成績劃分為優(yōu)秀、良好、及格和不及格四個(gè)等第成績,筆試或上機(jī)考試成績只有一門及格的,下次考試及格的一門可以免考,兩部分考試均及格者,由教育部考試中心頒發(fā)統(tǒng)一印制的合格證書。,二級C語言培訓(xùn)介紹,,實(shí)實(shí)在在學(xué)知識,順順利利過考試,如何學(xué)二級C語言,多看書,多實(shí)踐驗(yàn)證,多讀(背)程序,,第一章 程序設(shè)計(jì)基本概念,什么是,C,程序?,高級語言 機(jī)器語言,源程序 目標(biāo)程序,編譯程序,第一章 程序設(shè)計(jì)基本概念,,C,語言編譯“三部曲”,,C,源程序
3、 目標(biāo)文件 可執(zhí)行文件,.,C .obj .exe,編譯,連接,第一章 程序設(shè)計(jì)基本概念,程序設(shè)計(jì)過程,確定數(shù)據(jù)結(jié)構(gòu)(輸入輸出),確定算法(解決問題的方法和步驟),編碼。(算法代碼化),調(diào)試程序。(改錯(cuò)和修正),整理和寫文檔。,,第一章 程序設(shè)計(jì)基本概念,結(jié)構(gòu)化程序的三種結(jié)構(gòu),順序結(jié)構(gòu)(先后順序執(zhí)行),選擇結(jié)構(gòu)(執(zhí)行不同分支的語句),循環(huán)結(jié)構(gòu)(重復(fù)執(zhí)行多次或一次不執(zhí)行,),,,,第一章 程序設(shè)計(jì)基本概念,模塊化結(jié)構(gòu),由一個(gè)個(gè)功能模塊構(gòu)成的程序結(jié)構(gòu)為模塊化結(jié)構(gòu)。,,,第二章 C程序設(shè)計(jì)的初步知識,,C,語言示例一,輸出一行信息:
4、,Wellcome to Sinree!,程序名為,sinree_c1.c。,#include /*,命令行,表示文件包含*/,main() /*,主函數(shù)*/,{,printf(“Wellcome to Sinree!\n"); /*,輸出信息*/,},程序輸出結(jié)果,,,第二章 C程序設(shè)計(jì)的初步知識,,C,語言示例二,輸入兩個(gè)整數(shù),輸出它們的和,。,程序名為,sinree_c2.c。,#include /*,文件包含*/,main() /*,主函數(shù)*/,{,int a,b,c; /*,聲明定義變量,a,b,和,c*/,scanf("%d%d",
5、 /*,輸入變量,a,和,b,的值*/,,c=a+b; /*,計(jì)算,c,等于,a,與,b,的和值*/,,printf("c=%d\n",c); /*,輸出變量,c,的值*/,},運(yùn)行程序輸入:,90,<,CR>,7,,程序結(jié)果:,第二章 C程序設(shè)計(jì)的初步知識,C,語言示例三,輸入兩個(gè)整數(shù),通過調(diào)用函數(shù)計(jì)算它們的和,然后輸出和值,。,程序名為,sinree_c3.c。,#include "stdio.h" /*,文件包含*/,int sum(int x,int y) /*,定義,sum,函數(shù)*/,{,int z; /*,聲明定義變量,z*/,
6、z=x+y; /*,計(jì)算,z,等于,x,與,y,的和值*/,,return (z); /*,將,z,的值返回,通過,sum,帶回調(diào)用處*/,},main() /*,主函數(shù)*/,{,int a,b,c; /*,聲明定義變量,a,b,和,c*/,scanf("%d%d", /*,輸入變量,a,和,b,的值*/,,c=sum(a,b); /*,調(diào)用,sum,函數(shù),將得到的值賦給,c*/,printf("c=%d\n",c); /*,輸出變量,c,的值*/,},運(yùn)行程序輸入:,90 7,<,CR>,程序結(jié)果,C=97,第二章 C程序設(shè)計(jì)的初步知識,VC++ 6.0,編輯環(huán)境,
7、,,編輯區(qū),第二章 C程序設(shè)計(jì)的初步知識,VC++ 6.0,編輯環(huán)境,啟動(dòng),Visual C++ 6.0,環(huán)境,編輯源程序文件,編譯,連接,執(zhí)行,第二章 C程序設(shè)計(jì)的初步知識,VC++ 6.0,編輯環(huán)境,,,,,編譯,Ctrl+F7,連接,F7,運(yùn)行,Ctrl+F5,第二章 C程序設(shè)計(jì)的初步知識,C,程序的構(gòu)成和格式,,,,任何函數(shù)(包括主函數(shù),main()),都是由函數(shù)說明和函數(shù)體兩部分組成。其一般結(jié)構(gòu)如下:,[函數(shù)類型] 函數(shù)名(函數(shù)參數(shù)表),,/*函數(shù)說明部分*/,,{ 說明語句部分;,,/*函數(shù)體部分*/,,執(zhí)行語句部分;,},,第二章 C程序設(shè)計(jì)的初步知識,C,程序的構(gòu)成和格
8、式,,C,語言是由函數(shù)組成的,一個(gè),C,源程序可由一個(gè),main,函數(shù)和若干個(gè)其他函數(shù)組成,其中必須,有一個(gè)且只能有一個(gè),main,函數(shù),。,,C,程序總是從,main,函數(shù)開始執(zhí)行。,,,,,第二章 C程序設(shè)計(jì)的初步知識,C,程序的構(gòu)成和格式,,C,程序語句和數(shù)據(jù)定義必須以,分號“;”結(jié)束,。,,C,語言中,分號是程序語句的結(jié)束標(biāo)志,也是,C,語句的必要組成部分。,,,第二章 C程序設(shè)計(jì)的初步知識,C,程序的構(gòu)成和格式,C,語言嚴(yán)格區(qū)分大小寫。,如變量,a,和變量,A,系統(tǒng)認(rèn)定為兩個(gè)不同的變量。,,,第二章 C程序設(shè)計(jì)的初步知識,C,程序的構(gòu)成和格式,C,語言數(shù)據(jù)輸入和輸出是由,庫函數(shù)
9、,實(shí)現(xiàn)的。,,C,語言本身沒有輸入輸出語句。輸入和輸入操作是由庫函數(shù),scanf,和,printf,等函數(shù)來實(shí)現(xiàn)的。,所以一般,C,程序都要使用命令行語句 #,include ,,注意:命令行以#開頭,行尾不能加 ; 號,,第二章 C程序設(shè)計(jì)的初步知識,C,程序的構(gòu)成和格式,C,語言用,/*注釋內(nèi)容*/,形式進(jìn)行程序注釋,在“,/*,”和“,*/,”之間的所有字符都為注釋符,,C,系統(tǒng)不對注釋符進(jìn)行編譯。(另外可以用,//,用于單行注釋),注意:注釋不能嵌套使用。如/* /*…*/*/,,,第二章 C程序設(shè)計(jì)的初步知識,C,程序書寫格式建議,1.,C,程序書寫格式自由。,,對于短語句可以多
10、條語句書寫在同一行,也可以將長語句分寫在多行。但需要注意,分行時(shí)不能將一個(gè)單詞分開,也不能將雙引號引起來的字符串分開。我們提倡,一行一條語句,的風(fēng)格。,2.,C,程序書寫采用縮進(jìn)格式。,根據(jù)語句的從屬關(guān)系,程序書寫時(shí)采用縮進(jìn)格式,使程序語句的層次結(jié)構(gòu)清晰,提高程序的可讀性。同一層次語句要左對齊,不同層次的語句要縮進(jìn)若干個(gè)字符,這樣程序?qū)哟吻宄?,便于閱讀和理解。,,3.程序中適當(dāng)使用注釋信息。,在書寫程序時(shí),適當(dāng)?shù)丶尤胱⑨屚瑯涌稍黾映绦虻目勺x性。,,,,第二章 C程序設(shè)計(jì)的初步知識,C,程序標(biāo)識符,,C,語言中 ,符號的命名必須遵守一定的規(guī)則,按此規(guī)則命名的符號稱為標(biāo)識符。合法的標(biāo)識符命名規(guī)則
11、為:,標(biāo)識符可以由字母、數(shù)字和下劃線組成,并且第一個(gè)字符必須為字母或下劃線。,[提醒:,c,語言標(biāo)識符中大寫字母和小寫字母被認(rèn)為是兩個(gè),不同,的字符],第二章 C程序設(shè)計(jì)的初步知識,C,程序,標(biāo)識符分類,,,關(guān)鍵字,(由,C,語言預(yù)先規(guī)定的,見附錄4),如:,int,double,,預(yù)定義標(biāo)識符,(預(yù)先定義且具有特殊含義),如,printf,define,,用戶標(biāo)識符,(見名知義),用來給變量、函數(shù)、數(shù)組等命名。,,,第二章 C程序設(shè)計(jì)的初步知識,C,程序常量和變量,,關(guān)于常量、變量及數(shù)據(jù)類型說明的程序?qū)嵗?程序名為,sinree_c3.c。,#include ,main(),{ in
12、t a=3; /*,定義整型變量,a,并賦予常量值3 */,,short r=6; /*,定義短整型變量,r,并賦予常量值6*/,,char c='a'; /*,定義字符變量,c,并賦予字符常量值',a' */,float pi=3.14; /*,定義單精度實(shí)型變量,pi,并賦予實(shí)型常量值3.14 */,,double s; /*,定義雙精度實(shí)型變量,s */,s=pi*r*r; /*,將,pi*r*r,值賦給,s */,printf("int:%d,short:%d,char:%d,float:%d,double:%d\n",sizeof(a),,s
13、izeof(r),sizeof(c),sizeof(pi),sizeof(s));,/*,輸出各變量占內(nèi)存的字節(jié)數(shù) */,,printf("a=%d,r=%d,c=%c,pi=%f,s=%lf\n",a,r,c,pi,s);,/*,輸出各變量的值 */,},第二章 C程序設(shè)計(jì)的初步知識,常量 :在程序運(yùn)行過程中,其值不能改變的量。,根據(jù)數(shù)據(jù)類型可以分為,數(shù)值型,(有正、負(fù)之分),【,整型常量,(不帶小數(shù)點(diǎn))、,實(shí)型常量,(必須用小數(shù)點(diǎn))】、,字符常量,(如‘,a’、’d’,)和,字符串,(“,ncre”、”beijing”),常量。,,第二章 C程序設(shè)計(jì)的初步知識,符號常量,#,inclu
14、de ,main(),{,double r,s,l;,r=5.0;,s=,3.14,*r*r;,l=2*,3.14,*r;,printf("s=%f,l=%f\n",s,l);,},,符號常量,,#include ,#define,PI 3.14,main(),{,double r,s,l;,r=5.0;,s=,PI,*r*r;,l=2*,PI,*r;,printf("s=%f,l=%f\n",s,l);,,},第二章 C程序設(shè)計(jì)的初步知識,符號常量,用#,define,命令行(,不是語句,,所以后面不能加分號)定義一個(gè)字符(通常用大寫字母)代表一個(gè)常量 。,#define,PI 3.14,
15、,第二章 C程序設(shè)計(jì)的初步知識,變量: 在程序運(yùn)行過程中,值可以改變的量,。,變量實(shí)質(zhì)上代表了內(nèi)存中的某個(gè)存儲單元。,變量必須先定義后使用。,,,,第二章 C程序設(shè)計(jì)的初步知識,整型數(shù),十進(jìn)制: 0 1 2 3 4 5 6 7 8 9,八進(jìn)制: 0 1 2 3 4 5 6 7,,c,程序中八進(jìn)制開頭,加0,十六進(jìn)制:0 1 2 3 4 5 6 7 8 9,a b c d e f,c,程序中十六進(jìn)制開頭,加 0,x,,,,第二章 C程序設(shè)計(jì)的初步知識,整型常量,#include ,main (),{,int a=12;,printf("a=,%d,,a=,%o,,a=,%#o,,a=,%x
16、,,a=,%#x,\n",a,a,a,a,a);,},,,,第二章 C程序設(shè)計(jì)的初步知識,整型變量,,基本型: 用,int,關(guān)鍵字進(jìn)行定義,,int k;,,一個(gè)定義語句用一個(gè);結(jié)束,多個(gè)變量用,隔開,,int k,m,n;,(,僅開辟存儲單元,不存放初值,此時(shí)變量值無意義),變量初始化:,int m=1,n=2,k=3;,,,,第二章 C程序設(shè)計(jì)的初步知識,整型數(shù)據(jù)分類,,,短整型:,short [int],,長整型:,int,或,long [int],,無符號型:,unsigned,,在,vc,6.0中整型常量后面加一個(gè)字母,l,或,L,,在無符號整數(shù)常量后加,u,或,U,,若長整型
17、無符號可以加,lu,或,LU,數(shù)據(jù)類型名,,說明,,Visual C++ 6.0,環(huán)境,,Turbo C2.0,環(huán)境,,字節(jié),,取值范圍,,字節(jié),,取值范圍,,short [int],,短整型,,2,,-32768~32767,,2,,-32768~32767,,signed short [int],,帶符號短整型,,2,,-32768~32767,,2,,-32768~32767,,unsigned short [int],,無符號短整型,,2,,0~65535,,2,,0~65535,,int,整型,4,,-2147483648~2147483647,2,,-32768~32767,sig
18、ned [int],,帶符號整型,,4,,-2147483648~2147483647,,2,,-32768~32767,,unsigned [int],,無符號整型,,4,,0~4294967295,,2,,0~65535,,long [int],,長整型,,4,,-2147483648~2147483647,,4,,-2147483648~2147483647,,signed long [int],,帶符號長整型,,4,,-2147483648~2147483647,,4,,-2147483648~2147483647,,unsigned long [int],,無符號長整型,,4,,0~
19、4294967295,,4,,0~4294967295,,,,,第二章 C程序設(shè)計(jì)的初步知識,整數(shù)在內(nèi)存中的存儲形式,,一個(gè)字節(jié)中的最右邊一位稱為最低位;,一個(gè)字節(jié)中的最左邊一位稱為最高位;,對于一個(gè)有符號整數(shù),最高位用來存放整數(shù)的符號,稱為符號位。若是正整數(shù),最高位放置0,若是負(fù)整數(shù),最高位放置1。,,第二章 C程序設(shè)計(jì)的初步知識,整數(shù)在內(nèi)存中的存儲形式,,正整數(shù): 原碼表示。,負(fù)整數(shù): 補(bǔ)碼表示。(取反加1),二進(jìn)制轉(zhuǎn)十進(jìn)制 為 取反減1,正整數(shù),5,在內(nèi)存中的二進(jìn)制碼為:,,0000000000000101,(原碼),最大正整數(shù),0111111111111111,-,5,的二進(jìn)制,1
20、0000101,,其反,碼:,11111010,,補(bǔ)碼:,11111011,,第二章 C程序設(shè)計(jì)的初步知識,實(shí)型數(shù)據(jù),小數(shù)形式:由數(shù)字和小數(shù)點(diǎn)組成的一種實(shí)數(shù)表示形式。(必須有小數(shù)點(diǎn)),指數(shù)形式:以“,e”,或“,E”,跟一個(gè)整數(shù)來表示以10為底的冪, “,e”,或“,E”,之前必須有數(shù)字,且“,e”,或“,E”,后面的指數(shù)必須為整數(shù)。( “,e”,或“,E”,的前后以及數(shù)字之間無空格),,,,第二章 C程序設(shè)計(jì)的初步知識,實(shí)型數(shù)據(jù),單精度,float 4,個(gè)字節(jié),,雙精度,double 8,個(gè)字節(jié),,,,,第二章 C程序設(shè)計(jì)的初步知識,,算術(shù)表達(dá)式,,基本算術(shù)表達(dá)式:,,+、-、
21、*、/、%,(%運(yùn)算對象為整型),注意:,+、-可以看做單目,也可看做雙目運(yùn)算符號。,雙目運(yùn)算符兩邊運(yùn)算數(shù)的類型一致,則所得結(jié)果的類型與運(yùn)算數(shù)的類型一致。如:1.0/2.0=0.5 ?=0;,若不一致,自動(dòng)進(jìn)行類型轉(zhuǎn)換,轉(zhuǎn)換的原則為“就大”,所有實(shí)型數(shù)運(yùn)算都以雙精度方式進(jìn)行。,,第二章 C程序設(shè)計(jì)的初步知識,運(yùn)算符的優(yōu)先級,,單目運(yùn)算符“+”和“-”的結(jié)合性是從右到左。,在算術(shù)表達(dá)式中,可以使用多層圓括號,但左右括號必須配對。,若包含不同優(yōu)先級的運(yùn)算符,則按運(yùn)算符的優(yōu)先級由高到低進(jìn)行,若相同,則按結(jié)合方向進(jìn)行。,,第二章 C程序設(shè)計(jì)的初步知識,強(qiáng)制類型轉(zhuǎn)換表達(dá)式,(類型名)(表達(dá)式),如
22、 (,int)3.234,,,第二章 C程序設(shè)計(jì)的初步知識,賦值表達(dá)式,“=”,賦值運(yùn)算符,賦值運(yùn)算的功能是先求出右邊表達(dá)式的值,然后把此值賦給 賦值號左邊的變量。,注意: 賦值運(yùn)算符優(yōu)先級別僅高于逗號運(yùn)算符;且結(jié)合性為自右向左;賦值表達(dá)式的值為最左邊變量所得的新值。,第二章 C程序設(shè)計(jì)的初步知識,復(fù)合賦值表達(dá)式,+=,n+=2 n=n+2,-=,n-=2 n=n-2,*=,n*=2 n=n*2,/=,n/=2 n=n/2,%=,n%=2 n=n%2,,第二章 C程序設(shè)計(jì)的初步知識,復(fù)合運(yùn)算中的類型轉(zhuǎn)換,,兩側(cè)不一致 ,把右側(cè)數(shù)值按左側(cè)變量類型進(jìn)行轉(zhuǎn)
23、換。也可用強(qiáng)類型轉(zhuǎn)換的方式人為的轉(zhuǎn)換。,,第二章 C程序設(shè)計(jì)的初步知識,自加、自減、逗號運(yùn)算符,自加 ++ 使運(yùn)算對象值加1,自減 -- 使運(yùn)算對象值減1,++,i,,i,++,++,i,;,i,++ ;,,i,的 值都加1 前綴加1,后綴不加1,,--,i,,i --,--,i,;,i,,--,;,,i,的 值都減1 前綴減1,后綴不減1,,第二章 C程序設(shè)計(jì)的初步知識,#include ,main(),{,int i=1,j=1,m=1,n=1,k=1;,printf("i=%d\n",i);,m=i++;,printf("i=%d,m=%d\
24、n",i,m);,printf("j=%d\n",j);,m=++j;,printf("j=%d,m=%d\n",j,m);,printf("n=%d\n",n);,m=n--;,printf("n=%d,m=%d\n",n,m);,printf("k=%d\n",k);,m=--k;,printf("k=%d,m=%d\n",k,m);,,},第二章 C程序設(shè)計(jì)的初步知識,逗號運(yùn)算符和逗號表達(dá)式,,表達(dá)式1,表達(dá)式2,…… 表達(dá)式,n,結(jié)合性:從左到右,最后一個(gè)表達(dá)式的值就是此逗號表達(dá)式的值。逗號運(yùn)算符的優(yōu)先級最低。,,第三章 順序結(jié)構(gòu),順序結(jié)構(gòu):在程序中按語句出現(xiàn)的順序逐條執(zhí)行。,賦
25、值語句:在賦值表達(dá)式的尾部加上一個(gè)“;”號。應(yīng)出現(xiàn)在函數(shù)的可執(zhí)行部分。,,第三章 順序結(jié)構(gòu),數(shù)據(jù)輸出:把數(shù)據(jù)從計(jì)算機(jī)內(nèi)部送到計(jì)算機(jī)外部設(shè)備上的操作。,在,VC 6.0,環(huán)境下,在調(diào)用輸入和輸出的庫函數(shù)之前要求在源程序中出現(xiàn)包含頭文件,stdio.h,的命令行。,,第三章 順序結(jié)構(gòu),,printf,函數(shù),,printf(,格式控制,輸出項(xiàng)1,輸出項(xiàng)2,…),格式控制是字符串形式,作用是將要輸出的數(shù)據(jù)按照指定的格式輸出和提供需要原樣輸出的文字或字符。,如:,d%、f%、e%,,第三章 順序結(jié)構(gòu),格式字符,,%c %d %o (%#o) %x (%#x),%u %f %e %
26、s %p %%,,長度修飾符,在 %和格式字符之間,可以加入長度修飾符,以保證數(shù)據(jù)輸出格式的正確和對齊。長整%,ld,短整 %,hd,第三章 順序結(jié)構(gòu),寬度說明:,%和格式字符之間插入一個(gè)整數(shù)常數(shù)來指定輸出的寬度,n,,對于,float,和,double,的實(shí)數(shù),可以用,n1.n2,的形式來輸出,或者用.,n2,輸出。,在 %,d,和寬度之間加“-”實(shí)現(xiàn)數(shù)據(jù)左對齊,加“+”在每一個(gè)數(shù)字前面帶正負(fù)號。,,,第三章 順序結(jié)構(gòu),注意事項(xiàng),一般在多個(gè)輸出數(shù)之間留逗號、空格或者回車。,要輸出%符號,在格式控制符中用%%,,printf,函數(shù)有返回值,返回值是本次調(diào)用輸出字符的個(gè)數(shù),包括回車等
27、控制符。,,,第三章 順序結(jié)構(gòu),,scanf,函數(shù),scanf(,格式控制,輸入項(xiàng)1,輸入項(xiàng)2,…),主要作用是指定輸入時(shí)的數(shù)據(jù)轉(zhuǎn)換格式 ,輸入項(xiàng)之間用逗號隔開,對于,int,float,double,類型變量,在變量之前必須加&符號作為輸入項(xiàng)。,,,第三章 順序結(jié)構(gòu),格式字符,%,c %d %i,%o %x %u %f %e %s,,,,第三章 順序結(jié)構(gòu),輸入整數(shù)或者實(shí)數(shù)這類數(shù)值型數(shù)據(jù)時(shí),輸入的數(shù)據(jù)之間必須用空格、回車符號等間隔符號隔開。,可以指定輸入數(shù)據(jù)所指定的寬度,一般在使用輸入函數(shù)前使用輸出函數(shù)對輸入數(shù)據(jù)進(jìn)行說明,且盡量不要使用通配符。,,,,第三章 順序結(jié)
28、構(gòu),復(fù)合語句和空語句,{,語句1;,,語句2;,……,語句,n;,},第三章 順序結(jié)構(gòu),空語句,,只有一個(gè)分號的語句。,,第三章 順序結(jié)構(gòu),例題3.1,,,,A B,提問:,若,A,和,B,桶都裝了水(不一定是裝滿),請問如何將,A,和,B,桶中的水調(diào)換?(,A,B,的容積不受限制),第三章 順序結(jié)構(gòu),例題3.2,注意:,十進(jìn)制小數(shù)點(diǎn)移位是通過10的,n,次方的乘除來實(shí)現(xiàn).,四舍五入在,c,語言中的操作:可以通過將小數(shù)點(diǎn)移動(dòng)到舍入數(shù)位前,加0.5,然后取整來實(shí)現(xiàn),最后再將小數(shù)點(diǎn)移回.,強(qiáng)類型轉(zhuǎn)換前要加括號.,,double,類型在使用,scanf,輸入變量
29、時(shí),使用%,lf,格式控制符.,,,第四章 選擇結(jié)構(gòu),選擇結(jié)構(gòu):根據(jù)判斷的結(jié)果(邏輯值)決定程序的不同流程.,邏輯值:關(guān)系運(yùn)算和邏輯運(yùn)算都會得到一個(gè)邏輯值,,C,語言中,0代表邏輯值“假”,非0(正數(shù)或者負(fù)數(shù))代表“真”.,,,第四章 選擇結(jié)構(gòu),關(guān)系運(yùn)算:比較運(yùn)算,進(jìn)行兩個(gè)數(shù)的比較,判斷比較的結(jié)果是否符合指定的條件.,關(guān)系運(yùn)算符:, >= == !=,小于 小與等于 大于 大于等于 等于 不等于,,,第四章 選擇結(jié)構(gòu),注意:,兩個(gè)字符之間不允許有空格.,關(guān)系運(yùn)算符是雙目運(yùn)算符,具有從左至右的結(jié)合性.,、>=優(yōu)先級相同,但高于 優(yōu)先級相同的==、!= 如,a==
30、b
31、章 選擇結(jié)構(gòu),邏輯運(yùn)算規(guī)則,非運(yùn)算 !0為1 !1為0,是否,,與運(yùn)算 1&&1為1,同時(shí)滿足條件,,0&&1 1&&0 0&&0 為0,,或運(yùn)算 0||0為0,不滿足任何一個(gè)條件,,0||1 1||0 1||1為1,第四章 選擇結(jié)構(gòu),邏輯運(yùn)算規(guī)則,非運(yùn)算 !0為1 !1為0,是否,,與運(yùn)算 1&&1為1,同時(shí)滿足條件,,0&&1 1&&0 0&&0 為0,,或運(yùn)算 0||0為0,不滿足任何一個(gè)條件,,0||1 1||0 1||1為1,第四章 選擇結(jié)構(gòu),邏輯運(yùn)算規(guī)則,關(guān)系式 0<,x<10,在,c,語言中的表達(dá),0<,x&&x<10,&&,或||邏輯表達(dá)
32、式“短路”現(xiàn)象,當(dāng),A,為0時(shí),不需計(jì)算,B,,可知,A&&B,為0,當(dāng),A,為1時(shí),不需計(jì)算,B,,可知,A||B,為1,第四章 選擇結(jié)構(gòu),,if,語句,,if(,表達(dá)式) 語句,,if(,表達(dá)式) 語句1,else,語句2,第四章 選擇結(jié)構(gòu),,if,語句,,if(,表達(dá)式) 語句,如,if (a
33、,if,語句后的一個(gè)語句;,第四章 選擇結(jié)構(gòu),,if,語句,,if(,表達(dá)式) 語句,語句只能為一條語句,可以把多條語句組合成復(fù)合語句.,執(zhí)行過程:計(jì)算表達(dá)式中的值,如果為真,執(zhí)行,if,子句,然后執(zhí)行,if,語句后的一個(gè)語句;否則,跳過,if,子句,直接執(zhí)行,if,語句后的一個(gè)語句;,第四章 選擇結(jié)構(gòu),,if,語句,,if(,表達(dá)式) 語句1,,else,語句2,執(zhí)行過程:計(jì)算表達(dá)式的值,如果表達(dá)式的值為真,執(zhí)行,if,子句,然后跳過,else,子句,去執(zhí)行,if,語句之后的下一條語句;如果表示式的值為假,跳過,if,子句,執(zhí)行,else,子句,然后去執(zhí)行,if,語句之后的下一條
34、語句.,第四章 選擇結(jié)構(gòu),,if,語句,,if(,表達(dá)式) 語句1,,else,語句2,執(zhí)行過程:計(jì)算表達(dá)式的值,如果表達(dá)式的值為真,執(zhí)行,if,子句,然后跳過,else,子句,去執(zhí)行,if,語句之后的下一條語句;如果表示式的值為假,跳過,if,子句,執(zhí)行,else,子句,然后去執(zhí)行,if,語句之后的下一條語句.,第四章 選擇結(jié)構(gòu),,if,語句的嵌套(一),,if (,表達(dá)式1),,if(,表達(dá)式2) 語句1,,else,語句2,,else,,語句3,第四章 選擇結(jié)構(gòu),,if,語句的嵌套(二),,if (,表達(dá)式1),{,if (,表達(dá)式2) 語句1},else,語句2,注意
35、:,else,子句總與前面最近不帶,else,的,if,相結(jié)合.,,第四章 選擇結(jié)構(gòu),,if,語句的嵌套(三),,if (,表達(dá)式1) 語句1,else,,if (,表達(dá)式2,),語句2,,else,語句3,,,,if (,表達(dá)式1) 語句1,else if (,表達(dá)式2,),語句2,,else,語句3,,,等價(jià),盡量將內(nèi)嵌的,if,語句放在,else,子句中.,第四章 選擇結(jié)構(gòu),,if,語句的嵌套(四),,if (,表達(dá)式1) 語句1,else,,if (,表達(dá)式2,),語句2,,,,,if (,表達(dá)式1) 語句1,else if (,表達(dá)式2,),語句2,,等價(jià),盡量將內(nèi)嵌
36、的,if,語句放在,else,子句中.,第四章 選擇結(jié)構(gòu),,if,語句的多層嵌套,if (,表達(dá)式1) 語句1,else,,if (,表達(dá)式2,),語句2,,else,,,if (,表達(dá)式3,),語句3,…,else,語句,n,,,,,,if (,表達(dá)式1) 語句1,else if (,表達(dá)式2,),語句2,else if (,表達(dá)式3,),語句3,…,else,語句,n,,等價(jià),逐一對,if,后的表達(dá)式進(jìn)行檢測,只執(zhí)行其中的一個(gè)表達(dá)式為真的子句,若所有表達(dá)式為0,執(zhí)行最后的,else,子句;若無最后的,else,子句,不執(zhí)行任何的子句.,第四章 選擇結(jié)構(gòu),條件表達(dá)式構(gòu)成的選擇結(jié)構(gòu)
37、,條件運(yùn)算符: ? :,條件表達(dá)式:,表達(dá)式1?表達(dá)式2:表達(dá)式3,運(yùn)算功能:如果表達(dá)式1為真,求表達(dá)式2的值,此時(shí)表達(dá)式2的值就是整個(gè)條件表達(dá)式的值;,如果表達(dá)式1為假,求表達(dá)式3的值,此時(shí)表達(dá)式3的值就是整個(gè)條件表達(dá)式的值;,,,,,第四章 選擇結(jié)構(gòu),條件表達(dá)式構(gòu)成的選擇結(jié)構(gòu),,條件表達(dá)式的優(yōu)先級別,低于關(guān)系運(yùn)算符和算術(shù)運(yùn)算符,但高于賦值運(yùn)算符.,如:,y=x>10?100:200,x<0?(-1)*x:x,,,,,第四章 選擇結(jié)構(gòu),switch,表達(dá)式構(gòu)成的選擇結(jié)構(gòu),switch (,表達(dá)式),{,case,常量表達(dá)式1:語句1,,case,常量表達(dá)式2:語句2,…,,cas
38、e,常量表達(dá)式,n:,語句,n,default :,語句,n,},,,,通常和,break,語句聯(lián)合使用,當(dāng)執(zhí)行到,break,時(shí),立即跳出,switch,語句.,第四章 選擇結(jié)構(gòu),語句標(biāo)號和,goto,語句,,goto stop;,…,,stop:printf(“end\n”);,,,,,,第五章 循環(huán)結(jié)構(gòu),,while,語句和用,while,語句構(gòu)成的循環(huán),,while(,表達(dá)式) 循環(huán)體,例如:,,k=0;,while (k<10),{,printf(“*”);,k++;,},,,,,第五章 循環(huán)結(jié)構(gòu),,do-while,語句及其循環(huán),,do,,循環(huán)體,,while(,表達(dá)式
39、);,例如:,do,{ i++;s+=i;,},While(i<10);,,,,第五章 循環(huán)結(jié)構(gòu),,for,語句及其循環(huán),,for(,表達(dá)式1;表達(dá)式2;表達(dá)式3),循環(huán)體,例如:,,for(k=0;k<10;k++),printf(“*”);,,,,,表達(dá)式1;,While(,表達(dá)式2),{,循環(huán)體;,表達(dá)式3;,},等價(jià)形式,第五章 循環(huán)結(jié)構(gòu),,break,語句和,continue,語句,Break,在循環(huán)結(jié)構(gòu)中終止本層循環(huán)體;,Continue,跳過本次循環(huán)體中余下尚為執(zhí)行的語句,立刻進(jìn)行下一次的循環(huán)條件判定,可以理解為僅結(jié)束本次循環(huán).,,,,第六章 字符型數(shù)據(jù),字符型常量,
40、,C,語言中,一個(gè)字符常量代表,ASCII,字符集(見附錄七)中的一個(gè)字符,用單引號把一個(gè)字符括起來作為字符常量.,例如:,a,為標(biāo)識符,‘,a’,為字符型常量.,,,,,第六章 字符型數(shù)據(jù),字符型常量,注意:,大寫字母和小寫字母的,ASCII,值不同,因而代表不同的字符常量.,單引號中的空格也是一個(gè)字符常量.,字符常量只能包含一個(gè)字符.,字符常量只能用單引號括起來,不能用雙括號.,字符常量在內(nèi)存中占一個(gè)字節(jié),存放的是字符的,ASCII,代碼值.,,,,,第六章 字符型數(shù)據(jù),字符型常量,轉(zhuǎn)義字符常量 ‘\特定字符’,\,n,回車 \\ 反斜杠 \‘ 單引號 \“ 雙引號,\,dd
41、d,三位八進(jìn)制代表的一個(gè),ASCII,字符,\,xhh,二位十六進(jìn)制代表的一個(gè),ASCII,字符,注意:轉(zhuǎn)義字符常量只代表一個(gè)字符.,,,,第六章 字符型數(shù)據(jù),字符串常量,字符串常量是由雙引號括起來的一串字符.在,c,語言中,系統(tǒng)在每個(gè)字符串的最后自動(dòng)加入一個(gè)字符‘\0’作為字符串的結(jié)束標(biāo)志.,,注意:“”稱為空串,也是一個(gè)字符串常量,占用一個(gè)字節(jié)的存儲空間.,,,,第六章 字符型數(shù)據(jù),字符量的運(yùn)算,在,C,程序中,字符量可參與任何整數(shù)運(yùn)算.,大小寫字母的轉(zhuǎn)換:大寫字母,ASCII,值=小寫字母,ASCII,值-32,可以將數(shù)字字符轉(zhuǎn)換成整數(shù)值,也可以將整數(shù)值轉(zhuǎn)換成數(shù)字字符.,字符量
42、可以進(jìn)行關(guān)系運(yùn)算.,,,,,第六章 字符型數(shù)據(jù),字符變量,,用關(guān)鍵字,char,進(jìn)行定義,,char ch1=‘a(chǎn)’;,,字符變量可以參與整型變量允許的運(yùn)算,有可以使用與字符處理相關(guān)的庫函數(shù).,,,,第六章 字符型數(shù)據(jù),字符的輸入和輸出,printf,輸出字符時(shí)使用格式說明符%,c,,也可以在,c,前加入整數(shù)來指定輸出字符時(shí)所占的寬度.,用,scanf,輸入字符時(shí)也用格式說明符%,c,,當(dāng)%,c,一個(gè)接一個(gè)時(shí),字符之間不應(yīng)有間隔符號(如回車,空格).,,,,,,,第六章 字符型數(shù)據(jù),,putchar,和,getchar,輸入和輸出函數(shù),,putchar,輸出字符,putchar(c
43、h);,getchar,輸入字符,ch=getchar();,,注意:只有在用戶敲入,enter,鍵時(shí),讀入才開始執(zhí)行.,,,,,第七章 函數(shù),一個(gè)實(shí)用的,c,語言源程序總是由許多函數(shù)組成.,這些函數(shù)中可以調(diào)用,c,提供的庫函數(shù),也可以調(diào)用由用戶或他人編寫的函數(shù).,,c,源程序在正常情況下總是從,main,函數(shù)開始執(zhí)行,,main(),結(jié)束.,,,,,,第七章 函數(shù),熟悉c語言提供的豐富庫函數(shù),應(yīng)正確調(diào)用.,調(diào)用c語言標(biāo)準(zhǔn)庫函數(shù)要求使用include命令行.,include命令行必須以#開頭,系統(tǒng)提供的頭文件以.h為文件的后綴,文件名用一對雙引號“”或一對尖括號括起來.,標(biāo)準(zhǔn)庫函數(shù)的調(diào)
44、用形式:出現(xiàn)在表達(dá)式中或者作為獨(dú)立的語句完成某種操作。,,,,第七章 函數(shù),函數(shù)的定義與返回值,函數(shù)定義的語法,,函數(shù)返回值的類型名 函數(shù)名(類型名 形式參數(shù)1,類型名 形式參數(shù)2,……),{,說明部分,語句部分,},,注意:不能在函數(shù)的內(nèi)部定義函數(shù) 。,,,,函數(shù)名和形式參數(shù)都是用戶命名的標(biāo)識符,同一程序中,函數(shù)名必須唯一,形式參數(shù)名只要在同一函數(shù)中唯一即可。,若在函數(shù)的首部省略了函數(shù)返回值的類型名,則默認(rèn)函數(shù)返回值的類型為,int,類型。除了返回值類型為,int,類型的函數(shù)外,函數(shù)必須先定義(或說明)后調(diào)用。若函數(shù)只是用于完成某些操作,沒有函數(shù)值返回,則必須把函數(shù)定義成,void,類型
45、。,第七章 函數(shù),函數(shù)的定義與返回值,如:,,double add (double a,double b),{,double s;,s=a+b;,return s;,},,,,函數(shù)體中,除形參外,用到的其他變量必須在說明部分進(jìn)行定義,這些變量(包括形參 ),只在函數(shù)被調(diào)用時(shí)才臨時(shí)開辟存儲單元,當(dāng)退出函數(shù)時(shí),這些臨時(shí)開辟的存儲單元全部被釋放掉,因此這種變量只在函數(shù)體內(nèi)部起作用,與其他函數(shù)體中的變量互不相干,它們可以和其他函數(shù)中的變量同名。,第七章 函數(shù),函數(shù)的定義與返回值,如:,,double add (double a,double b),{,double s;,s=a+b;,retu
46、rn s;,},,,,函數(shù)的值通過,return,語句返回,,return,語句的形式如下:,return,表達(dá)式; 或,return(,表達(dá)式);,return,語句中表達(dá)式的值就是所求的函數(shù)值,此表達(dá)式值的類型必須與函數(shù)首部所說明的類型一致。若類型不一致,則以函數(shù)值的類型為準(zhǔn),由系統(tǒng)自動(dòng)進(jìn)行轉(zhuǎn)換。,,當(dāng)程序執(zhí)行到,return,語句時(shí),程序的流程就返回到調(diào)用該函數(shù)的地方,并帶回函數(shù)值。,第七章 函數(shù),函數(shù)的定義與返回值,如:,,double add (double a,double b),{,double s;,s=a+b;,return s;,},,,,在同一個(gè)函數(shù)中,可以根據(jù)需要
47、在多處出現(xiàn),return,語句,在函數(shù)體的不同部位退出函數(shù),但,return,只可能執(zhí)行一次,return,語句中也可以不含表達(dá)式,這時(shí)必須定義函數(shù)為,void,類型,函數(shù)體內(nèi)可以沒有,return,語句,這時(shí)必須定義函數(shù)為,void,類型,程序的流程就一直執(zhí)行到函數(shù)末尾的“}”,然后返回調(diào)用函數(shù),也沒有確定的函數(shù)值帶回。,第七章 函數(shù),函數(shù)的兩種調(diào)用方式,函數(shù)的一般調(diào)用形式為:,函數(shù)名(實(shí)參表),若函數(shù)無形參,調(diào)用形式為,,函數(shù)名(),一般情況下,可用兩種方式調(diào)用函數(shù):,,當(dāng)所調(diào)用的函數(shù)用于求出某個(gè)值時(shí),函數(shù)的調(diào)用可作為表達(dá)式出現(xiàn)在允許表達(dá)式出現(xiàn)的任何地方。,當(dāng)函數(shù)僅進(jìn)行某些操作而不返回
48、函數(shù)值,這時(shí)函數(shù)的調(diào)用可作為一條獨(dú)立的語句。,,,,當(dāng)實(shí)參個(gè)數(shù)多于一個(gè)時(shí),各實(shí)參之間用逗號隔開。,實(shí)參的個(gè)數(shù)必須與所調(diào)函數(shù)中的形參相同,,類型一一對應(yīng)匹配。,第七章 函數(shù),函數(shù)調(diào)用的語法要求,,調(diào)用函數(shù)時(shí),函數(shù)名必須與所調(diào)用的函數(shù)名字完全一致。,實(shí)參的個(gè)數(shù)必須與形參的個(gè)數(shù)一致。實(shí)參可以是表達(dá)式,在類型上應(yīng)按位置與形參一一對應(yīng)。,函數(shù)必須先定義后調(diào)用(函數(shù)的返回值類型為,int,或,char,時(shí)除外).,函數(shù)可以直接或間接的自己調(diào)用自己,稱為遞歸調(diào)用。,,,,第七章 函數(shù),函數(shù)說明的形式,,函數(shù)說明的一般形式,類型名 函數(shù)名(參數(shù)類型1,參數(shù)類型2,……),也可以采用下面的形式,類型名
49、函數(shù)名(參數(shù)類型1 參數(shù)1,參數(shù)類型2 參數(shù)2,……),函數(shù)說明可以是一條獨(dú)立的說明語句,也可以與普通變量一起出現(xiàn)。,,,,第七章 函數(shù),函數(shù)說明的形式,對函數(shù)進(jìn)行說明能使,c,語言的編譯程序在編譯時(shí)進(jìn)行有效的類型檢查。,當(dāng)在所有函數(shù)的外部、被調(diào)用之前說明函數(shù)時(shí),在對函數(shù)進(jìn)行說明的語句后面所有位置都可以對函數(shù)進(jìn)行調(diào)用。,函數(shù)說明也可以放在調(diào)用函數(shù)內(nèi)的說明部分。,,,,第七章 函數(shù),調(diào)用函數(shù)和被調(diào)用函數(shù)之間的數(shù)據(jù)傳遞,三種方式:,1、實(shí)參和形參之間進(jìn)行數(shù)據(jù)傳遞,2、通過,return,語句把函數(shù)值返回。,3、通過全局變量。,在,C,語言中,數(shù)據(jù)只能從實(shí)參單向傳遞給形參,稱為“按值”傳遞,
50、也即是說,當(dāng)簡單變量作為實(shí)參時(shí),用戶不可能在函數(shù)中改變對應(yīng)實(shí)參的值。,,,,第八章 地址和指針,變量的地址和指針,,a b,,1012 1013 1201 1202 1203 1204,一個(gè)變量實(shí)質(zhì)上是代表了“內(nèi)存中的某個(gè)存儲單元”,若在程序中定義了一個(gè)變量,,c,編譯系統(tǒng)就會根據(jù)定義中變量的類型,為其分配一定字節(jié)數(shù)的內(nèi)存空間。,每個(gè)變量的地址是指該變量所占存儲單元的第一個(gè)字節(jié)的地址。,直接存?。褐苯影醋兞康牡刂反嫒∽兞恐档姆绞?。,,,,,第八章 地址和指針,變量的地址和指針,,p p
51、 a,,2002 2002 1012 1013,存放地址的變量稱為“指針變量”。,間接存?。和ㄟ^指針變量間接存取變量值的的方式。,“指針變量,p,指向了變量,a”,就是指針變量,p,中存放了變量,a,的地址。,在,c,語言中,指針被廣泛運(yùn)用,它和數(shù)組、字符串、函數(shù)間數(shù)據(jù)的傳遞等有著密不可分的聯(lián)系。,,,,1012,,,1012,,,,,,,,第八章 地址和指針,指針變量的定義和指針變量的基類型,定義指針變量的一般形式如下:,,類型名 *指針變量名1,*指針變量名2,…..;,如,int *pi,*pj;,
52、double *pd;,,我們稱,int、 double,是指針變量的基類型。,,,,第八章 地址和指針,指針變量的定義和指針變量的基類型,如:,,int **p,*s,k=20;,s=,p=,對于基類型不同的指針變量,其內(nèi)容(地址值)增1、減1所跨越的字節(jié)數(shù)是不同的,因?yàn)橹羔樢苿?dòng)的最小單位。,,,,第八章 地址和指針,給指針變量賦地址值,通過求地址運(yùn)算符&獲得地址值,,int k=1,*p,*q;,q=,通過指針變量獲得地址值,,p=q;,通過標(biāo)準(zhǔn)函數(shù)獲得地址值,,,第八章 地址和指針,給指針變量賦“空”值,,p=NULL;,NULL,是在,stdio.h,頭文件中定義的預(yù)定義符
53、,因此在使用,NULL,時(shí),應(yīng)該在程序的前面出現(xiàn)預(yù)定義行 #,include ,NULL,的代碼值為0,因此以上代碼等價(jià)于,,p=‘\0’;,或,p=0;,,,第八章 地址和指針,對指針變量的操作,,通過指針來引用一個(gè)存儲單元,當(dāng)變量中存放了一個(gè)確切的地址值時(shí),可以用“間接訪問運(yùn)算符”*通過指針來引用該地址的存儲單元。,如,int *p,j=10,m;,p=,m=*p;,,,,,,第八章 地址和指針,對指針變量的操作,間接訪問運(yùn)算符*是一個(gè)單目運(yùn)算符,必須出現(xiàn)在運(yùn)算對象的左邊,其運(yùn)算對象是存儲地址的指針變量或者是地址。,注意:,++和*具有相同優(yōu)先級,結(jié)合性為從右到左,++*p
54、 *p+=1,(*p)++ *p+=1,*p++ p+=1,,,第八章 地址和指針,對指針變量的操作,,移動(dòng)指針:對指針變量加上或減去一個(gè)整數(shù),或通過賦值運(yùn)算,使指針變量指向相鄰的存儲單元。,,在對指針進(jìn)行加、減運(yùn)算時(shí),數(shù)字“1”不再代表十進(jìn)制整數(shù)“1”,而是指1個(gè)存儲單元長度。1個(gè)單元長度的字節(jié)數(shù),根據(jù)指針的基類型而定。,,,,第八章 地址和指針,對指針變量的操作,指針比較,在關(guān)系表達(dá)式中可以對兩個(gè)指針進(jìn)行比較,,如:,,int *p,*q;,if(p 55、intf(“p points to lower memory”);,if(p==‘\0’) printf(“p points to NUll”);,,,第八章 地址和指針,函數(shù)之間地址值的傳遞,形參為指針變量時(shí)實(shí)參和形參之間的數(shù)據(jù)傳遞,通過傳送地址值在被調(diào)用函數(shù)中直接改變調(diào)用函數(shù)中的變量的值。,函數(shù)返回地址值。,,,,第九章 數(shù)組,數(shù)組,一組具有同一類型的變量,在內(nèi)存中占有連續(xù)的存儲單元,,在,c,語言中,可以用,a[0]、a[1]、a[2]、…,這種形式來表示數(shù)組中連續(xù)的存儲單元,我們把它們稱為“帶下標(biāo)的變量”或數(shù)組元素。,,,第九章 數(shù)組,一維數(shù)組的定義,一維數(shù)組:數(shù)組中每個(gè) 56、元素只帶有一個(gè)下標(biāo),形式: 類型名 數(shù)組名[整型常量(表達(dá)式)],如:,int a[8];,,,,,,,a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7],第九章 數(shù)組,一維數(shù)組的定義,如:,int a[8];,,,,,,,a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7],定義了一個(gè)名為,a,的一維數(shù)組。,方括號的8規(guī)定了,a,數(shù)組含有8個(gè)元素,它們是,a[0]、a[1]、……a[7],,類型名,int,規(guī)定,a,數(shù)組中每個(gè) 57、元素都是整型,只能存放整型數(shù)。,每個(gè)元素一個(gè)下標(biāo),,c,語言規(guī)定每個(gè)數(shù)組第一個(gè)元素的下標(biāo)總是0(下標(biāo)的下界),最后一個(gè)元素的下標(biāo)應(yīng)該是7(下標(biāo)的上界)。,可以用存儲單元的名字,a[0]、a[1]、…a[7],直接引用各存儲單元。,,第九章 數(shù)組,一維數(shù)組的定義,多個(gè)數(shù)組說明符,,double w[22],v[100],u[5];,,和普通變量名一起說明,,char c1,c2,carr[81];,,,,第九章 數(shù)組,一維數(shù)組元素的引用,引用形式 數(shù)組名[下標(biāo)表達(dá)式],如:,double x[8];,,則,x[0]、a[j]、a[m+n],都是對數(shù)組元素的合法引用。,注意:一個(gè)數(shù) 58、組元素實(shí)質(zhì)上就是一個(gè)變量名,代表內(nèi)存中的一個(gè)存儲單元,一個(gè)數(shù)組占有一串連續(xù)的存儲單元。另外,在,c,語言中,一個(gè)數(shù)組不能被整體引用,例如,x,數(shù)組,不能用,x,代表,x[0],到,x[7],這8個(gè)元素。,,第九章 數(shù)組,一維數(shù)組的初始化,在定義語句中為所定義數(shù)組的各元素賦初值,,int a[8]={0,1,2,3,4,5,6,7};,,當(dāng)所賦值初值少于所定義數(shù)組的元素個(gè)數(shù)時(shí),將自動(dòng)給后面的元素補(bǔ)以初值0,如,int a[3]={1};,相當(dāng)于,int a[3]={1,0,0},,當(dāng)所賦初值多于所定義數(shù)組的元素個(gè)數(shù)時(shí),在編譯時(shí)將給出出錯(cuò)信息。,,第九章 數(shù)組,通過賦初值定義數(shù)組的大小,, 59、int a[]={0,1,2,3},,相當(dāng)于,int a[4]={0,1,2,3},,數(shù)組說明符的一對方括號中可以不指定數(shù)組的大小,可以根據(jù)賦初值來隱性定義數(shù)組元素的個(gè)數(shù)。,,,第九章 數(shù)組,一維數(shù)組的定義和數(shù)組元素的引用舉例,定義,,for (j=0;j 60、控制換行符 正序 (,j+1)%n==0,每輸出,n,個(gè)元素可以換行,逆序,j%n==0,每輸出,n,個(gè)元素可以換行,,,第九章 數(shù)組,一維數(shù)組和指針,,一維數(shù)組和數(shù)組元素的地址,,c,語言中,在函數(shù)體中或在函數(shù)外部定義的數(shù)組名可以認(rèn)為是一個(gè)存放地址值的指針變量名,其中的地址值是數(shù)組第一個(gè)元素的地址,也就是數(shù)組所占一串連續(xù)存儲單元的起始地址,定義數(shù)組時(shí)的類型就是此指針變量的基類型。,注意:這個(gè)指針變量的地址值不可改變,即不可給數(shù)組名重新賦值,可以認(rèn)為數(shù)組名是一個(gè)地址常量。,,第九章 數(shù)組,一維數(shù)組和指針,,一維數(shù)組和數(shù)組元素的地址,,float a[10],*p,x;,int k 61、;,for(k=0;k<10;k++) p=a+k;,for(k=0;k<10;k++) scanf(“%d”,a+k);,,語句,p=,和,p=a;,都是合法的,功能相同,都使,p,指向了數(shù)組的首部地址。,,第九章 數(shù)組,一維數(shù)組和指針,,一維數(shù)組和數(shù)組元素的地址,,for(p=a,k=0;k<10;k++) {scanf(“%d”,p); p++;},,,,for(p=a,k=0;k<10;k++) scanf(“%d”,p++);,,for(p=a;p-a<10;p++) scanf(“%d”,p);,,,,第九章 數(shù)組,一維數(shù)組和指針,,通過數(shù)組的首地址引用 62、數(shù)組元素,,int a[10];,a,是數(shù)組元素的首地址,,a,的值等于&,a[0],a+1,的值為&,a[1],a[0],等于 *&,a[0],,即*(,a+0),*a,a[1],等于 *&,a[1],,即*(,a+1),,,,,第九章 數(shù)組,通過指針引用一維數(shù)組元素,,float a[10],*p,k;,p=a;,,可以通過指針變量,p,來表示數(shù)組元素,,a[0] *p,a[1] *(p+1),,如,,for(p=a;p-a<10;p++) printf(“%4d”,*p);,,,,,第九章 數(shù)組,通過指針引用一維數(shù)組元素,,float s[10],*p,k;,p=s 63、;,,可以用&,s[k],s+k,p+k,來表示,s[k],的地址,可以用,s[k],*(s+k),*(p+k),p[k],來表示,s[k],的值,,但注意:,s,是不變的,而,p,中的地址值是可以改變的,,,,第九章 數(shù)組,函數(shù)之間對一維數(shù)組和數(shù)組元素的引用,數(shù)組元素作實(shí)參,數(shù)組名作實(shí)參 形參形式,int arrin(int *a),int arrin(int a[]),int arrin(int a[M]),,注意:當(dāng)數(shù)組名為實(shí)參時(shí),在被調(diào)用函數(shù)中,并沒有為與數(shù)組名對應(yīng)的形參另外開辟一串連續(xù)的存儲單元,而只是開辟了一個(gè)指針變量的存儲單元。,,數(shù)組元素地址作為實(shí)參,,,,第九章 64、數(shù)組,二維數(shù)組,二維數(shù)組:數(shù)組元素帶有兩個(gè)下標(biāo)。邏輯上把二維數(shù)組看成一個(gè)具有行和列的表格。,定義形式:,,類型名 數(shù)組名[常量表達(dá)式1][常量表達(dá)式2,],……;,如:,int a[3][4],,,,第九章 數(shù)組,二維數(shù)組,int a[3][4],的邏輯結(jié)構(gòu),,,int a[3][4],的實(shí)際存儲結(jié)構(gòu),,,第0列,第1列,第2列,第3列,第0行,a[0][0],a[0][1],a[0][2],a[0][3],第1行,a[1][0],a[1][1],a[1][2],a[1][3],第2行,a[2][0],a[2][1],a[2][2],a[2][3],a[0][0] a[0][1] 65、 a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][1] a[2][2] a[2][3],按行存放,第九章 數(shù)組,二維數(shù)組,在,c,語言中,可以把一個(gè)二維數(shù)組看成一個(gè)一維數(shù)組,每個(gè)數(shù)組元素又是包含有若干個(gè)元素的一維數(shù)組。,例如:,int a[3][4],這個(gè),a,數(shù)組可以看成是由,a[0]、a[1]、a[2],三個(gè)元素組成的一維數(shù)組。其中每個(gè)元素又是由四個(gè)元素組成的一維數(shù)組。,,第九章 數(shù)組,二維數(shù)組元素的引用,數(shù)組名[下標(biāo)表達(dá)式1] 66、[下標(biāo)表達(dá)式2],二維數(shù)組的初始化,,int a[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};,int a[4][3]={{1,2},{4,5},{7},{10}};,int a[4][3]={{1,2},{4,5}};,int a[4][3]={1,2,3,4,5};,,,,,第九章 數(shù)組,通過賦初值定義二維數(shù)組的大小,,int a[][3]={{1,2,3},{4,5},{6},{8}};,,第一維大小由行數(shù)來決定。,,int a[][3]={1,2,3,4,5};,,第一維大小由以下規(guī)則決定:,,a、,當(dāng)初值的個(gè)數(shù)能被第二維的常量表達(dá)式的值整除時(shí),所得商數(shù)就是第一維的大小。,,b、,當(dāng)初值的個(gè)數(shù)不能被第二維的常量表達(dá)式的值整除時(shí),第一維的大小=所得商數(shù)+1,,,,,第九章 數(shù)組,二維數(shù)組的定義和數(shù)組元素引用舉例,int a[M][N] ;,for(i=0;i
- 溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專題黨課講稿:以高質(zhì)量黨建保障國有企業(yè)高質(zhì)量發(fā)展
- 廉政黨課講稿材料:堅(jiān)決打好反腐敗斗爭攻堅(jiān)戰(zhàn)持久戰(zhàn)總體戰(zhàn)涵養(yǎng)風(fēng)清氣正的政治生態(tài)
- 在新錄用選調(diào)生公務(wù)員座談會上和基層單位調(diào)研座談會上的發(fā)言材料
- 總工會關(guān)于2025年維護(hù)勞動(dòng)領(lǐng)域政治安全的工作匯報(bào)材料
- 基層黨建工作交流研討會上的講話發(fā)言材料
- 糧食和物資儲備學(xué)習(xí)教育工作部署會上的講話發(fā)言材料
- 市工業(yè)園區(qū)、市直機(jī)關(guān)單位、市紀(jì)委監(jiān)委2025年工作計(jì)劃
- 檢察院政治部關(guān)于2025年工作計(jì)劃
- 辦公室主任2025年現(xiàn)實(shí)表現(xiàn)材料
- 2025年~村農(nóng)村保潔員規(guī)范管理工作方案
- 在深入貫徹中央8項(xiàng)規(guī)定精神學(xué)習(xí)教育工作部署會議上的講話發(fā)言材料4篇
- 開展深入貫徹規(guī)定精神學(xué)習(xí)教育動(dòng)員部署會上的講話發(fā)言材料3篇
- 在司法黨組中心學(xué)習(xí)組學(xué)習(xí)會上的發(fā)言材料
- 國企黨委關(guān)于推動(dòng)基層黨建與生產(chǎn)經(jīng)營深度融合工作情況的報(bào)告材料
- 副書記在2025年工作務(wù)虛會上的發(fā)言材料2篇
相關(guān)資源
更多