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



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