二級C程序基礎教學(培訓用)課件_第1頁
二級C程序基礎教學(培訓用)課件_第2頁
二級C程序基礎教學(培訓用)課件_第3頁
二級C程序基礎教學(培訓用)課件_第4頁
二級C程序基礎教學(培訓用)課件_第5頁
已閱讀5頁,還剩533頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

全國計算機等級考試

二級C程序基礎培訓(2011版)1

全國計算機等級考試

二級C程序基礎培訓(2011版)1二級C語言考試介紹考核內(nèi)容:二級定位為程序員,考核內(nèi)容包括公共基礎知識和程序設計。所有科目對基礎知識作統(tǒng)一要求,使用統(tǒng)一的公共基礎知識考試大綱和教程。二級公共基礎知識在各科筆試中的分值比重為30%(30分)。程序設計部分的比重為70%(70分),主要考查考生對程序設計語言使用和編程調(diào)試等基本能力。二級C語言考試介紹考核內(nèi)容:二級定位為程序員,考核內(nèi)容包括公二級C語言考試介紹考試形式:二級所有科目的考試包括筆試和上機考試兩部分。二級C筆試時間為90分鐘,上機時間改為90分鐘。

二級C上機應用軟件為VisualC++6.0二級C語言考試介紹考試形式:二級所有科目的考試包括筆試和上二級C語言考試介紹考試成績劃分為優(yōu)秀、良好、及格和不及格四個等第成績,筆試或上機考試成績只有一門及格的,下次考試及格的一門可以免考,兩部分考試均及格者,由教育部考試中心頒發(fā)統(tǒng)一印制的合格證書。二級C語言考試介紹考試成績劃分為優(yōu)秀、良好、及格和不及格二級C語言培訓介紹

實實在在學知識順順利利過考試二級C語言培訓介紹如何學二級C語言多看書多實踐驗證多讀(背)程序如何學二級C語言多看書第一章程序設計基本概念什么是C程序?高級語言機器語言源程序目標程序編譯程序第一章程序設計基本概念什么是C程序?編譯程序第一章程序設計基本概念

C語言編譯“三部曲”C源程序目標文件可執(zhí)行文件.C.obj.exe編譯連接第一章程序設計基本概念C語言編譯“三部曲”編譯連接第一章程序設計基本概念程序設計過程確定數(shù)據(jù)結(jié)構(輸入輸出)確定算法(解決問題的方法和步驟)編碼。(算法代碼化)調(diào)試程序。(改錯和修正)整理和寫文檔。第一章程序設計基本概念程序設計過程第一章程序設計基本概念結(jié)構化程序的三種結(jié)構順序結(jié)構(先后順序執(zhí)行)選擇結(jié)構(執(zhí)行不同分支的語句)循環(huán)結(jié)構(重復執(zhí)行多次或一次不執(zhí)行)第一章程序設計基本概念結(jié)構化程序的三種結(jié)構第一章程序設計基本概念模塊化結(jié)構由一個個功能模塊構成的程序結(jié)構為模塊化結(jié)構。第一章程序設計基本概念模塊化結(jié)構第二章C程序設計的初步知識

C語言示例一輸出一行信息:WellcometoSinree!程序名為sinree_c1.c。#include<stdio.h> /*命令行,表示文件包含*/main() /*主函數(shù)*/{printf(“WellcometoSinree!\n"); /*輸出信息*/}程序輸出結(jié)果第二章C程序設計的初步知識C語言示例一第二章C程序設計的初步知識

C語言示例二輸入兩個整數(shù),輸出它們的和。程序名為sinree_c2.c。#include<stdio.h> /*文件包含*/main() /*主函數(shù)*/{inta,b,c; /*聲明定義變量a,b和c*/scanf("%d%d",&a,&b); /*輸入變量a和b的值*/

c=a+b; /*計算c等于a與b的和值*/

printf("c=%d\n",c); /*輸出變量c的值*/}運行程序輸入:90<CR>7<CR>程序結(jié)果:第二章C程序設計的初步知識C語言示例二第二章C程序設計的初步知識C語言示例三輸入兩個整數(shù),通過調(diào)用函數(shù)計算它們的和,然后輸出和值。程序名為sinree_c3.c。#include"stdio.h" /*文件包含*/intsum(intx,inty) /*定義sum函數(shù)*/{intz; /*聲明定義變量z*/z=x+y; /*計算z等于x與y的和值*/

return(z); /*將z的值返回,通過sum帶回調(diào)用處*/}main() /*主函數(shù)*/{inta,b,c; /*聲明定義變量a,b和c*/scanf("%d%d",&a,&b); /*輸入變量a和b的值*/

c=sum(a,b); /*調(diào)用sum函數(shù),將得到的值賦給c*/printf("c=%d\n",c); /*輸出變量c的值*/}運行程序輸入:907<CR>程序結(jié)果C=97第二章C程序設計的初步知識C語言示例三第二章C程序設計的初步知識VC++6.0編輯環(huán)境編輯區(qū)第二章C程序設計的初步知識VC++6.0編輯環(huán)境編輯第二章C程序設計的初步知識VC++6.0編輯環(huán)境啟動VisualC++6.0環(huán)境編輯源程序文件編譯連接執(zhí)行第二章C程序設計的初步知識VC++6.0編輯環(huán)境第二章C程序設計的初步知識VC++6.0編輯環(huán)境編譯Ctrl+F7連接F7運行Ctrl+F5第二章C程序設計的初步知識VC++6.0編輯環(huán)境編譯第二章C程序設計的初步知識C程序的構成和格式任何函數(shù)(包括主函數(shù)main())都是由函數(shù)說明和函數(shù)體兩部分組成。其一般結(jié)構如下:[函數(shù)類型]函數(shù)名(函數(shù)參數(shù)表)

/*函數(shù)說明部分*/

{說明語句部分;

/*函數(shù)體部分*/

執(zhí)行語句部分;}第二章C程序設計的初步知識C程序的構成和格式任何第二章C程序設計的初步知識C程序的構成和格式

C語言是由函數(shù)組成的一個C源程序可由一個main函數(shù)和若干個其他函數(shù)組成,其中必須有一個且只能有一個main函數(shù)。

C程序總是從main函數(shù)開始執(zhí)行。

第二章C程序設計的初步知識C程序的構成和格式第二章C程序設計的初步知識C程序的構成和格式

C程序語句和數(shù)據(jù)定義必須以分號“;”結(jié)束。

C語言中,分號是程序語句的結(jié)束標志,也是C語句的必要組成部分。第二章C程序設計的初步知識C程序的構成和格式第二章C程序設計的初步知識C程序的構成和格式C語言嚴格區(qū)分大小寫。如變量a和變量A系統(tǒng)認定為兩個不同的變量。第二章C程序設計的初步知識C程序的構成和格式第二章C程序設計的初步知識C程序的構成和格式C語言數(shù)據(jù)輸入和輸出是由庫函數(shù)實現(xiàn)的。

