




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語言程序設(shè)計(jì)語言程序設(shè)計(jì)重慶郵電大學(xué)移通學(xué)院計(jì)算機(jī)系重慶郵電大學(xué)移通學(xué)院計(jì)算機(jī)系 宋文強(qiáng)宋文強(qiáng)C語言程序設(shè)計(jì)第第7章章 一維數(shù)組及其指針一維數(shù)組及其指針第第7章內(nèi)容章內(nèi)容一維數(shù)組一維數(shù)組一維數(shù)組的定義與初始化一維數(shù)組的定義與初始化 一維數(shù)組的引用一維數(shù)組的引用指向一維數(shù)組的指針指向一維數(shù)組的指針指針的運(yùn)算指針的運(yùn)算 指向一維數(shù)組的指針指向一維數(shù)組的指針 一維數(shù)組及其指針作函數(shù)參數(shù)一維數(shù)組及其指針作函數(shù)參數(shù)數(shù)組的概念數(shù)組的概念數(shù)組是一組有序數(shù)據(jù)的集合,通過方括號(hào)下標(biāo)來數(shù)組是一組有序數(shù)據(jù)的集合,通過方括號(hào)下標(biāo)來訪問每個(gè)元素。訪問每個(gè)元素。在在C語言中,數(shù)組具有以下特點(diǎn):語言中,數(shù)組具有以下特點(diǎn):
2、數(shù)組變量必須先定義后使用,同一數(shù)組中各元素的數(shù)據(jù)數(shù)組變量必須先定義后使用,同一數(shù)組中各元素的數(shù)據(jù)類型必須相同。類型必須相同。每個(gè)數(shù)組元素的作用相當(dāng)于一個(gè)簡(jiǎn)單變量,可以通過數(shù)每個(gè)數(shù)組元素的作用相當(dāng)于一個(gè)簡(jiǎn)單變量,可以通過數(shù)組下標(biāo)來訪問組下標(biāo)來訪問 數(shù)組的長(zhǎng)度也是數(shù)組元素的個(gè)數(shù),必須在定義時(shí)給出數(shù)組的長(zhǎng)度也是數(shù)組元素的個(gè)數(shù),必須在定義時(shí)給出常常量值量值,確定后不能改變,確定后不能改變 同一數(shù)組中的數(shù)組元素在內(nèi)存中的空間是連續(xù)分布的,同一數(shù)組中的數(shù)組元素在內(nèi)存中的空間是連續(xù)分布的,數(shù)組名代表首地址數(shù)組名代表首地址一維數(shù)組的定義一維數(shù)組的定義l 數(shù)組在使用前,必須先定義,并給出數(shù)組在使用前,必須先定義
3、,并給出數(shù)組名數(shù)組名、數(shù)據(jù)類型名數(shù)據(jù)類型名、數(shù)組長(zhǎng)度數(shù)組長(zhǎng)度和和維數(shù)維數(shù)。l 一維數(shù)組定義的一般格式為:一維數(shù)組定義的一般格式為: 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)組名整型常量表達(dá)式;數(shù)組名整型常量表達(dá)式; l 例:例: #define N 20 float aN; 可以存放可以存放20個(gè)個(gè)float數(shù)據(jù)數(shù)據(jù) int b10; 可以存放可以存放10個(gè)個(gè)int數(shù)據(jù)數(shù)據(jù)一維數(shù)組定義的說明一維數(shù)組定義的說明l “數(shù)據(jù)類型數(shù)據(jù)類型”說明符表示說明符表示數(shù)組元素具有的數(shù)據(jù)類型數(shù)組元素具有的數(shù)據(jù)類型,可以,可以是是int、 short、long、char、unsigned、float、double等數(shù)據(jù)類型。等數(shù)據(jù)類
4、型。l “數(shù)組名數(shù)組名”命名規(guī)則和變量名相同。命名規(guī)則和變量名相同?!皵?shù)組名數(shù)組名”惟一標(biāo)識(shí)惟一標(biāo)識(shí)該數(shù)組該數(shù)組,各數(shù)組元素均用數(shù)組名來訪問,它,各數(shù)組元素均用數(shù)組名來訪問,它是整個(gè)數(shù)組元是整個(gè)數(shù)組元素的首地址素的首地址。 l “整型常量表達(dá)式整型常量表達(dá)式”的值表示數(shù)組中所包含的的值表示數(shù)組中所包含的數(shù)組元素總數(shù)組元素總個(gè)數(shù)個(gè)數(shù),即,即數(shù)組的長(zhǎng)度數(shù)組的長(zhǎng)度,必須是,必須是常量常量和和符號(hào)常量符號(hào)常量,不能是變,不能是變量量l 數(shù)組名后面的數(shù)組名后面的一對(duì)方括號(hào)一對(duì)方括號(hào)“”表示該數(shù)組是表示該數(shù)組是一維數(shù)組一維數(shù)組,“整型常量表達(dá)式整型常量表達(dá)式”只能用方括號(hào)括起來。只能用方括號(hào)括起來。 l
5、數(shù)組的每個(gè)元素分別使用:數(shù)組的每個(gè)元素分別使用:數(shù)組名數(shù)組名0、數(shù)組名數(shù)組名1、數(shù)數(shù)組名組名整型常量表達(dá)式整型常量表達(dá)式-1表示。表示。 l 相同數(shù)據(jù)類型的數(shù)組可以在同一個(gè)相同數(shù)據(jù)類型的數(shù)組可以在同一個(gè)“數(shù)據(jù)類型數(shù)據(jù)類型”說明符下說明符下一起定義,用逗號(hào)一起定義,用逗號(hào)“,”隔開,如隔開,如double a5,b10。 一維數(shù)組的存儲(chǔ)一維數(shù)組的存儲(chǔ)l 同一數(shù)組中的數(shù)組元素在內(nèi)存中同一數(shù)組中的數(shù)組元素在內(nèi)存中的空間是連續(xù)的的空間是連續(xù)的,數(shù)組名代表該數(shù)組名代表該連續(xù)內(nèi)存空間的首地址連續(xù)內(nèi)存空間的首地址。l 假定數(shù)組假定數(shù)組 int a10; 在內(nèi)存中的在內(nèi)存中的起始地址為起始地址為3000,其存
6、儲(chǔ)情況,其存儲(chǔ)情況如圖所示:如圖所示: l 一維數(shù)組在內(nèi)存中一維數(shù)組在內(nèi)存中連續(xù)占用的字連續(xù)占用的字節(jié)數(shù)數(shù)組長(zhǎng)度節(jié)數(shù)數(shù)組長(zhǎng)度sizeof(數(shù)據(jù)(數(shù)據(jù)類型)類型)。l 如如int a10,數(shù)組,數(shù)組a的字節(jié)數(shù)為的字節(jié)數(shù)為10個(gè)元素個(gè)元素2B20B(假設(shè)機(jī)(假設(shè)機(jī)器字長(zhǎng)為器字長(zhǎng)為16位)。數(shù)組位)。數(shù)組a的長(zhǎng)度的長(zhǎng)度可以可以使用使用sizeof(a)獲得獲得。 300230033000300130043005a1a0a2a9一維數(shù)組的初始化一維數(shù)組的初始化l 在定義數(shù)組的同時(shí),對(duì)數(shù)組元素進(jìn)行賦值,稱之為數(shù)組的在定義數(shù)組的同時(shí),對(duì)數(shù)組元素進(jìn)行賦值,稱之為數(shù)組的初始化。一般形式為:初始化。一般形式為:
7、 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)組名整型常量表達(dá)式數(shù)組名整型常量表達(dá)式=常數(shù)常數(shù)1,常數(shù),常數(shù)2,常數(shù),常數(shù)n; a0=1內(nèi)存用戶數(shù)據(jù)區(qū)內(nèi)存用戶數(shù)據(jù)區(qū)a1=3a2=2593000300230043008a3=-1a4=-10300600000001000000001111011011111111000000110000000000000011000000011111111111111111其中:常數(shù)其中:常數(shù)1,常數(shù),常數(shù)2,常數(shù),常數(shù)n的數(shù)據(jù)的數(shù)據(jù)類型必須與前面指定的數(shù)據(jù)類型一致。類型必須與前面指定的數(shù)據(jù)類型一致。例:例: 一維數(shù)組初始化方法一維數(shù)組初始化方法全部賦值全部賦值:給出:給出“整型常量表達(dá)
8、式整型常量表達(dá)式”的值和各元素的全部常數(shù)初值。的值和各元素的全部常數(shù)初值。各常數(shù)初值之間用逗號(hào)分開,從第一個(gè)常數(shù)開始依次賦給各數(shù)組元各常數(shù)初值之間用逗號(hào)分開,從第一個(gè)常數(shù)開始依次賦給各數(shù)組元素。素。例如:例如:float b3= 2.18,3.14,89.0 ;全部賦值,缺省長(zhǎng)度全部賦值,缺省長(zhǎng)度:給出各元素的全部常數(shù)初值,可不給出:給出各元素的全部常數(shù)初值,可不給出“整整型常量表達(dá)式型常量表達(dá)式”的值,即不指定數(shù)組長(zhǎng)度。的值,即不指定數(shù)組長(zhǎng)度。例如:例如:int a= -10,20,28,-1,88 ;部分賦值部分賦值:給出:給出“整型常量表達(dá)式整型常量表達(dá)式”的值和前面部分?jǐn)?shù)組元素的常的值
9、和前面部分?jǐn)?shù)組元素的常數(shù)初值。這時(shí)后面沒有賦初值的元素,系統(tǒng)會(huì)自動(dòng)賦以數(shù)初值。這時(shí)后面沒有賦初值的元素,系統(tǒng)會(huì)自動(dòng)賦以0值或值或0值。值。例如:例如:int a5= -10,20,28 ;如果需要將數(shù)組的全部元素賦以如果需要將數(shù)組的全部元素賦以0值或值或0值,則可以在定義數(shù)組時(shí)值,則可以在定義數(shù)組時(shí)添加添加static關(guān)鍵字并給出關(guān)鍵字并給出“整型常量表達(dá)式整型常量表達(dá)式”的值。的值。例如:例如:static int a5;一維數(shù)組的引用一維數(shù)組的引用l 數(shù)組除了作為數(shù)組除了作為函數(shù)參數(shù)函數(shù)參數(shù)或或字符數(shù)組作為字符串字符數(shù)組作為字符串使用時(shí)可以整體使用時(shí)可以整體引用外,其它情況必須以引用外,其
10、它情況必須以數(shù)組元素?cái)?shù)組元素的方式引用。的方式引用。l C提供了提供了下標(biāo)下標(biāo)、地址地址、指針指針三種方式三種方式引用數(shù)組元素引用數(shù)組元素,下標(biāo)方式,下標(biāo)方式用下標(biāo)表示引用的數(shù)組元素,地址方式用地址表示引用的數(shù)組用下標(biāo)表示引用的數(shù)組元素,地址方式用地址表示引用的數(shù)組元素,指針方式用指針變量表示引用的數(shù)組元素。元素,指針方式用指針變量表示引用的數(shù)組元素。l 下標(biāo)引用數(shù)組元素的一般形式為:下標(biāo)引用數(shù)組元素的一般形式為: 數(shù)組名下標(biāo);數(shù)組名下標(biāo); 其中,其中,下標(biāo)下標(biāo)可以是可以是整型常量整型常量、整型變量整型變量或或整型表達(dá)式整型表達(dá)式,表示對(duì),表示對(duì)應(yīng)數(shù)組元素在數(shù)組中的順序。應(yīng)數(shù)組元素在數(shù)組中的順
11、序。下標(biāo)的取值范圍為下標(biāo)的取值范圍為0、1、數(shù)、數(shù)組元素總個(gè)數(shù)組元素總個(gè)數(shù)-1。 一維數(shù)組引用說明一維數(shù)組引用說明l 數(shù)組元素和普通基本型變量一樣數(shù)組元素和普通基本型變量一樣的使用,可出現(xiàn)在的使用,可出現(xiàn)在C語言表達(dá)式中的語言表達(dá)式中的任何地方。任何地方。如:如: int b10; b0=b5+b7-b2*3;又如:又如:int i15 , n=3; i0=-10; i5=6; in*4=9;l 每個(gè)每個(gè)數(shù)組元素?cái)?shù)組元素與其它基本類型變量一樣與其它基本類型變量一樣有自己的地址有自己的地址,并,并用用“&”符符號(hào)獲取號(hào)獲取l C語言規(guī)定:語言規(guī)定:每個(gè)數(shù)組元素只能逐個(gè)引用每個(gè)數(shù)組元素只能逐個(gè)引用
12、,而不能一次引用整個(gè)數(shù)組,而不能一次引用整個(gè)數(shù)組l 引用數(shù)組元素之前,必須確保數(shù)組元素已經(jīng)被賦值引用數(shù)組元素之前,必須確保數(shù)組元素已經(jīng)被賦值,否則得到的是一,否則得到的是一個(gè)不確定的值個(gè)不確定的值l C語言不提供數(shù)組下標(biāo)越界的保護(hù)語言不提供數(shù)組下標(biāo)越界的保護(hù)。定義數(shù)組時(shí)用到的。定義數(shù)組時(shí)用到的“數(shù)組名數(shù)組名整型整型常量表達(dá)式常量表達(dá)式”和引用數(shù)組元素時(shí)用到的和引用數(shù)組元素時(shí)用到的“數(shù)組名數(shù)組名下標(biāo)下標(biāo)”是有區(qū)別的是有區(qū)別的一維數(shù)組的基本操作一維數(shù)組的基本操作輸入數(shù)組元素值:輸入數(shù)組元素值: for(i=0; i10; i+) scanf(%d, &ai); 輸出數(shù)組元素值:輸出數(shù)組元素值: f
13、or(i=0; i10; i+) printf(%d, ai); 一維數(shù)組的基本操作一維數(shù)組的基本操作求最大值求最大值max#include void main() int a8=35,12,44,97,65,70,32,28; int i, max; max=a0; for(i=1; i=7; i+) if(maxai) max=ai; printf(最大值最大值=%dn, max);一維數(shù)組的基本操作一維數(shù)組的基本操作求最小值求最小值min#include void main() int a8=35,12,44,97,65,70,32,28; int i, min; min=a0; for
14、(i=1; iai) min=ai; printf(最小值最小值=%dn, min);一維數(shù)組的基本操作一維數(shù)組的基本操作求最大值求最大值max 及及max在數(shù)組中的位置在數(shù)組中的位置#include void main() int a8=35,12,44,97,65,70,32,28; int i, p=0, max; max=a0; for(i=1; i=7; i+) if(maxai) max=ai; p=i; printf(最大值最大值=%d,是數(shù)組中的第,是數(shù)組中的第%d個(gè)元素個(gè)元素n, ap, p);一維數(shù)組的基本操作一維數(shù)組的基本操作求最小值求最小值min 及及min在數(shù)組中的位
15、置在數(shù)組中的位置#include void main() int a8=35,12,44,97,65,70,32,28; int i, p=0, min; min=a0; for(i=1; iai) min=ai; p=i; printf(最小值最小值=%d,是數(shù)組中的第,是數(shù)組中的第%d個(gè)元素個(gè)元素n, ap, p);一維數(shù)組的基本操作一維數(shù)組的基本操作求數(shù)組元素的累加和求數(shù)組元素的累加和sum#include void main() int a8=35,12,44,97,65,70,32,28; int i, sum=0; for(i=0; i=7; i+) sum+=ai; printf
16、(累加和累加和 sum=%dn, sum);課堂練習(xí)課堂練習(xí)已知跳水運(yùn)動(dòng)員的成績(jī)由已知跳水運(yùn)動(dòng)員的成績(jī)由8位裁判各自打分,去掉位裁判各自打分,去掉一個(gè)最高分,去掉一個(gè)最低分,剩下的裁判打分一個(gè)最高分,去掉一個(gè)最低分,剩下的裁判打分計(jì)算平均,即為運(yùn)動(dòng)員的最終成績(jī)。計(jì)算平均,即為運(yùn)動(dòng)員的最終成績(jī)。編寫程序,計(jì)算已經(jīng)保存在數(shù)組編寫程序,計(jì)算已經(jīng)保存在數(shù)組score 中的運(yùn)動(dòng)中的運(yùn)動(dòng)員最終成績(jī)。員最終成績(jī)。課堂練習(xí)課堂練習(xí)已知某教學(xué)班有學(xué)生已知某教學(xué)班有學(xué)生30人,考試成績(jī)保存在數(shù)組人,考試成績(jī)保存在數(shù)組score 中。編寫程序,分別統(tǒng)計(jì)及格和不及格人中。編寫程序,分別統(tǒng)計(jì)及格和不及格人數(shù)。數(shù)。及格及
17、格(60=score)不及格不及格(60)的人數(shù)分別有多少,并在屏幕上輸出。的人數(shù)分別有多少,并在屏幕上輸出。#include #include void main() int score30; int i, s1=0, s2=0; for(i=0; i30; i+) scorei=71*rand()/32767+30;printf(%5d, scorei);printf(n);for(i=0; i=60)s1+;elses2+;printf(及格人數(shù):及格人數(shù):%dn, s1);printf(不及格人數(shù):不及格人數(shù):%dn, s2);已知某教學(xué)班有學(xué)生已知某教學(xué)班有學(xué)生30人,考試成績(jī)保存在
18、數(shù)組人,考試成績(jī)保存在數(shù)組score 中。編寫程序,分別統(tǒng)計(jì)如下成績(jī)段中。編寫程序,分別統(tǒng)計(jì)如下成績(jī)段優(yōu)優(yōu)(=90)良良(80=score90)中中(70=score80)及格及格(60=score70)不及格不及格(a1,則交換;,則交換; 然然后比較第二個(gè)數(shù)與第三個(gè)數(shù);后比較第二個(gè)數(shù)與第三個(gè)數(shù); 依次類推,直至第依次類推,直至第n-1個(gè)數(shù)和第個(gè)數(shù)和第n個(gè)數(shù)比較為個(gè)數(shù)比較為止止第一趟排序過后,最大的數(shù)被安置在最后一個(gè)元素位置上;第一趟排序過后,最大的數(shù)被安置在最后一個(gè)元素位置上; (2)對(duì)前)對(duì)前n-1個(gè)數(shù)進(jìn)行第二趟冒泡排序,結(jié)果使次最大的數(shù)被安置在第個(gè)數(shù)進(jìn)行第二趟冒泡排序,結(jié)果使次最大的數(shù)
19、被安置在第n-1個(gè)元素位置;個(gè)元素位置; (3)重復(fù)上述過程,共經(jīng)過)重復(fù)上述過程,共經(jīng)過n-1趟冒泡排序后,排序結(jié)束。趟冒泡排序后,排序結(jié)束。 冒泡法在第一趟比較中要進(jìn)行冒泡法在第一趟比較中要進(jìn)行n-1次兩兩比較,在第次兩兩比較,在第j趟比較中要進(jìn)行趟比較中要進(jìn)行n-j次比較。次比較。冒泡排序第冒泡排序第1趟第趟第1次比較次比較65724189377554814966哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?冒泡排序第冒泡排序第1趟第趟第2次比較次比較65724189377554814966哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?冒泡排序第冒泡排序第1趟第趟第3次比較次比較6541728937
20、7554814966哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?冒泡排序第冒泡排序第1趟第趟第4次比較次比較65893741727554814966哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?冒泡排序第冒泡排序第1趟第趟第5次比較次比較65897541723754814966哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?冒泡排序第冒泡排序第1趟第趟第6次比較次比較65895441723775814966哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?冒泡排序第冒泡排序第1趟第趟第7次比較次比較65898141723775544966哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?冒泡排序第冒泡排序第1趟第趟第8次比較次比較
21、65894941723775548166哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?冒泡排序第冒泡排序第1趟第趟第9次比較次比較65896641723775548149哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?冒泡排序第冒泡排序第1趟第趟第9次比較過后次比較過后65668941723775548149第第1趟比較結(jié)束,最大值元素趟比較結(jié)束,最大值元素“沉底沉底”冒泡排序第冒泡排序第2趟第趟第1次比較次比較6689723775548149哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?6541冒泡排序第冒泡排序第2趟第趟第2次比較次比較6689413775548149哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?6
22、572冒泡排序第冒泡排序第2趟第趟第3次比較次比較6689416575548149哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?7237冒泡排序第冒泡排序第2趟第趟第4次比較次比較6689416537548149哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?7275冒泡排序第冒泡排序第2趟第趟第5次比較次比較66894165378149哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?727554冒泡排序第冒泡排序第2趟第趟第6次比較次比較66894165378149哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?725475冒泡排序第冒泡排序第2趟第趟第7次比較次比較6689416537哪個(gè)大?要不要交換?哪個(gè)大?要不要
23、交換?7254758149冒泡排序第冒泡排序第2趟第趟第8次比較次比較4989416537哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?7254758166冒泡排序第冒泡排序第2趟第趟第8次比較結(jié)束次比較結(jié)束49894165377254756681第第2趟比較結(jié)束,次最大值元素趟比較結(jié)束,次最大值元素“沉底沉底”冒泡排序第冒泡排序第3趟第趟第1次比較次比較49894165377254756681哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?冒泡排序第冒泡排序第3趟第趟第2次比較次比較4989417254756681哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?6537冒泡排序第冒泡排序第3趟第趟第3次比較次比較
24、49894137657254756681哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?冒泡排序第冒泡排序第3趟第趟第4次比較次比較4989413765756681哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?7254冒泡排序第冒泡排序第3趟第趟第5次比較次比較4989413765756681哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?5472冒泡排序第冒泡排序第3趟第趟第6次比較次比較894137656681哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?54727549冒泡排序第冒泡排序第3趟第趟第7次比較次比較894137654981哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?54727566冒泡排序第冒泡排序第3趟
25、第趟第7次比較結(jié)束次比較結(jié)束89413765498154726675第第3趟比較結(jié)束,趟比較結(jié)束,3個(gè)大值元素個(gè)大值元素“沉底沉底”冒泡排序第冒泡排序第4趟第趟第1次比較次比較8965498154726675哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?4137冒泡排序第冒泡排序第4趟第趟第2次比較次比較8965498154726675哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?3741冒泡排序第冒泡排序第4趟第趟第3次比較次比較894981726675哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?37416554冒泡排序第冒泡排序第4趟第趟第4次比較次比較894981546675哪個(gè)大?要不要交換?哪個(gè)大?
26、要不要交換?37416572冒泡排序第冒泡排序第4趟第趟第5次比較次比較8981546675哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?3741657249冒泡排序第冒泡排序第4趟第趟第6次比較次比較8981544975哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?3741657266冒泡排序第冒泡排序第4趟第趟第6次比較結(jié)束次比較結(jié)束89815449753741656672冒泡排序第冒泡排序第5趟第趟第1次比較次比較89815449753741656672哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?冒泡排序第冒泡排序第5趟第趟第2次比較次比較89815449753741656672哪個(gè)大?要不要交換?哪個(gè)
27、大?要不要交換?冒泡排序第冒泡排序第5趟第趟第3次比較次比較89815449753741656672哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?冒泡排序第冒泡排序第5趟第趟第4次比較次比較8981547537416672哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?6549冒泡排序第冒泡排序第5趟第趟第5次比較次比較8981547537414972哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?6566冒泡排序第冒泡排序第5趟比較結(jié)束趟比較結(jié)束89815475374149726566冒泡排序第冒泡排序第6趟第趟第1次比較次比較89815475374149726566哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?冒泡排
28、序第冒泡排序第6趟第趟第2次比較次比較89815475374149726566哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?冒泡排序第冒泡排序第6趟第趟第3次比較次比較8981753741726566哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?5449冒泡排序第冒泡排序第6趟第趟第4次比較次比較8981753741723966哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?5465冒泡排序第冒泡排序第6趟比較結(jié)束趟比較結(jié)束89817537417249665465冒泡排序第冒泡排序第7趟第趟第1次比較次比較89817537417249665465哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?冒泡排序第冒泡排序第7趟第趟
29、第2次比較次比較8981753772665465哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?4149冒泡排序第冒泡排序第7趟第趟第3次比較次比較8981753772664165哪個(gè)大?要不要交換?哪個(gè)大?要不要交換?4954冒泡排序第冒泡排序第7趟比較結(jié)束趟比較結(jié)束89817537726641654954沒有元素交換,排序完成沒有元素交換,排序完成2022年4月14日星期四71例例7.7程序程序#include #define SIZE 30void sort(int array,int n);int main() int aSIZE,n,i; printf(Input student numbe
30、r: ); scanf(%d,&n); /* 輸入學(xué)生人數(shù)輸入學(xué)生人數(shù) */ printf(Input %d score: n,n); for(i=0; in; i+) scanf(%d,&ai); /* 輸入成績(jī)輸入成績(jī) */ printf(n); sort(a,n); /* 冒泡法排序冒泡法排序 */ printf(The sorted score: n); /* 輸出數(shù)據(jù)輸出數(shù)據(jù) */ for(i=0; in; i+) if(i%15=0) printf(n); printf(%4d ,ai); /* 輸出排序后的成績(jī)輸出排序后的成績(jī) */ return(0);/* 冒泡法排序函數(shù)冒泡法
31、排序函數(shù) */void sort(int array,int num) int i,j,t; for(j=0; jnum-1; j+) for(i=0; iarrayi+1) t=arrayi; arrayi=arrayi+1; arrayi+1=t; 2022年4月14日星期四72例例7.8 選擇排序選擇排序【例例7.8】用選擇排序法對(duì)一個(gè)班用選擇排序法對(duì)一個(gè)班30個(gè)學(xué)生的個(gè)學(xué)生的C語言語言成績(jī)成績(jī)按升序排名。按升序排名。 分析問題:分析問題: 選擇法的思想是選擇法的思想是將相鄰的兩個(gè)數(shù)進(jìn)行比較,記錄最小值的將相鄰的兩個(gè)數(shù)進(jìn)行比較,記錄最小值的下標(biāo),最后再將最小值與第一個(gè)數(shù)交換。下標(biāo),最后再
32、將最小值與第一個(gè)數(shù)交換。 選擇法的排序過程選擇法的排序過程如下:如下: (1)首先通過)首先通過n-1次比較,從次比較,從n個(gè)數(shù)中找出最小數(shù)的下標(biāo),個(gè)數(shù)中找出最小數(shù)的下標(biāo),通過下標(biāo)找到對(duì)應(yīng)的元素并與第一個(gè)數(shù)交換通過下標(biāo)找到對(duì)應(yīng)的元素并與第一個(gè)數(shù)交換第一趟選擇排第一趟選擇排序,結(jié)果最小的數(shù)被安置在第一個(gè)元素位置上;序,結(jié)果最小的數(shù)被安置在第一個(gè)元素位置上; (2)再通過)再通過n-2次比較,從剩余的次比較,從剩余的n-1個(gè)數(shù)中找出關(guān)鍵字個(gè)數(shù)中找出關(guān)鍵字次小的數(shù)據(jù)下標(biāo),將它與第二個(gè)數(shù)交換次小的數(shù)據(jù)下標(biāo),將它與第二個(gè)數(shù)交換第二趟選擇排序;第二趟選擇排序; (3)重復(fù)上述過程,共經(jīng)過)重復(fù)上述過程,共
33、經(jīng)過n-1趟排序后,排序結(jié)束。趟排序后,排序結(jié)束。 選擇排序第選擇排序第1趟第趟第1次比較次比較65724189377554814966哪個(gè)更小?哪個(gè)更???0最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第1趟第趟第2次比較次比較65724189377554814966哪個(gè)更???哪個(gè)更?。? 2最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第1趟第趟第3次比較次比較65724189377554814966哪個(gè)更?。磕膫€(gè)更???2最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第1趟第趟第4次比較次比較65724189377554814966哪個(gè)更?。磕膫€(gè)更?。? 4最小值元素下標(biāo)最小值元素下標(biāo)選擇
34、排序第選擇排序第1趟第趟第5次比較次比較65724189377554814966哪個(gè)更?。磕膫€(gè)更?。?最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第1趟第趟第6次比較次比較65724189377554814966哪個(gè)更?。磕膫€(gè)更???4最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第1趟第趟第7次比較次比較65724189377554814966哪個(gè)更小?哪個(gè)更小?4最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第1趟第趟第8次比較次比較65724189377554814966哪個(gè)更?。磕膫€(gè)更?。?最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第1趟第趟第9次比較次比較657241893775
35、54814966哪個(gè)更小?哪個(gè)更???4最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第1趟比較后交換元素趟比較后交換元素657241893775548149664最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第2趟第趟第1次比較次比較37724189657554814966哪個(gè)更小?哪個(gè)更小?1 2最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第2趟第趟第2次比較次比較37724189657554814966哪個(gè)更小?哪個(gè)更?。?最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第2趟第趟第3次比較次比較37724189657554814966哪個(gè)更?。磕膫€(gè)更?。?最小值元素下標(biāo)最小值元素下標(biāo)選擇
36、排序第選擇排序第2趟第趟第4次比較次比較37724189657554814966哪個(gè)更小?哪個(gè)更小?2最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第2趟第趟第5次比較次比較37724189657554814966哪個(gè)更小?哪個(gè)更???2最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第2趟第趟第6次比較次比較37724189657554814966哪個(gè)更?。磕膫€(gè)更???2最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第2趟第趟第7次比較次比較37724189657554814966哪個(gè)更?。磕膫€(gè)更?。?最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第2趟第趟第8次比較次比較377241896575
37、54814966哪個(gè)更???哪個(gè)更?。?最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第2趟比較后交換元素趟比較后交換元素377241896575548149662最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第3趟第趟第1次比較次比較374172896575548149662哪個(gè)更???哪個(gè)更?。孔钚≈翟叵聵?biāo)最小值元素下標(biāo)選擇排序第選擇排序第3趟第趟第2次比較次比較374172896575548149662哪個(gè)更?。磕膫€(gè)更???4最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第3趟第趟第3次比較次比較374172896575548149664哪個(gè)更小?哪個(gè)更???最小值元素下標(biāo)最小值元素下標(biāo)選擇排
38、序第選擇排序第3趟第趟第4次比較次比較374172896575548149664哪個(gè)更?。磕膫€(gè)更?。?最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第3趟第趟第5次比較次比較374172896575548149666哪個(gè)更小?哪個(gè)更小?最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第3趟第趟第6次比較次比較374172896575548149666哪個(gè)更???哪個(gè)更小?8最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第3趟第趟第6次比較次比較374172896575548149668哪個(gè)更???哪個(gè)更???最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第3趟比較后交換元素趟比較后交換元素374172
39、896575548149668最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第4趟第趟第1次比較次比較374149896575548172663哪個(gè)更小?哪個(gè)更小?4最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第4趟第趟第2次比較次比較374149896575548172664哪個(gè)更???哪個(gè)更小?最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第4趟第趟第3次比較次比較374149896575548172664哪個(gè)更???哪個(gè)更???6最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第4趟第趟第4次比較次比較374149896575548172666哪個(gè)更小?哪個(gè)更?。孔钚≈翟叵聵?biāo)最小值元素下標(biāo)選
40、擇排序第選擇排序第4趟第趟第5次比較次比較374149896575548172666哪個(gè)更?。磕膫€(gè)更???最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第4趟第趟第6次比較次比較374149896575548172666哪個(gè)更???哪個(gè)更???最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第4趟比較后交換元素趟比較后交換元素374149896575548172666最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第5趟第趟第1次比較次比較374149546575898172664哪個(gè)更小?哪個(gè)更???最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第5趟第趟第2次比較次比較3741495465758981
41、72664哪個(gè)更???哪個(gè)更???最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第5趟第趟第3次比較次比較374149546575898172664哪個(gè)更小?哪個(gè)更???最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第5趟第趟第4次比較次比較374149546575898172664哪個(gè)更?。磕膫€(gè)更???最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第5趟第趟第5次比較次比較374149546575898172664哪個(gè)更?。磕膫€(gè)更???最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第5趟比較后不用交換元素趟比較后不用交換元素374149546575898172664最小值元素下標(biāo)最小值元素下標(biāo)選擇排序
42、第選擇排序第6趟第趟第1次比較次比較374149546575898172665哪個(gè)更???哪個(gè)更小?最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第6趟第趟第2次比較次比較374149546575898172665哪個(gè)更???哪個(gè)更?。孔钚≈翟叵聵?biāo)最小值元素下標(biāo)選擇排序第選擇排序第6趟第趟第3次比較次比較374149546575898172665哪個(gè)更???哪個(gè)更???8最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第6趟第趟第4次比較次比較374149546575898172668哪個(gè)更???哪個(gè)更?。?最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第6趟比較后交換元素趟比較后交換元素3741495
43、46575898172669最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第7趟第趟第1次比較次比較374149546566898172756哪個(gè)更???哪個(gè)更???7最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第7趟第趟第2次比較次比較374149546566898172757哪個(gè)更?。磕膫€(gè)更???8最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第7趟第趟第3次比較次比較374149546566898172758哪個(gè)更小?哪個(gè)更???最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第7趟比較后交換元素趟比較后交換元素374149546566898172758最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇
44、排序第8趟第趟第1次比較次比較374149546566728189757哪個(gè)更小?哪個(gè)更小?最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第8趟第趟第2次比較次比較374149546566728189759哪個(gè)更?。磕膫€(gè)更???最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第8趟比較后交換元素趟比較后交換元素374149546566728189759最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第9趟比較趟比較374149546566727589818哪個(gè)更?。磕膫€(gè)更???9最小值元素下標(biāo)最小值元素下標(biāo)選擇排序第選擇排序第9趟比較后交換元素趟比較后交換元素374149546566727589819
45、最小值元素下標(biāo)最小值元素下標(biāo)2022年4月14日星期四127例例7.8程序程序#include #define SIZE 30void sort(int array,int num);int main() int aSIZE,i,n; printf(Input student number: ); scanf(%d,&n); /* 輸入學(xué)生人數(shù),輸入學(xué)生人數(shù),n要求小于要求小于SIZE */ printf(Input %d score: n,n); for(i=0; in; i+) scanf(%d,&ai); /* 輸入成績(jī)輸入成績(jī) */ printf(n); sort(a,n); /* 選
46、擇法排序選擇法排序 */ printf(The sorted numbers: n); for(i=0; in; i+) printf(%d ,ai); /* 輸出數(shù)據(jù)輸出數(shù)據(jù) */ return(0);/* 選擇法排序函數(shù)選擇法排序函數(shù) */void sort(int array,int num) int i, j, k, t; for(i=0; inum-1; i+) k=i; for(j=i+1; jnum; j+) if(arrayjarrayk) k=j; if(i!=k) t=arrayi; arrayi=arrayk; arrayk=t; 指針的運(yùn)算指針的運(yùn)算 l 指針變量本身是
47、一個(gè)變量,可以參加某些運(yùn)算。指針變量本身是一個(gè)變量,可以參加某些運(yùn)算。l 但指針的本質(zhì)是一個(gè)地址,其運(yùn)算具有一些特別但指針的本質(zhì)是一個(gè)地址,其運(yùn)算具有一些特別的性質(zhì),的性質(zhì),不能用普通變量運(yùn)算規(guī)則來作為指針運(yùn)不能用普通變量運(yùn)算規(guī)則來作為指針運(yùn)算的規(guī)則算的規(guī)則。l 指針運(yùn)算除了指針運(yùn)算除了“&”和和“*”運(yùn)算符之外,通常還有運(yùn)算符之外,通常還有+、-、+、-和和關(guān)系運(yùn)算關(guān)系運(yùn)算。l 其中其中+、+代表指針前移,代表指針前移,-、-代表指針后移。代表指針后移。指針的賦值運(yùn)算指針的賦值運(yùn)算 l 在引用指針變量之前,一定要對(duì)其進(jìn)行賦值在引用指針變量之前,一定要對(duì)其進(jìn)行賦值,使其有明確,使其有明確的指向
48、。指針的賦值運(yùn)算包括:的指向。指針的賦值運(yùn)算包括:l 賦空值賦空值:使指針變量指向一個(gè)空值,這時(shí)指針變量不指向任何變量:使指針變量指向一個(gè)空值,這時(shí)指針變量不指向任何變量 在在stdio.h文件中定義了:文件中定義了: #define NULL 0 (用(用NULL表示表示0)。)。 定義定義int *p=NULL; 相當(dāng)于相當(dāng)于int *p; p=NULL;表示表示p不指向任何變不指向任何變量,而是指向地址為量,而是指向地址為0的內(nèi)存單元,這時(shí)的內(nèi)存單元,這時(shí)p稱之為稱之為空指針空指針。l 賦地址值賦地址值:將一個(gè)變量的地址值賦給一個(gè)指針變量將一個(gè)變量的地址值賦給一個(gè)指針變量,使該指針變量,
49、使該指針變量指向地址對(duì)應(yīng)的變量,這時(shí)兩個(gè)變量必須是一樣的數(shù)據(jù)類型。如:指向地址對(duì)應(yīng)的變量,這時(shí)兩個(gè)變量必須是一樣的數(shù)據(jù)類型。如:int a,*p; p=&a; l 賦指針變量值賦指針變量值:相同數(shù)據(jù)類型的指針變量可以相互賦值相同數(shù)據(jù)類型的指針變量可以相互賦值,這時(shí),這時(shí)兩個(gè)兩個(gè)指針變量指向同一個(gè)變量的存儲(chǔ)空間指針變量指向同一個(gè)變量的存儲(chǔ)空間。如:。如:int a,*p,*q; p=&a; q=p; 這時(shí),指針變量這時(shí),指針變量p和和q都指向變量都指向變量a指針的自增自減運(yùn)算指針的自增自減運(yùn)算l 指針變量的自增自減運(yùn)算指針變量的自增自減運(yùn)算:對(duì)指針變量的自增:對(duì)指針變量的自增(+)自減()自減(
50、-)運(yùn)算,表示使該指針變量指向后)運(yùn)算,表示使該指針變量指向后一個(gè)變量或前一個(gè)變量。如:一個(gè)變量或前一個(gè)變量。如:int a,*p; 自增運(yùn)算:自增運(yùn)算:p+; +p; 自減運(yùn)算:自減運(yùn)算:p-; -p; l 兩個(gè)指針變量相減運(yùn)算兩個(gè)指針變量相減運(yùn)算:兩個(gè)數(shù)據(jù)類型相同的指:兩個(gè)數(shù)據(jù)類型相同的指針變量之間可以進(jìn)行減法(針變量之間可以進(jìn)行減法(-)運(yùn)算,其差為整型)運(yùn)算,其差為整型數(shù)據(jù),表示兩個(gè)指針變量地址之間能夠存放的指數(shù)據(jù),表示兩個(gè)指針變量地址之間能夠存放的指針變量所指的數(shù)據(jù)類型的數(shù)據(jù)個(gè)數(shù)。針變量所指的數(shù)據(jù)類型的數(shù)據(jù)個(gè)數(shù)。l 任何兩個(gè)指針變量之間均不能進(jìn)行加法運(yùn)算任何兩個(gè)指針變量之間均不能進(jìn)行
51、加法運(yùn)算。指針變量加(或減)一個(gè)整數(shù)的運(yùn)算指針變量加(或減)一個(gè)整數(shù)的運(yùn)算 l C語言規(guī)定,一個(gè)指針變量語言規(guī)定,一個(gè)指針變量p加(或減)一個(gè)整數(shù)加(或減)一個(gè)整數(shù)n并不是簡(jiǎn)單地將指并不是簡(jiǎn)單地將指針變量的原值加(或減)一個(gè)整數(shù),而是將該指針變量的原值(是一針變量的原值加(或減)一個(gè)整數(shù),而是將該指針變量的原值(是一個(gè)地址)和它指向的變量所占用的內(nèi)存單元字節(jié)數(shù)相加(或減)。個(gè)地址)和它指向的變量所占用的內(nèi)存單元字節(jié)數(shù)相加(或減)。l 如如p+n或或p-n(p是指針變量,是指針變量,n是整數(shù)),代表的地址計(jì)算是是整數(shù)),代表的地址計(jì)算是p+L*n或或p-L*n(L為指針變量所指向的數(shù)據(jù)類型所占內(nèi)
52、存的字節(jié)數(shù))。為指針變量所指向的數(shù)據(jù)類型所占內(nèi)存的字節(jié)數(shù))。l 如果有如果有int a,b,c,*p;,假定變量;,假定變量a、b、c連續(xù)分配內(nèi)存空間,則連續(xù)分配內(nèi)存空間,則指針加(減)法運(yùn)算如圖所示。指針加(減)法運(yùn)算如圖所示。3001p=&ap+1p+230033005468a=4b=6pc=84683001p=&ap-1p+130033005a=4b=6pc=8例例7.1 計(jì)算學(xué)生的平均成績(jī)計(jì)算學(xué)生的平均成績(jī) 程序?qū)崿F(xiàn)程序?qū)崿F(xiàn)解法一解法一#include #define N 15int main() int aN; /* 定義一維數(shù)組定義一維數(shù)組a存放存放15門課程成績(jī)門課程成績(jī) */
53、int average, sum, i; for(i=0; iN; i+) scanf(%d, &ai); /* 給每門課程成績(jī)賦值給每門課程成績(jī)賦值 */ sum=0; /* 累加和變量累加和變量sum */ for(i=0; iN; i+) sum=sum+ai; /* 累加每個(gè)成績(jī)值累加每個(gè)成績(jī)值 */ average=sum/N; /* 求平均成績(jī)求平均成績(jī) */ for(i=0; iN; i+) printf(%4d, ai); /* 輸出每門課程成績(jī)輸出每門課程成績(jī) */ printf(nAverage=%dn, average); /* 輸出平均成績(jī)輸出平均成績(jī) */程序?qū)崿F(xiàn)程序
54、實(shí)現(xiàn)解法二解法二l 本例還可以使用函數(shù)方式來實(shí)現(xiàn)??梢远x一個(gè)本例還可以使用函數(shù)方式來實(shí)現(xiàn)。可以定義一個(gè)int add(int array,int n)函數(shù)來求函數(shù)來求15門課程成績(jī)門課程成績(jī)的總和,函數(shù)的返回值就是總和值。的總和,函數(shù)的返回值就是總和值。l 程序中程序中sum=add(a,N);語句實(shí)現(xiàn)函數(shù)的調(diào)用,函語句實(shí)現(xiàn)函數(shù)的調(diào)用,函數(shù)的返回值賦給數(shù)的返回值賦給sum變量。變量。l 主調(diào)函數(shù)中主調(diào)函數(shù)中sum=add(a,N);語句的語句的a表示數(shù)組名,表示數(shù)組名,作為實(shí)際參數(shù)傳遞給被調(diào)函數(shù)。作為實(shí)際參數(shù)傳遞給被調(diào)函數(shù)。l int add(int array,int n)函數(shù)定義中的函數(shù)
55、定義中的array表示表示需要傳入數(shù)組的形參名。需要傳入數(shù)組的形參名。 程序?qū)崿F(xiàn)程序?qū)崿F(xiàn)解法二(續(xù))解法二(續(xù))/* LT7_1A.c */#include #define N 15int add(int array,int n);int main() int aN; /* 定義一維數(shù)組定義一維數(shù)組a存放存放15門課程成績(jī)門課程成績(jī) */ int average,sum,i; for(i=0;iN;i+) scanf(%d,&ai); /* 給每門課程成績(jī)賦值給每門課程成績(jī)賦值 */ sum=add(a,N); /* 累加每個(gè)成績(jī)值并將函數(shù)的返回值總和賦給累加每個(gè)成績(jī)值并將函數(shù)的返回值總和賦給
56、sum */ average=sum/N; /* 求平均成績(jī)求平均成績(jī) */ for(i=0;iN;i+) printf(%4d,ai); /* 輸出每門課程成績(jī)輸出每門課程成績(jī) */ printf(nAverage=%dn,average); /* 輸出平均成績(jī)輸出平均成績(jī) */ return(0);本例程序涉及到一維數(shù)組的定義、初始化、引用、一維數(shù)組作本例程序涉及到一維數(shù)組的定義、初始化、引用、一維數(shù)組作函數(shù)參數(shù)等知識(shí)點(diǎn)。函數(shù)參數(shù)等知識(shí)點(diǎn)。/* 累加每個(gè)成績(jī)值累加每個(gè)成績(jī)值 */int add(int array,int n) int i,s; s=0; for(i=0;in;i+) s=
57、s+arrayi; return(s);程序?qū)崿F(xiàn)程序?qū)崿F(xiàn)解法三解法三l 本例程序還可以用指針來完成。本例程序還可以用指針來完成。l int *p; 語句定義了一個(gè)指針變量語句定義了一個(gè)指針變量p,它可以指向任何一個(gè)同,它可以指向任何一個(gè)同類型的變量,通過該指針變量可以訪問其指向的對(duì)應(yīng)變量類型的變量,通過該指針變量可以訪問其指向的對(duì)應(yīng)變量l p=a; 語句完成指針變量語句完成指針變量p指向數(shù)組變量指向數(shù)組變量a,這時(shí),通過指針,這時(shí),通過指針變量變量p就可以訪問數(shù)組就可以訪問數(shù)組a的各元素了。的各元素了。l for(;pa+N;p+) scanf(“%d”,p); 語句給每個(gè)數(shù)組元素賦語句給每個(gè)
58、數(shù)組元素賦值,值,p第第1次指向數(shù)組次指向數(shù)組a的第的第1個(gè)元素,通過個(gè)元素,通過p+使使p指向數(shù)組指向數(shù)組a的下一個(gè)元素。的下一個(gè)元素。l for(p=a;pa+N;p+) sum=sum+*p; 語句實(shí)現(xiàn)數(shù)組各元素語句實(shí)現(xiàn)數(shù)組各元素值的累加,值的累加,*p表示表示p當(dāng)前所指向的數(shù)組元素值。當(dāng)前所指向的數(shù)組元素值。 程序?qū)崿F(xiàn)程序?qū)崿F(xiàn)解法三(續(xù))解法三(續(xù))/* LT7_1B.c */#include #define N 15int main() int aN; /* 定義一維數(shù)組定義一維數(shù)組a存放存放15門課程成績(jī)門課程成績(jī) */ int *p; /* 定義整型數(shù)據(jù)指針變量定義整型數(shù)據(jù)指針變
59、量 */ int average,sum,i; p=a; /* 整型指針變量整型指針變量p指向整型數(shù)組指向整型數(shù)組a */ for(;pa+N;p+) scanf(%d,p); /* 給每門課程成績(jī)賦值給每門課程成績(jī)賦值 */ sum=0; /* 累加和變量累加和變量sum */ for(p=a;pa+N;p+) sum=sum+*p; /* 累加每個(gè)成績(jī)值累加每個(gè)成績(jī)值 */ average=sum/N; /* 求平均成績(jī)求平均成績(jī) */ for(p=a;pa+N;p+) printf(%4d,*p); /* 輸出每門課程成績(jī)輸出每門課程成績(jī) */ printf(nAverage=%dn,a
60、verage); /* 輸出平均成績(jī)輸出平均成績(jī) */ return(0);兩個(gè)指針變量的關(guān)系運(yùn)算兩個(gè)指針變量的關(guān)系運(yùn)算l 兩個(gè)指針變量之間的關(guān)系運(yùn)算是比較兩個(gè)指針變量所指向兩個(gè)指針變量之間的關(guān)系運(yùn)算是比較兩個(gè)指針變量所指向的地址關(guān)系,其運(yùn)算符有的地址關(guān)系,其運(yùn)算符有=、!=、=。l 比較運(yùn)算結(jié)果為真(比較運(yùn)算結(jié)果為真(1)或假()或假(0)。)。l p+、p-、+p、-p和和p-=n、p+=n、p=p+n、p=p-n(這(這里里n表示整型數(shù)據(jù),表示整型數(shù)據(jù),p為指針變量)等運(yùn)算的結(jié)果仍為指針。為指針變量)等運(yùn)算的結(jié)果仍為指針。 l 指針變量的加或減運(yùn)算,只對(duì)具有連續(xù)存儲(chǔ)單元的相同數(shù)指針變量的
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 體育新聞采編與制作專業(yè)畢業(yè)實(shí)習(xí)報(bào)告范文
- 中學(xué)2024-2025學(xué)年學(xué)生心理輔導(dǎo)計(jì)劃
- 機(jī)房裝修施工通風(fēng)降溫措施方案
- 電力行業(yè)綜合辦公室崗位職責(zé)
- 電商平臺(tái)組織供貨計(jì)劃
- 信息資料組財(cái)務(wù)支持職責(zé)
- 石化裝置鋼管桁架安裝工期及進(jìn)度保證措施
- 志愿者通報(bào)批評(píng)的格式及范文
- 初中2024-2025學(xué)年第二學(xué)期教學(xué)工作計(jì)劃
- 酒店疫情防控措施跨部門協(xié)作
- DG-TJ 08-2122-2021 保溫裝飾復(fù)合板墻體保溫系統(tǒng)應(yīng)用技術(shù)標(biāo)準(zhǔn)
- 電機(jī)振動(dòng)測(cè)定方法及限值振動(dòng)測(cè)定方法
- 各類給水管材水力計(jì)算表
- 濟(jì)南遙墻機(jī)場(chǎng)擴(kuò)建工程航站樓建設(shè)監(jiān)理大綱
- 七年級(jí)上冊(cè)數(shù)學(xué)知識(shí)點(diǎn)總結(jié)及精編例題1
- 往生薦亡功德文疏
- 心內(nèi)科高危藥物安全管理與指引
- XFD-系列單槽說明書-印稿
- UCLA肩關(guān)節(jié)評(píng)分系統(tǒng)
- 分支型室速的導(dǎo)管消融術(shù)ppt課件
- (完整word版)《關(guān)于同意申辦出入境證件的函》
評(píng)論
0/150
提交評(píng)論