C語言本身沒有輸入輸出語句。輸入和輸入操作是由庫函數(shù)scanf和printf等函數(shù)來實現(xiàn)的。所以一般C程序都要使用命令行語句#include<stdio.h>

注意:命令行以#開頭,行尾不能加;號第二章C程序設計的初步知識C程序的構成和格式第二章C程序設計的初步知識C程序的構成和格式C語言用/*注釋內(nèi)容*/形式進行程序注釋在“/*”和“*/”之間的所有字符都為注釋符,C系統(tǒng)不對注釋符進行編譯。(另外可以用//用于單行注釋)注意:注釋不能嵌套使用。如/*/*…*/*/第二章C程序設計的初步知識C程序的構成和格式第二章C程序設計的初步知識C程序書寫格式建議1.C程序書寫格式自由。

對于短語句可以多條語句書寫在同一行,也可以將長語句分寫在多行。但需要注意,分行時不能將一個單詞分開,也不能將雙引號引起來的字符串分開。我們提倡一行一條語句的風格。2.C程序書寫采用縮進格式。根據(jù)語句的從屬關系,程序書寫時采用縮進格式,使程序語句的層次結(jié)構清晰,提高程序的可讀性。同一層次語句要左對齊,不同層次的語句要縮進若干個字符,這樣程序?qū)哟吻宄?,便于閱讀和理解。

3.程序中適當使用注釋信息。在書寫程序時,適當?shù)丶尤胱⑨屚瑯涌稍黾映绦虻目勺x性。

第二章C程序設計的初步知識C程序書寫格式建議第二章C程序設計的初步知識C程序標識符

C語言中,符號的命名必須遵守一定的規(guī)則,按此規(guī)則命名的符號稱為標識符。合法的標識符命名規(guī)則為:標識符可以由字母、數(shù)字和下劃線組成,并且第一個字符必須為字母或下劃線。[提醒:c語言標識符中大寫字母和小寫字母被認為是兩個不同的字符]第二章C程序設計的初步知識C程序標識符第二章C程序設計的初步知識C程序標識符分類

關鍵字(由C語言預先規(guī)定的,見附錄4)如:int,double

預定義標識符(預先定義且具有特殊含義)如printf,define

用戶標識符(見名知義)用來給變量、函數(shù)、數(shù)組等命名。

第二章C程序設計的初步知識C程序標識符分類第二章C程序設計的初步知識C程序常量和變量

關于常量、變量及數(shù)據(jù)類型說明的程序?qū)嵗?程序名為sinree_c3.c。#include<stdio.h>main(){inta=3; /*定義整型變量a并賦予常量值3*/

shortr=6; /*定義短整型變量r并賦予常量值6*/

charc='a'; /*定義字符變量c并賦予字符常量值'a'*/floatpi=3.14; /*定義單精度實型變量pi并賦予實型常量值3.14*/

doubles; /*定義雙精度實型變量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程序設計的初步知識C程序常量和變量第二章C程序設計的初步知識常量:在程序運行過程中,其值不能改變的量。根據(jù)數(shù)據(jù)類型可以分為數(shù)值型(有正、負之分)【整型常量(不帶小數(shù)點)、實型常量(必須用小數(shù)點)】、字符常量(如‘a(chǎn)’、’d’)和字符串(“ncre”、”beijing”)常量。第二章C程序設計的初步知識常量:在程序運行過程中,其值第二章C程序設計的初步知識符號常量#include<stdio.h>main(){doubler,s,l;r=5.0;s=3.14*r*r;l=2*3.14*r;printf("s=%f,l=%f\n",s,l);}符號常量

#include<stdio.h>#definePI3.14main(){doubler,s,l;r=5.0;s=PI*r*r;l=2*PI*r;printf("s=%f,l=%f\n",s,l);}第二章C程序設計的初步知識符號常量符號常量第二章C程序設計的初步知識符號常量用#define命令行(不是語句,所以后面不能加分號)定義一個字符(通常用大寫字母)代表一個常量。#definePI3.14第二章C程序設計的初步知識符號常量第二章C程序設計的初步知識變量:在程序運行過程中值可以改變的量。變量實質(zhì)上代表了內(nèi)存中的某個存儲單元。變量必須先定義后使用。第二章C程序設計的初步知識變量:在程序運行過程中值可以第二章C程序設計的初步知識整型數(shù)十進制:0123456789八進制:01234567

c程序中八進制開頭加0十六進制:0123456789

abcdefc程序中十六進制開頭加0x第二章C程序設計的初步知識整型數(shù)第二章C程序設計的初步知識整型常量#include<stdio.h>main(){inta=12;printf("a=%d,a=%o,a=%#o,a=%x,a=%#x\n",a,a,a,a,a);}第二章C程序設計的初步知識整型常量第二章C程序設計的初步知識整型變量

基本型:用int關鍵字進行定義

intk;

一個定義語句用一個;結(jié)束多個變量用,隔開

intk,m,n;(僅開辟存儲單元,不存放初值,此時變量值無意義)變量初始化:intm=1,n=2,k=3;

第二章C程序設計的初步知識整型變量第二章C程序設計的初步知識整型數(shù)據(jù)分類

短整型:short[int]

長整型:int或long[int]

無符號型:unsigned

在vc6.0中整型常量后面加一個字母l或L

在無符號整數(shù)常量后加u或U

若長整型無符號可以加lu或LU第二章C程序設計的初步知識整型數(shù)據(jù)分類數(shù)據(jù)類型名說明VisualC++6.0環(huán)境TurboC2.0環(huán)境字節(jié)取值范圍字節(jié)取值范圍short[int]短整型2-32768~327672-32768~32767signedshort[int]帶符號短整型2-32768~327672-32768~32767unsignedshort[int]無符號短整型20~6553520~65535int整型4-2147483648~21474836472-32768~32767signed[int]帶符號整型4-2147483648~21474836472-32768~32767unsigned[int]無符號整型40~429496729520~65535long[int]長整型4-2147483648~21474836474-2147483648~2147483647signedlong[int]帶符號長整型4-2147483648~21474836474-2147483648~2147483647unsignedlong[int]無符號長整型40~429496729540~4294967295數(shù)據(jù)類型名說明VisualC++6.0環(huán)境TurboC第二章C程序設計的初步知識整數(shù)在內(nèi)存中的存儲形式

一個字節(jié)中的最右邊一位稱為最低位;一個字節(jié)中的最左邊一位稱為最高位;對于一個有符號整數(shù),最高位用來存放整數(shù)的符號,稱為符號位。若是正整數(shù),最高位放置0,若是負整數(shù),最高位放置1。

第二章C程序設計的初步知識整數(shù)在內(nèi)存中的存儲形式第二章C程序設計的初步知識整數(shù)在內(nèi)存中的存儲形式

正整數(shù):原碼表示。負整數(shù):補碼表示。(取反加1)二進制轉(zhuǎn)十進制為取反減1正整數(shù)5在內(nèi)存中的二進制碼為:

0000000000000101(原碼)最大正整數(shù)0111111111111111-5的二進制10000101,其反碼:11111010,補碼:11111011第二章C程序設計的初步知識整數(shù)在內(nèi)存中的存儲形式第二章C程序設計的初步知識實型數(shù)據(jù)小數(shù)形式:由數(shù)字和小數(shù)點組成的一種實數(shù)表示形式。(必須有小數(shù)點)指數(shù)形式:以“e”或“E”跟一個整數(shù)來表示以10為底的冪,“e”或“E”之前必須有數(shù)字,且“e”或“E”后面的指數(shù)必須為整數(shù)。(“e”或“E”的前后以及數(shù)字之間無空格)

第二章C程序設計的初步知識實型數(shù)據(jù)第二章C程序設計的初步知識實型數(shù)據(jù)單精度float4個字節(jié)

雙精度double8個字節(jié)

第二章C程序設計的初步知識實型數(shù)據(jù)第二章C程序設計的初步知識

算術表達式

基本算術表達式:

+、-、*、/、%(%運算對象為整型)注意:+、-可以看做單目,也可看做雙目運算符號。雙目運算符兩邊運算數(shù)的類型一致,則所得結(jié)果的類型與運算數(shù)的類型一致。如:1.0/2.0=0.5?=0;若不一致,自動進行類型轉(zhuǎn)換,轉(zhuǎn)換的原則為“就大”所有實型數(shù)運算都以雙精度方式進行。第二章C程序設計的初步知識算術表達式第二章C程序設計的初步知識運算符的優(yōu)先級

單目運算符“+”和“-”的結(jié)合性是從右到左。在算術表達式中,可以使用多層圓括號,但左右括號必須配對。若包含不同優(yōu)先級的運算符,則按運算符的優(yōu)先級由高到低進行,若相同,則按結(jié)合方向進行。第二章C程序設計的初步知識運算符的優(yōu)先級第二章C程序設計的初步知識強制類型轉(zhuǎn)換表達式(類型名)(表達式)如(int)3.234第二章C程序設計的初步知識強制類型轉(zhuǎn)換表達式第二章C程序設計的初步知識賦值表達式“=”賦值運算符,賦值運算的功能是先求出右邊表達式的值,然后把此值賦給賦值號左邊的變量。注意:賦值運算符優(yōu)先級別僅高于逗號運算符;且結(jié)合性為自右向左;賦值表達式的值為最左邊變量所得的新值。第二章C程序設計的初步知識賦值表達式第二章C程序設計的初步知識復合賦值表達式+=n+=2n=n+2-=n-=2n=n-2*=n*=2n=n*2/=n/=2n=n/2%=n%=2n=n%2第二章C程序設計的初步知識復合賦值表達式第二章C程序設計的初步知識復合運算中的類型轉(zhuǎn)換

兩側(cè)不一致,把右側(cè)數(shù)值按左側(cè)變量類型進行轉(zhuǎn)換。也可用強類型轉(zhuǎn)換的方式人為的轉(zhuǎn)換。

第二章C程序設計的初步知識復合運算中的類型轉(zhuǎn)換第二章C程序設計的初步知識自加、自減、逗號運算符自加++使運算對象值加1自減--使運算對象值減1++i

i++++i;i++;

i的值都加1前綴加1,后綴不加1

--i

i----i;i

--;

i的值都減1前綴減1,后綴不減1

第二章C程序設計的初步知識自加、自減、逗號運算符第二章C程序設計的初步知識#include<stdio.h>main(){inti=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程序設計的初步知識#include<stdio第二章C程序設計的初步知識逗號運算符和逗號表達式

表達式1,表達式2,……表達式n結(jié)合性:從左到右,最后一個表達式的值就是此逗號表達式的值。逗號運算符的優(yōu)先級最低。

第二章C程序設計的初步知識逗號運算符和逗號表達式第三章順序結(jié)構順序結(jié)構:在程序中按語句出現(xiàn)的順序逐條執(zhí)行。賦值語句:在賦值表達式的尾部加上一個“;”號。應出現(xiàn)在函數(shù)的可執(zhí)行部分。

第三章順序結(jié)構順序結(jié)構:在程序中按語句出現(xiàn)的順序逐條執(zhí)第三章順序結(jié)構數(shù)據(jù)輸出:把數(shù)據(jù)從計算機內(nèi)部送到計算機外部設備上的操作。在VC6.0環(huán)境下,在調(diào)用輸入和輸出的庫函數(shù)之前要求在源程序中出現(xiàn)包含頭文件stdio.h的命令行。

第三章順序結(jié)構數(shù)據(jù)輸出:把數(shù)據(jù)從計算機內(nèi)部送到計算機第三章順序結(jié)構

printf函數(shù)

printf(格式控制,輸出項1,輸出項2,…)格式控制是字符串形式,作用是將要輸出的數(shù)據(jù)按照指定的格式輸出和提供需要原樣輸出的文字或字符。如:d%、f%、e%

第三章順序結(jié)構printf函數(shù)第三章順序結(jié)構格式字符

%c%d%o(%#o)%x(%#x)%u%f%e%s%p%%

長度修飾符在%和格式字符之間,可以加入長度修飾符,以保證數(shù)據(jù)輸出格式的正確和對齊。長整%ld短整%hd第三章順序結(jié)構格式字符第三章順序結(jié)構寬度說明:%和格式字符之間插入一個整數(shù)常數(shù)來指定輸出的寬度n

對于float和double的實數(shù),可以用n1.n2的形式來輸出,或者用.n2輸出。在%d和寬度之間加“-”實現(xiàn)數(shù)據(jù)左對齊加“+”在每一個數(shù)字前面帶正負號。

第三章順序結(jié)構寬度說明:第三章順序結(jié)構注意事項一般在多個輸出數(shù)之間留逗號、空格或者回車。要輸出%符號,在格式控制符中用%%

printf函數(shù)有返回值,返回值是本次調(diào)用輸出字符的個數(shù),包括回車等控制符。

第三章順序結(jié)構注意事項第三章順序結(jié)構

scanf函數(shù)scanf(格式控制,輸入項1,輸入項2,…)主要作用是指定輸入時的數(shù)據(jù)轉(zhuǎn)換格式,輸入項之間用逗號隔開,對于int,float,double類型變量,在變量之前必須加&符號作為輸入項。

第三章順序結(jié)構scanf函數(shù)第三章順序結(jié)構格式字符%c%d%i%o%x%u%f%e%s

第三章順序結(jié)構格式字符第三章順序結(jié)構輸入整數(shù)或者實數(shù)這類數(shù)值型數(shù)據(jù)時,輸入的數(shù)據(jù)之間必須用空格、回車符號等間隔符號隔開??梢灾付ㄝ斎霐?shù)據(jù)所指定的寬度一般在使用輸入函數(shù)前使用輸出函數(shù)對輸入數(shù)據(jù)進行說明,且盡量不要使用通配符。

第三章順序結(jié)構輸入整數(shù)或者實數(shù)這類數(shù)值型數(shù)據(jù)時,輸入的第三章順序結(jié)構復合語句和空語句{語句1;

語句2;……語句n;}第三章順序結(jié)構復合語句和空語句第三章順序結(jié)構空語句

只有一個分號的語句。

第三章順序結(jié)構空語句第三章順序結(jié)構例題3.1

AB提問:若A和B桶都裝了水(不一定是裝滿),請問如何將A和B桶中的水調(diào)換?(A,B的容積不受限制)第三章順序結(jié)構例題3.1A第三章順序結(jié)構例題3.2注意:十進制小數(shù)點移位是通過10的n次方的乘除來實現(xiàn).四舍五入在c語言中的操作:可以通過將小數(shù)點移動到舍入數(shù)位前,加0.5,然后取整來實現(xiàn),最后再將小數(shù)點移回.強類型轉(zhuǎn)換前要加括號.

double類型在使用scanf輸入變量時,使用%lf格式控制符.

第三章順序結(jié)構例題3.2第四章選擇結(jié)構選擇結(jié)構:根據(jù)判斷的結(jié)果(邏輯值)決定程序的不同流程.邏輯值:關系運算和邏輯運算都會得到一個邏輯值,C語言中,0代表邏輯值“假”,非0(正數(shù)或者負數(shù))代表“真”.

第四章選擇結(jié)構選擇結(jié)構:根據(jù)判斷的結(jié)果(邏輯值)決定程第四章選擇結(jié)構關系運算:比較運算,進行兩個數(shù)的比較,判斷比較的結(jié)果是否符合指定的條件.關系運算符:<<=>>===!=小于小與等于大于大于等于等于不等于

第四章選擇結(jié)構關系運算:比較運算,進行兩個數(shù)的比較,判第四章選擇結(jié)構注意:兩個字符之間不允許有空格.關系運算符是雙目運算符,具有從左至右的結(jié)合性.<、<=、>、>=優(yōu)先級相同,但高于優(yōu)先級相同的==、!=如a==b<c算術運算符優(yōu)先級>關系運算符優(yōu)先級>賦值運算符優(yōu)先級如a=b<=c+d*e==f

第四章選擇結(jié)構注意:第四章選擇結(jié)構關系表達式:由關系運算符構成的表達式。關系表達式的值:整數(shù)0或1關系運算符兩邊值的類型不一致時,自動進行類型轉(zhuǎn)換。浮點數(shù)由于存放有誤差,x==y為0。第四章選擇結(jié)構關系表達式:由關系運算符構成的表達式。第四章選擇結(jié)構邏輯運算符&&邏輯“與”雙目||邏輯“或”雙目!邏輯“非”單目結(jié)合性:從左至右優(yōu)先級:!>&&>||如b||c&&!d第四章選擇結(jié)構邏輯運算符第四章選擇結(jié)構優(yōu)先級比較!>算術>關系>&&>||>賦值如:f=a||b<=!c+d&&e

第四章選擇結(jié)構優(yōu)先級比較第四章選擇結(jié)構邏輯運算規(guī)則非運算!0為1!1為0是否

與運算1&&1為1同時滿足條件

0&&11&&00&&0為0

或運算0||0為0不滿足任何一個條件

0||11||01||1為1第四章選擇結(jié)構邏輯運算規(guī)則第四章選擇結(jié)構邏輯運算規(guī)則非運算!0為1!1為0是否

與運算1&&1為1同時滿足條件

0&&11&&00&&0為0

或運算0||0為0不滿足任何一個條件

0||11||01||1為1第四章選擇結(jié)構邏輯運算規(guī)則第四章選擇結(jié)構邏輯運算規(guī)則關系式0<x<10在c語言中的表達0<x&&x<10&&或||邏輯表達式“短路”現(xiàn)象當A為0時,不需計算B,可知A&&B為0當A為1時,不需計算B,可知A||B為1第四章選擇結(jié)構邏輯運算規(guī)則第四章選擇結(jié)構

if語句

if(表達式)語句

if(表達式)語句1

else語句2第四章選擇結(jié)構if語句第四章選擇結(jié)構

if語句

if(表達式)語句如if(a<b){t=a;a=b;b=t;}第四章選擇結(jié)構if語句第四章選擇結(jié)構

if語句

if(表達式)語句語句只能為一條語句,可以把多條語句組合成復合語句.執(zhí)行過程:計算表達式中的值,如果為真,執(zhí)行if子句,然后執(zhí)行if語句后的一個語句;否則,跳過if子句,直接執(zhí)行if語句后的一個語句;第四章選擇結(jié)構if語句第四章選擇結(jié)構

if語句

if(表達式)語句語句只能為一條語句,可以把多條語句組合成復合語句.執(zhí)行過程:計算表達式中的值,如果為真,執(zhí)行if子句,然后執(zhí)行if語句后的一個語句;否則,跳過if子句,直接執(zhí)行if語句后的一個語句;第四章選擇結(jié)構if語句第四章選擇結(jié)構

if語句

if(表達式)語句1

else語句2執(zhí)行過程:計算表達式的值,如果表達式的值為真,執(zhí)行if子句,然后跳過else子句,去執(zhí)行if語句之后的下一條語句;如果表示式的值為假,跳過if子句,執(zhí)行else子句,然后去執(zhí)行if語句之后的下一條語句.第四章選擇結(jié)構if語句第四章選擇結(jié)構

if語句

if(表達式)語句1

else語句2執(zhí)行過程:計算表達式的值,如果表達式的值為真,執(zhí)行if子句,然后跳過else子句,去執(zhí)行if語句之后的下一條語句;如果表示式的值為假,跳過if子句,執(zhí)行else子句,然后去執(zhí)行if語句之后的下一條語句.第四章選擇結(jié)構if語句第四章選擇結(jié)構

if語句的嵌套(一)

if(表達式1)

if(表達式2)語句1

else語句2

else

語句3第四章選擇結(jié)構if語句的嵌套(一)第四章選擇結(jié)構

if語句的嵌套(二)

if(表達式1){if(表達式2)語句1}else語句2注意:else子句總與前面最近不帶else的if相結(jié)合.

第四章選擇結(jié)構if語句的嵌套(二)第四章選擇結(jié)構

if語句的嵌套(三)

if(表達式1)語句1else

if(表達式2)語句2

else語句3

if(表達式1)語句1elseif(表達式2)語句2

else語句3等價盡量將內(nèi)嵌的if語句放在else子句中.第四章選擇結(jié)構if語句的嵌套(三)if(表達式第四章選擇結(jié)構

if語句的嵌套(四)

if(表達式1)語句1else

if(表達式2)語句2

if(表達式1)語句1elseif(表達式2)語句2

等價盡量將內(nèi)嵌的if語句放在else子句中.第四章選擇結(jié)構if語句的嵌套(四)if(表達式第四章選擇結(jié)構

if語句的多層嵌套if(表達式1)語句1else

if(表達式2)語句2

else

if(表達式3)語句3…else語句n

if(表達式1)語句1elseif(表達式2)語句2elseif(表達式3)語句3…else語句n等價逐一對if后的表達式進行檢測,只執(zhí)行其中的一個表達式為真的子句,若所有表達式為0,執(zhí)行最后的else子句;若無最后的else子句,不執(zhí)行任何的子句.第四章選擇結(jié)構if語句的多層嵌套if(表達式1第四章選擇結(jié)構條件表達式構成的選擇結(jié)構條件運算符:?:條件表達式:表達式1?表達式2:表達式3運算功能:如果表達式1為真,求表達式2的值,此時表達式2的值就是整個條件表達式的值;如果表達式1為假,求表達式3的值,此時表達式3的值就是整個條件表達式的值;

第四章選擇結(jié)構條件表達式構成的選擇結(jié)構第四章選擇結(jié)構條件表達式構成的選擇結(jié)構

條件表達式的優(yōu)先級別低于關系運算符和算術運算符,但高于賦值運算符.如:y=x>10?100:200x<0?(-1)*x:x

第四章選擇結(jié)構條件表達式構成的選擇結(jié)構第四章選擇結(jié)構switch表達式構成的選擇結(jié)構switch(表達式){case常量表達式1:語句1

case常量表達式2:語句2…

case常量表達式n:語句ndefault:語句n}

通常和break語句聯(lián)合使用,當執(zhí)行到break時,立即跳出switch語句.第四章選擇結(jié)構switch表達式構成的選擇結(jié)構通常和第四章選擇結(jié)構語句標號和goto語句

gotostop;…

stop:printf(“end\n”);

第四章選擇結(jié)構語句標號和goto語句第五章循環(huán)結(jié)構

while語句和用while語句構成的循環(huán)

while(表達式)循環(huán)體例如:

k=0;while(k<10){printf(“*”);k++;}

第五章循環(huán)結(jié)構while語句和用while語句構成的第五章循環(huán)結(jié)構

do-while語句及其循環(huán)

do

循環(huán)體

while(表達式);例如:do{i++;s+=i;}While(i<10);

第五章循環(huán)結(jié)構do-while語句及其循環(huán)第五章循環(huán)結(jié)構

for語句及其循環(huán)

for(表達式1;表達式2;表達式3)循環(huán)體例如:

for(k=0;k<10;k++)printf(“*”);

表達式1;While(表達式2){循環(huán)體;表達式3;}等價形式第五章循環(huán)結(jié)構for語句及其循環(huán)表達式1;等價形式第五章循環(huán)結(jié)構

break語句和continue語句Break在循環(huán)結(jié)構中終止本層循環(huán)體;Continue跳過本次循環(huán)體中余下尚為執(zhí)行的語句,立刻進行下一次的循環(huán)條件判定,可以理解為僅結(jié)束本次循環(huán).

第五章循環(huán)結(jié)構break語句和continue語句第六章字符型數(shù)據(jù)字符型常量

C語言中,一個字符常量代表ASCII字符集(見附錄七)中的一個字符,用單引號把一個字符括起來作為字符常量.例如:a為標識符,‘a(chǎn)’為字符型常量.

第六章字符型數(shù)據(jù)字符型常量第六章字符型數(shù)據(jù)字符型常量注意:大寫字母和小寫字母的ASCII值不同,因而代表不同的字符常量.單引號中的空格也是一個字符常量.字符常量只能包含一個字符.字符常量只能用單引號括起來,不能用雙括號.字符常量在內(nèi)存中占一個字節(jié),存放的是字符的ASCII代碼值.

第六章字符型數(shù)據(jù)字符型常量第六章字符型數(shù)據(jù)字符型常量轉(zhuǎn)義字符常量‘\特定字符’\n回車\\反斜杠\‘單引號\“雙引號\ddd三位八進制代表的一個ASCII字符\xhh二位十六進制代表的一個ASCII字符注意:轉(zhuǎn)義字符常量只代表一個字符.

第六章字符型數(shù)據(jù)字符型常量第六章字符型數(shù)據(jù)字符串常量字符串常量是由雙引號括起來的一串字符.

在c語言中,系統(tǒng)在每個字符串的最后自動加入一個字符‘\0’作為字符串的結(jié)束標志.

注意:“”稱為空串,也是一個字符串常量,占用一個字節(jié)的存儲空間.

第六章字符型數(shù)據(jù)字符串常量第六章字符型數(shù)據(jù)字符量的運算在C程序中,字符量可參與任何整數(shù)運算.大小寫字母的轉(zhuǎn)換:大寫字母ASCII值=小寫字母ASCII值-32可以將數(shù)字字符轉(zhuǎn)換成整數(shù)值,也可以將整數(shù)值轉(zhuǎn)換成數(shù)字字符.字符量可以進行關系運算.

第六章字符型數(shù)據(jù)字符量的運算第六章字符型數(shù)據(jù)字符變量

用關鍵字char進行定義

charch1=‘a(chǎn)’;

字符變量可以參與整型變量允許的運算,有可以使用與字符處理相關的庫函數(shù).

第六章字符型數(shù)據(jù)字符變量第六章字符型數(shù)據(jù)字符的輸入和輸出printf輸出字符時使用格式說明符%c,也可以在c前加入整數(shù)來指定輸出字符時所占的寬度.用scanf輸入字符時也用格式說明符%c,當%c一個接一個時,字符之間不應有間隔符號(如回車,空格).

第六章字符型數(shù)據(jù)字符的輸入和輸出第六章字符型數(shù)據(jù)

putchar和getchar輸入和輸出函數(shù)

putchar輸出字符putchar(ch);getchar輸入字符ch=getchar();

注意:只有在用戶敲入enter鍵時,讀入才開始執(zhí)行.

第六章字符型數(shù)據(jù)putchar和getchar輸入和第七章函數(shù)一個實用的c語言源程序總是由許多函數(shù)組成.這些函數(shù)中可以調(diào)用c提供的庫函數(shù),也可以調(diào)用由用戶或他人編寫的函數(shù).

c源程序在正常情況下總是從main函數(shù)開始執(zhí)行,main()結(jié)束.

第七章函數(shù)一個實用的c語言源程序總是由許多函數(shù)組成.第七章函數(shù)熟悉c語言提供的豐富庫函數(shù),應正確調(diào)用.調(diào)用c語言標準庫函數(shù)要求使用include命令行.include命令行必須以#開頭,系統(tǒng)提供的頭文件以.h為文件的后綴,文件名用一對雙引號“”或一對尖括號<>括起來.標準庫函數(shù)的調(diào)用形式:出現(xiàn)在表達式中或者作為獨立的語句完成某種操作。

第七章函數(shù)熟悉c語言提供的豐富庫函數(shù),應正確調(diào)用.第七章函數(shù)函數(shù)的定義與返回值函數(shù)定義的語法

函數(shù)返回值的類型名函數(shù)名(類型名形式參數(shù)1,類型名形式參數(shù)2,……){說明部分語句部分}

注意:不能在函數(shù)的內(nèi)部定義函數(shù)。

函數(shù)名和形式參數(shù)都是用戶命名的標識符,同一程序中,函數(shù)名必須唯一,形式參數(shù)名只要在同一函數(shù)中唯一即可。若在函數(shù)的首部省略了函數(shù)返回值的類型名,則默認函數(shù)返回值的類型為int類型。除了返回值類型為int類型的函數(shù)外,函數(shù)必須先定義(或說明)后調(diào)用。若函數(shù)只是用于完成某些操作,沒有函數(shù)值返回,則必須把函數(shù)定義成void類型。第七章函數(shù)函數(shù)的定義與返回值函數(shù)名和形式參數(shù)都是第七章函數(shù)函數(shù)的定義與返回值如:

doubleadd(doublea,doubleb){doubles;s=a+b;returns;}

函數(shù)體中,除形參外,用到的其他變量必須在說明部分進行定義,這些變量(包括形參),只在函數(shù)被調(diào)用時才臨時開辟存儲單元,當退出函數(shù)時,這些臨時開辟的存儲單元全部被釋放掉,因此這種變量只在函數(shù)體內(nèi)部起作用,與其他函數(shù)體中的變量互不相干,它們可以和其他函數(shù)中的變量同名。第七章函數(shù)函數(shù)的定義與返回值函數(shù)體中,除形參外,第七章函數(shù)函數(shù)的定義與返回值如:

doubleadd(doublea,doubleb){doubles;s=a+b;returns;}

函數(shù)的值通過return語句返回,return語句的形式如下:return表達式;或return(表達式);return語句中表達式的值就是所求的函數(shù)值,此表達式值的類型必須與函數(shù)首部所說明的類型一致。若類型不一致,則以函數(shù)值的類型為準,由系統(tǒng)自動進行轉(zhuǎn)換。

當程序執(zhí)行到return語句時,程序的流程就返回到調(diào)用該函數(shù)的地方,并帶回函數(shù)值。第七章函數(shù)函數(shù)的定義與返回值函數(shù)的值通過ret第七章函數(shù)函數(shù)的定義與返回值如:

doubleadd(doublea,doubleb){doubles;s=a+b;returns;}

在同一個函數(shù)中,可以根據(jù)需要在多處出現(xiàn)return語句,在函數(shù)體的不同部位退出函數(shù),但return只可能執(zhí)行一次return語句中也可以不含表達式,這時必須定義函數(shù)為void類型函數(shù)體內(nèi)可以沒有return語句,這時必須定義函數(shù)為void類型,程序的流程就一直執(zhí)行到函數(shù)末尾的“}”,然后返回調(diào)用函數(shù),也沒有確定的函數(shù)值帶回。第七章函數(shù)函數(shù)的定義與返回值在同一個函數(shù)中,可第七章函數(shù)函數(shù)的兩種調(diào)用方式函數(shù)的一般調(diào)用形式為:函數(shù)名(實參表)若函數(shù)無形參,調(diào)用形式為

函數(shù)名()一般情況下,可用兩種方式調(diào)用函數(shù):

當所調(diào)用的函數(shù)用于求出某個值時,函數(shù)的調(diào)用可作為表達式出現(xiàn)在允許表達式出現(xiàn)的任何地方。當函數(shù)僅進行某些操作而不返回函數(shù)值,這時函數(shù)的調(diào)用可作為一條獨立的語句。

當實參個數(shù)多于一個時,各實參之間用逗號隔開。實參的個數(shù)必須與所調(diào)函數(shù)中的形參相同,類型一一對應匹配。第七章函數(shù)函數(shù)的兩種調(diào)用方式當實參個數(shù)多于一個時,第七章函數(shù)函數(shù)調(diào)用的語法要求

調(diào)用函數(shù)時,函數(shù)名必須與所調(diào)用的函數(shù)名字完全一致。實參的個數(shù)必須與形參的個數(shù)一致。實參可以是表達式,在類型上應按位置與形參一一對應。函數(shù)必須先定義后調(diào)用(函數(shù)的返回值類型為int或char時除外).函數(shù)可以直接或間接的自己調(diào)用自己,稱為遞歸調(diào)用。

第七章函數(shù)函數(shù)調(diào)用的語法要求第七章函數(shù)函數(shù)說明的形式

函數(shù)說明的一般形式類型名函數(shù)名(參數(shù)類型1,參數(shù)類型2,……)也可以采用下面的形式類型名函數(shù)名(參數(shù)類型1參數(shù)1,參數(shù)類型2參數(shù)2,……)函數(shù)說明可以是一條獨立的說明語句,也可以與普通變量一起出現(xiàn)。

第七章函數(shù)函數(shù)說明的形式第七章函數(shù)函數(shù)說明的形式對函數(shù)進行說明能使c語言的編譯程序在編譯時進行有效的類型檢查。當在所有函數(shù)的外部、被調(diào)用之前說明函數(shù)時,在對函數(shù)進行說明的語句后面所有位置都可以對函數(shù)進行調(diào)用。函數(shù)說明也可以放在調(diào)用函數(shù)內(nèi)的說明部分。

第七章函數(shù)函數(shù)說明的形式第七章函數(shù)調(diào)用函數(shù)和被調(diào)用函數(shù)之間的數(shù)據(jù)傳遞三種方式:1、實參和形參之間進行數(shù)據(jù)傳遞2、通過return語句把函數(shù)值返回。3、通過全局變量。在C語言中,數(shù)據(jù)只能從實參單向傳遞給形參,稱為“按值”傳遞,也即是說,當簡單變量作為實參時,用戶不可能在函數(shù)中改變對應實參的值。

第七章函數(shù)調(diào)用函數(shù)和被調(diào)用函數(shù)之間的數(shù)據(jù)傳遞第八章地址和指針變量的地址和指針

ab

101210131201120212031204一個變量實質(zhì)上是代表了“內(nèi)存中的某個存儲單元”,若在程序中定義了一個變量,c編譯系統(tǒng)就會根據(jù)定義中變量的類型,為其分配一定字節(jié)數(shù)的內(nèi)存空間。每個變量的地址是指該變量所占存儲單元的第一個字節(jié)的地址。直接存取:直接按變量的地址存取變量值的方式。

第八章地址和指針變量的地址和指針第八章地址和指針變量的地址和指針

ppa

2002200210121013存放地址的變量稱為“指針變量”。間接存?。和ㄟ^指針變量間接存取變量值的的方式?!爸羔樧兞縫指向了變量a”就是指針變量p中存放了變量a的地址。在c語言中,指針被廣泛運用,它和數(shù)組、字符串、函數(shù)間數(shù)據(jù)的傳遞等有著密不可分的聯(lián)系。

10121012第八章地址和指針變量的地址和指針第八章地址和指針指針變量的定義和指針變量的基類型定義指針變量的一般形式如下:

類型名*指針變量名1,*指針變量名2,…..;如int*pi,*pj;double*pd;

我們稱int、double是指針變量的基類型。

第八章地址和指針指針變量的定義和指針變量的基類型第八章地址和指針指針變量的定義和指針變量的基類型如:

int**p,*s,k=20;s=&k;p=&s;對于基類型不同的指針變量,其內(nèi)容(地址值)增1、減1所跨越的字節(jié)數(shù)是不同的,因為指針移動的最小單位。

第八章地址和指針指針變量的定義和指針變量的基類型第八章地址和指針給指針變量賦地址值通過求地址運算符&獲得地址值

intk=1,*p,*q;q=&k;通過指針變量獲得地址值

p=q;通過標準函數(shù)獲得地址值

第八章地址和指針給指針變量賦地址值第八章地址和指針給指針變量賦“空”值

p=NULL;NULL是在stdio.h頭文件中定義的預定義符,因此在使用NULL時,應該在程序的前面出現(xiàn)預定義行#include<stdio.h>,NULL的代碼值為0,因此以上代碼等價于

p=‘\0’;或p=0;

第八章地址和指針給指針變量賦“空”值第八章地址和指針對指針變量的操作

通過指針來引用一個存儲單元當變量中存放了一個確切的地址值時,可以用“間接訪問運算符”*通過指針來引用該地址的存儲單元。如int*p,j=10,m;p=&j;m=*p;

第八章地址和指針對指針變量的操作第八章地址和指針對指針變量的操作間接訪問運算符*是一個單目運算符,必須出現(xiàn)在運算對象的左邊,其運算對象是存儲地址的指針變量或者是地址。注意:++和*具有相同優(yōu)先級,結(jié)合性為從右到左++*p*p+=1(*p)++*p+=1*p++p+=1

第八章地址和指針對指針變量的操作第八章地址和指針對指針變量的操作

移動指針:對指針變量加上或減去一個整數(shù),或通過賦值運算,使指針變量指向相鄰的存儲單元。

在對指針進行加、減運算時,數(shù)字“1”不再代表十進制整數(shù)“1”,而是指1個存儲單元長度。1個單元長度的字節(jié)數(shù),根據(jù)指針的基類型而定。

第八章地址和指針對指針變量的操作第八章地址和指針對指針變量的操作指針比較在關系表達式中可以對兩個指針進行比較,如:

int*p,*q;if(p<q)printf(“ppointstolowermemory”);if(p==‘\0’)printf(“ppointstoNUll”);

第八章地址和指針對指針變量的操作第八章地址和指針函數(shù)之間地址值的傳遞形參為指針變量時實參和形參之間的數(shù)據(jù)傳遞通過傳送地址值在被調(diào)用函數(shù)中直接改變調(diào)用函數(shù)中的變量的值。函數(shù)返回地址值。

第八章地址和指針函數(shù)之間地址值的傳遞第九章數(shù)組數(shù)組一組具有同一類型的變量在內(nèi)存中占有連續(xù)的存儲單元在c語言中,可以用a[0]、a[1]、a[2]、…這種形式來表示數(shù)組中連續(xù)的存儲單元,我們把它們稱為“帶下標的變量”或數(shù)組元素。

第九章數(shù)組數(shù)組第九章數(shù)組一維數(shù)組的定義一維數(shù)組:數(shù)組中每個元素只帶有一個下標形式:類型名數(shù)組名[整型常量(表達式)]如:inta[8];

a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]第九章數(shù)組一維數(shù)組的定義a[0]a[1第九章數(shù)組一維數(shù)組的定義如:inta[8];

a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]定義了一個名為a的一維數(shù)組。方括號的8規(guī)定了a數(shù)組含有8個元素,它們是a[0]、a[1]、……a[7]

類型名int規(guī)定a數(shù)組中每個元素都是整型,只能存放整型數(shù)。每個元素一個下標,c語言規(guī)定每個數(shù)組第一個元素的下標總是0(下標的下界),最后一個元素的下標應該是7(下標的上界)。可以用存儲單元的名字a[0]、a[1]、…a[7]直接引用各存儲單元。第九章數(shù)組一維數(shù)組的定義a[0]a[1第九章數(shù)組一維數(shù)組的定義多個數(shù)組說明符

doublew[22],v[100],u[5];

和普通變量名一起說明

charc1,c2,carr[81];第九章數(shù)組一維數(shù)組的定義第九章數(shù)組一維數(shù)組元素的引用引用形式數(shù)組名[下標表達式]如:doublex[8];

則x[0]、a[j]、a[m+n]都是對數(shù)組元素的合法引用。注意:一個數(shù)組元素實質(zhì)上就是一個變量名,代表內(nèi)存中的一個存儲單元,一個數(shù)組占有一串連續(xù)的存儲單元。另外,在c語言中,一個數(shù)組不能被整體引用,例如x數(shù)組,不能用x代表x[0]到x[7]這8個元素。第九章數(shù)組一維數(shù)組元素的引用第九章數(shù)組一維數(shù)組的初始化在定義語句中為所定義數(shù)組的各元素賦初值

inta[8]={0,1,2,3,4,5,6,7};

當所賦值初值少于所定義數(shù)組的元素個數(shù)時,將自動給后面的元素補以初值0如inta[3]={1};相當于inta[3]={1,0,0}

當所賦初值多于所定義數(shù)組的元素個數(shù)時,在編譯時將給出出錯信息。第九章數(shù)組一維數(shù)組的初始化第九章數(shù)組通過賦初值定義數(shù)組的大小

inta[]={0,1,2,3}

相當于inta[4]={0,1,2,3}

數(shù)組說明符的一對方括號中可以不指定數(shù)組的大小,可以根據(jù)賦初值來隱性定義數(shù)組元素的個數(shù)。

第九章數(shù)組通過賦初值定義數(shù)組的大小第九章數(shù)組一維數(shù)組的定義和數(shù)組元素的引用舉例定義

for(j=0;j<M;j++)a[j]=j;/*依次賦值*/

for(j=0;j<M;j++)printf(“%d”,a[j]);/*依次輸出*/for(j=M-1;j>=0;j--)printf(“%d”,a[j])/*倒序輸出*/for(j=0;j<M;j++)printf(“%d”,a[M-1-j])/*倒序輸出*/控制換行符正序(j+1)%n==0每輸出n個元素可以換行逆序j%n==0每輸出n個元素可以換行第九章數(shù)組一維數(shù)組的定義和數(shù)組元素的引用舉例第九章數(shù)組一維數(shù)組和指針

一維數(shù)組和數(shù)組元素的地址

c語言中,在函數(shù)體中或在函數(shù)外部定義的數(shù)組名可以認為是一個存放地址值的指針變量名,其中的地址值是數(shù)組第一個元素的地址,也就是數(shù)組所占一串連續(xù)存儲單元的起始地址,定義數(shù)組時的類型就是此指針變量的基類型。注意:這個指針變量的地址值不可改變,即不可給數(shù)組名重新賦值,可以認為數(shù)組名是一個地址常量。第九章數(shù)組一維數(shù)組和指針第九章數(shù)組一維數(shù)組和指針

一維數(shù)組和數(shù)組元素的地址

floata[10],*p,x;intk;for(k=0;k<10;k++)p=a+k;for(k=0;k<10;k++)scanf(“%d”,a+k);

語句p=&a[0];和p=a;都是合法的,功能相同,都使p指向了數(shù)組的首部地址。第九章數(shù)組一維數(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ù)組和指針

通過數(shù)組的首地址引用數(shù)組元素

inta[10];a是數(shù)組元素的首地址,a的值等于&a[0],a+1的值為&a[1]a[0]等于*&a[0],即*(a+0),*aa[1]等于*&a[1],即*(a+1)

第九章數(shù)組一維數(shù)組和指針第九章數(shù)組通過指針引用一維數(shù)組元素

floata[10],*p,k;p=a;

可以通過指針變量p來表示數(shù)組元素

a[0]*pa[1]*(p+1)

for(p=a;p-a<10;p++)printf(“%4d”,*p);

第九章數(shù)組通過指針引用一維數(shù)組元素第九章數(shù)組通過指針引用一維數(shù)組元素

floats[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中的地址值是可以改變的

第九章數(shù)組通過指針引用一維數(shù)組元素第九章數(shù)組函數(shù)之間對一維數(shù)組和數(shù)組元素的引用數(shù)組元素作實參數(shù)組名作實參

形參形式intarrin(int*a)intarrin(inta[])intarrin(inta[M])

注意:當數(shù)組名為實參時,在被調(diào)用函數(shù)中,并沒有為與數(shù)組名對應的形參另外開辟一串連續(xù)的存儲單元,而只是開辟了一個指針變量的存儲單元。

數(shù)組元素地址作為實參第九章數(shù)組函數(shù)之間對一維數(shù)組和數(shù)組元素的引用第九章數(shù)組二維數(shù)組二維數(shù)組:數(shù)組元素帶有兩個下標。邏輯上把二維數(shù)組看成一個具有行和列的表格。定義形式:

類型名數(shù)組名[常量表達式1][常量表達式2],……;如:inta[3][4]第九章數(shù)組二維數(shù)組第九章數(shù)組二維數(shù)組inta[3][4]的邏輯結(jié)構inta[3][4]的實際存儲結(jié)構第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][2]a[2][3]按行存放第九章數(shù)組二維數(shù)組第0列第1列第2列第3列第0行a第九章數(shù)組二維數(shù)組在c語言中,可以把一個二維數(shù)組看成一個一維數(shù)組,每個數(shù)組元素又是包含有若干個元素的一維數(shù)組。例如:inta[3][4]這個a數(shù)組可以看成是由a[0]、a[1]、a[2]三個元素組成的一維數(shù)組。其中每個元素又是由四個元素組成的一維數(shù)組。第九章數(shù)組二維數(shù)組第九章數(shù)組二維數(shù)組元素的引用數(shù)組名[下標表達式1][下標表達式2]二維數(shù)組的初始化

inta[4][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};inta[4][3]={{1,2},{4,5},{7},{10}};inta[4][3]={{1,2},{4,5}};inta[4][3]={1,2,3,4,5};

第九章數(shù)組二維數(shù)組元素的引用第九章數(shù)組通過賦初值定義二維數(shù)組的大小

inta[][3]={{1,2,3},{4,5},{6},{8}};

第一維大小由行數(shù)來決定。

inta[][3]={1,2,3,4,5};

第一維大小由以下規(guī)則決定:

a、當初值的個數(shù)能被第二維的常量表達式的值整除時,所得商數(shù)就是第一維的大小。

b、當初值的個數(shù)不能被第二維的常量表達式的值整除時,第一維的大小=所得商數(shù)+1

第九章數(shù)組通過賦初值定義二維數(shù)組的大小第九章數(shù)組二維數(shù)組的定義和數(shù)組元素引用舉例inta[M][N];for(i=0;i<M;i++)

for(j=0;j<N;j++)scanf(“%d”,&a[i][j]);for(i=0;i<M;i++)

for(j=0;j<N;j++)printf(“%d”,&a[i][j]);第九章數(shù)組二維數(shù)組的定義和數(shù)組元素引用舉例第九章數(shù)組二維數(shù)組和指針

int*p,a[3][4]

二維數(shù)組a由若干個一維數(shù)組組成

a[0]、a[1]、a[2]是一維數(shù)組名,代表一個不可變的地址常量,其值為二維數(shù)組每行第一個元素的地址,其基類型就是數(shù)組元素的類型。第九章數(shù)組二維數(shù)組和指針第九章數(shù)組二維數(shù)組和指針

int*p,a[3][4]

二維數(shù)組a也是一個地址值常量二維數(shù)組名也是一個存放地址常量的指針,其值為二維數(shù)組中第一個元素的地址。以上a數(shù)組,a的值和a[0]的值相同,但其基類型為具有4個整型元素的數(shù)組類型。a+0、a+1、a+2分別表示a數(shù)組中第一、第二、第三行的首地址。第九章數(shù)組二維數(shù)組和指針第九章數(shù)組二維數(shù)組和指針

int*p,a[3][4]

二維數(shù)組元素的地址&a[i][j]a[i]+j*(a+i)+j&a[0][0]+4*i+ja[0]+4*i+j

以上地址的基類

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論