![3- 利用數(shù)組處理同類型的批量數(shù)據(jù)_第1頁](http://file4.renrendoc.com/view/b0c9842c8c6e69d594ce04cf12ceeb2d/b0c9842c8c6e69d594ce04cf12ceeb2d1.gif)
![3- 利用數(shù)組處理同類型的批量數(shù)據(jù)_第2頁](http://file4.renrendoc.com/view/b0c9842c8c6e69d594ce04cf12ceeb2d/b0c9842c8c6e69d594ce04cf12ceeb2d2.gif)
![3- 利用數(shù)組處理同類型的批量數(shù)據(jù)_第3頁](http://file4.renrendoc.com/view/b0c9842c8c6e69d594ce04cf12ceeb2d/b0c9842c8c6e69d594ce04cf12ceeb2d3.gif)
![3- 利用數(shù)組處理同類型的批量數(shù)據(jù)_第4頁](http://file4.renrendoc.com/view/b0c9842c8c6e69d594ce04cf12ceeb2d/b0c9842c8c6e69d594ce04cf12ceeb2d4.gif)
![3- 利用數(shù)組處理同類型的批量數(shù)據(jù)_第5頁](http://file4.renrendoc.com/view/b0c9842c8c6e69d594ce04cf12ceeb2d/b0c9842c8c6e69d594ce04cf12ceeb2d5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
教學(xué)內(nèi)容: 第1章:C語言語法基礎(chǔ)第2章:C程序設(shè)計基礎(chǔ)第3章:利用數(shù)組處理同類型的批量數(shù)據(jù)第4章:利用函數(shù)實現(xiàn)模塊化程序設(shè)計第5章:靈活使用指針第6章:結(jié)構(gòu)體、共用體、枚舉類型及其應(yīng)用第7章:常用的三種線性數(shù)據(jù)結(jié)構(gòu)第8章:利用文件進行數(shù)據(jù)管理第9章:嵌入式技術(shù)基礎(chǔ)實踐方法C語言程序設(shè)計【學(xué)習(xí)內(nèi)容】3.1一維數(shù)組
3.2二維數(shù)組
3.3字符數(shù)組 第3章利用數(shù)組處理同類型的批量數(shù)據(jù)【學(xué)習(xí)目標(biāo)】1.掌握數(shù)組的定義、初始化和引用的方法;
2.能利用數(shù)組解決實際問題,了解數(shù)組在嵌入式系統(tǒng)中的應(yīng)用;
3.理解并掌握冒泡排序算法和選擇排序算法;
4.掌握字符數(shù)組的輸入輸出方法以及字符串處理函數(shù)的應(yīng)用方法。
在C語言中,數(shù)據(jù)類型除了基本類型(整型、實型、字符型),還有構(gòu)造類型,包括數(shù)組、結(jié)構(gòu)體、共用體和枚舉類型。其中,數(shù)組是將相同類型的若干數(shù)據(jù)按序組合在一起,即數(shù)組是有序同類型數(shù)據(jù)的集合。
思考:若用基本數(shù)據(jù)類型,如何解決20個整型數(shù)據(jù)的存放問題?第3章利用數(shù)組處理同類型的批量數(shù)據(jù)3.1一維數(shù)組3.1.1定義一維數(shù)組的方法數(shù)組和變量一樣,要先定義后使用。定義一維數(shù)組的形式:類型標(biāo)識符數(shù)組名[常量表達式];說明:(1)類型標(biāo)識符可以是基本類型或
構(gòu)造類型。(2)常量表達式表示數(shù)據(jù)元素的個數(shù),也稱為數(shù)組長度。
例如:
inta[10];
該數(shù)組有10個整型元素:a[0]~a[9]。
元素編號是從0開始。C語言規(guī)定,數(shù)組名可以代表數(shù)組的首地址(數(shù)組首元素a[0]的地址)。
系統(tǒng)為數(shù)組a分配連續(xù)的10個整型內(nèi)存空間,用來存儲10個數(shù)組元素。3.1一維數(shù)組3.1.2一維數(shù)組的初始化
在定義數(shù)組時,對數(shù)組元素賦初值。初值用{}括起來,初值之間用逗號隔開。(1)對全部元素賦初值
inta[5]={1,2,3,4,5};
(2)對部分元素賦初值
inta[5]={1,2,3};
注意:初值個數(shù)不能超過指定的元素個數(shù)。
此時,也可寫成:
inta[]={1,2,3,4,5};inta[5]={1,2,3,4,5,6};
在定義數(shù)組之后,不能一次性對整個數(shù)組的所有元素賦值,而只能對每個元素逐個賦值。例如:inta[5];//定義數(shù)組a[5]={1,3,5,7,9};
//錯誤a[0]=1;a[1]=3;a[2]=5;a[3]=7;a[4]=9;//正確//錯誤
結(jié)果:a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5
結(jié)果:a[0]=1,a[1]=2,a[2]=3,a[3]=0,a[4]=0
3.1一維數(shù)組3.1.3一維數(shù)組元素的引用C語言規(guī)定,只能引用某個數(shù)組元素而不能一次引用整個數(shù)組的全部元素。
一維數(shù)組元素的引用形式:數(shù)組名[下標(biāo)]
下標(biāo)就是數(shù)組元素的編號。
【例3.1】一維數(shù)組元素的引用:將一組數(shù)據(jù)倒序輸出。#include<stdio.h>intmain(void){inti,a[10];
for(i=0;i<=9;i++)
a[i]=i;
for(i=9;i>=0;i--)
printf("%d",a[i]);
printf("\n");}
將數(shù)組和循環(huán)結(jié)構(gòu)相結(jié)合,可有效處理同類型的批量數(shù)據(jù),大大提高工作效率。3.1一維數(shù)組3.1.4一維數(shù)組的應(yīng)用
一維數(shù)組廣泛應(yīng)用于對多個同類型的數(shù)據(jù)進行存取、排序等操作的場合。用一維數(shù)組還可構(gòu)造出軟件設(shè)計中常用的堆棧、隊列等數(shù)據(jù)結(jié)構(gòu)?!纠?.4】對n個數(shù)進行排序(由小到大)。
由于是對多個數(shù)進行排序,自然會想到利用數(shù)組來保存和管理參與排序的多個數(shù)據(jù)。排序算法有多種,在此只介紹冒泡排序法。
在嵌入式軟件設(shè)計中,一維數(shù)組可用于數(shù)碼管顯示的筆形碼、鍵盤的鍵碼等編碼的存取。3.1一維數(shù)組用冒泡法對5個數(shù)(如:9、7、5、8、0)進行由小到大排序的過程:9758075988900975805787809708975975895780第1次9579第2次第3次第4次第1次7570第1次第2次第3次7570050550第1次第2次a[0]a[1]a[2]a[3]a[4]第1輪第2輪第3輪第4輪3.1.4一維數(shù)組的應(yīng)用冒泡排序法的思路:從第1個數(shù)開始,和下鄰數(shù)比較,小數(shù)上浮,大數(shù)下沉?!纠?.4】對n個數(shù)進行排序(由小到大)。
3.1一維數(shù)組3.1.4一維數(shù)組的應(yīng)用冒泡排序法的思路:從第1個數(shù)開始,和下鄰數(shù)比較,小數(shù)上浮,大數(shù)下沉。【例3.4】對n個數(shù)進行排序(由小到大)。
3.1一維數(shù)組3.1.4一維數(shù)組的應(yīng)用【例3.4】對n個數(shù)進行排序(由小到大)。
swap_flag=1;
若參與排序的多個數(shù)據(jù)在某輪比較前,恰好已經(jīng)按照由小到大排序,則上述程序有無需要改進之處?swap_flag=0;//交換標(biāo)志:0-無交換,1-有交換
if(swap_flag==0)break;//若本輪無交換,則結(jié)束比較
#defineN5
//宏定義參與排序的數(shù)據(jù)個數(shù)inta[N];
//存放待排序的一組數(shù)據(jù)inti,j,t;
for(i=1;i<N;i++)
//N個數(shù),共需比較N-1輪{
for(j=0;j<N-i;j++)//第i輪需要比較N-i次{if(a[j]>a[j+1])
//依次比較兩個相鄰的數(shù),將大數(shù)放后面{ t=a[j];a[j]=a[j+1];a[j+1]=t;
//交換
}}
},swap_flag;3.1一維數(shù)組3.1.4一維數(shù)組的應(yīng)用練習(xí):【例3.2】輸入一個整數(shù),輸出該整數(shù)從高位到低位的各位數(shù)字?!纠?.3】輸入若干名學(xué)生的成績,輸出成績單,并統(tǒng)計輸出最高分、最低分和平均分?!纠?.4】利用選擇排序法對n個數(shù)進行排序。
并且對冒泡排序法和選擇排序法進行比較。3.2二維數(shù)組
我們可用1個一維數(shù)組存放1名同學(xué)的語文、數(shù)學(xué)、英語3門課的成績,而如何存放多名同學(xué)的語文、數(shù)學(xué)、英語3門課成績呢?在C語言中,可用二維數(shù)組解決此類問題。在嵌入式軟件設(shè)計中,二維數(shù)組可用于點陣顯示碼、液晶顯示碼等編碼的存取。3.2二維數(shù)組3.2.1定義二維數(shù)組的方法定義二維數(shù)組的一般形式:
類型標(biāo)識符數(shù)組名[常量表達式1][常量表達式2];其中,常量表達式1表示行數(shù),常量表達式2表示的列數(shù)。例如:
inta[3][4];//定義3行4列的整型數(shù)組,共有3×4個元素
每個元素的編號:系統(tǒng)會為數(shù)組a分配連續(xù)的12個整型內(nèi)存空間,用來存儲12個數(shù)組元素。
在C語言中,二維數(shù)組中元素排列的順序是按“行”存放的,即在內(nèi)存中先順序存放第1行的元素;
再順序存放第2行的元素;
最后順序存放第3行的元素。3.2二維數(shù)組3.2.1定義二維數(shù)組的方法
它有3個行元素:a[0]、a[1]、a[2],而每個行元素又是一個包含4個列元素的一維數(shù)組,此時把a[0]、a[1]、a[2]看作一維數(shù)組名。例如第一行元素:a[0][0]a[0][1]a[0][2]a[0][3]C語言中,又可以把二維數(shù)組a看作是一個特殊的一維數(shù)組。3.2二維數(shù)組3.2.2二維數(shù)組的初始化在定義二維數(shù)組時,對其元素初始化賦值。(1)分行給二維數(shù)組賦初值(一行對應(yīng)一個花括號)例如:inta[3][4]={{1,2,3,4},
{5,6,7,8},
{9,10,11,12}};
(2)將所有數(shù)據(jù)寫在一個花括號內(nèi),按順序給元素賦初值例如:inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
效果與第(1)種方法相同。但不如第(1)種方法直觀。(4)對全部元素都賦初值時,行數(shù)可以不指定,但列數(shù)不能省略。
例如:inta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};(3)可只給部分元素賦初值。例如:inta[3][4]={{1},{5},{9}};
注意:在定義二維數(shù)組之后,不能一次性對整個數(shù)組的所有元素賦值,而只能對數(shù)組的每個元素逐個賦值。例如:inta[3][4];//定義數(shù)組a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
//錯誤3.2二維數(shù)組3.2.3二維數(shù)組元素的引用C語言規(guī)定,只能引用某個數(shù)組元素而不能一次引用整個數(shù)組的全部元素。
二維數(shù)組元素的引用形式:數(shù)組名[下標(biāo)][下標(biāo)]
下標(biāo)就是數(shù)組元素的編號。
【例3.5】二維數(shù)組元素的引用:二維數(shù)組元素的賦值和輸出。
#include<stdio.h>intmain(void){
inta[3][4];
//定義二維數(shù)組inti,j;printf("請輸入12個整數(shù):");
for(i=0;i<3;i++)
//二維數(shù)組的行{
for(j=0;j<4;j++)
//二維數(shù)組的列scanf("%d",
&a[i][j]);//向數(shù)組a賦值}for(i=0;i<3;i++){for(j=0;j<4;j++)printf("a[%d][%d]=%d\n",
i,
j,
a[i][j]);//輸出數(shù)組a的12個元素值}}3.2二維數(shù)組3.2.4二維數(shù)組的應(yīng)用練習(xí):【例3.7】輸入兩個矩陣的數(shù)值,輸出這兩個矩陣的乘積?!纠?.6】輸出3×4矩陣,并求出值最大的元素值,及其所在的行號和列號。
#include<stdio.h>intmain(void){ inti,
j,
max,
row=0,
col=0;//變量i表示行,j表示列
inta[3][4]={{1,2,3,4},
{5,6,7,8},
{9,10,11,12}};for(i=0;i<3;i++){
for(j=0;j<4;j++)printf("%3d",
a[i][j]);
printf("\n");
//每輸出一行,換行}
max=a[0][0];for(i=0;i<3;i++){for(j=0;j<4;j++){ if(a[i][j]>max){ max=a[i][j];row=i;col=j; }}}printf("最大值=%d,行=%d,列=%d\n",
max,
row+1,
col+1);}3.3字符數(shù)組
用來存放字符型數(shù)據(jù)的數(shù)組是字符數(shù)組,字符數(shù)組中的每個元素存放一個字符。在嵌入式網(wǎng)絡(luò)通信軟件設(shè)計中,可用字符數(shù)組存放待發(fā)送或待接收的數(shù)據(jù)。3.3.1定義字符數(shù)組的方法
系統(tǒng)為數(shù)組c分配連續(xù)的10字節(jié)內(nèi)存空間,用來存儲10個字符型數(shù)據(jù)。例如:
charc[10];數(shù)組名c代表該數(shù)組的首地址。
3.3字符數(shù)組
3.3.2字符數(shù)組的初始化1、逐個字符賦值法(1)對全部元素賦初值
charc[5]={'a','b','c','d','e'};
結(jié)果:c[0]='a',c[1]='b',c[2]='c',c[3]='d',c[4]='e'。
也可寫成:
charc[]={'a','b','c','d','e'};
(2)對部分元素賦初值
charc[6]={'a','b','c','d','e'};
最后1個元素由系統(tǒng)自動賦空字符'\0'。3.3字符數(shù)組
2、字符串常量賦值法(將字符串常量賦給字符數(shù)組:用數(shù)組處理字符串)3.3.2字符數(shù)組的初始化也可寫成:charc[]="abcde";
charc[]={"abcde"};
字符串常量"abcde"在內(nèi)存中的存儲:因此,數(shù)組c的長度是6?!舅伎肌?/p>
下面兩種賦值方式是否有區(qū)別?如何等價?
①charc[]={'a','b','c','d','e'}; ②charc[]="abcde";
注意:在定義字符數(shù)組之后,不能一次性對整個數(shù)組的所有元素賦值,而只能對數(shù)組的每個元素逐個賦值。例如:char
c[5];//定義數(shù)組c[5]={'a','b','c','d','e'};
//錯誤c[5]="abcd";
//錯誤3.3字符數(shù)組3.3.3字符數(shù)組元素的引用
字符數(shù)組的引用形式與數(shù)值數(shù)組相同,可以引用字符數(shù)組中的一個元素而得到一個字符。【例3.8】字符數(shù)組元素的引用:輸出字符數(shù)組元素的值。
#include<stdio.h>intmain(void){
chara[5]={'a','b','c','d','e'};
//定義字符數(shù)組并初始化
charb[6]="12345";inti;printf("字符數(shù)組a:");
for(i=0;i<5;i++)printf("%c",a[i]);
//字符數(shù)組a元素的引用printf("\n");printf("字符數(shù)組b:");
for(i=0;i<6;i++)printf("%c",b[i]);
//字符數(shù)組b元素的引用printf("\n");}3.3字符數(shù)組3.3.4字符數(shù)組的輸入、輸出1、用格式符“%c”逐個字符輸入、輸出【例3.9】字符數(shù)組逐個字符的輸入、輸出。在輸入字符時,系統(tǒng)將輸入的空格、換行符作為有效字符賦給數(shù)組元素。
#include<stdio.h>intmain(void){ inti;charc[5];
//定義字符數(shù)組printf("請輸入5個字符:");
for(i=0;i<5;i++)scanf("%c",&c[i]);
//逐個字符輸入printf("字符數(shù)組元素:");
for(i=0;i<5;i++)printf("%c",c[i]);
//逐個字符輸出printf("\n");}3.3字符數(shù)組2、用格式符“%s”對整個字符串一次輸入、輸出3.3.4字符數(shù)組的輸入、輸出【例3.10】字符串的格式化輸入、輸出
。
(1)用“%s”輸入、輸出字符串時,scanf、printf中的地址項、輸出項都是字符數(shù)組名(首地址)。說明:
(2)用scanf
輸入字符串時,若輸入空格或換行,系統(tǒng)則認(rèn)為是字符串結(jié)束符'\0'
。若輸入字符串“abcdef”時,運行結(jié)果:
可見,系統(tǒng)只將空格前的字符串“abc”送入數(shù)組str中。如何將含有空格的字符串送給一個字符數(shù)組呢?——用后續(xù)介紹的gets函數(shù)來實現(xiàn)。#include<stdio.h>intmain(void){ charstr[10];printf("請輸入字符串:");
scanf("%s",str);
//輸入字符串
printf("%s\n",str);
//輸出字符數(shù)組對應(yīng)的字符串}3.3字符數(shù)組2、用格式符“%s”對整個字符串一次輸入、輸出3.3.4字符數(shù)組的輸入、輸出【例3.11】多個字符串的格式化輸入、輸出
。
用scanf函數(shù)輸入多個字符串時,在字符串之間可用空格、換行符或Tab符作分隔。
#include<stdio.h>intmain(void){ charstr1[10],str2[10],str3[10];printf("請輸入3個字符串:");
scanf("%s%s%s",str1,
str2,
str3);
//輸入3個字符串
printf("%s%s%s\n",str1,
str2,
str3);
//輸出3個字符串
}3.3字符數(shù)組3.3.5字符串處理函數(shù)C語言提供了若干個字符串字符串處理函數(shù)。
其中,字符串輸入、輸出函數(shù),在使用前應(yīng)包含頭文件“stdio.h”;而其他字符串處理函數(shù),在使用前應(yīng)包含頭文件“string.h”。3.3字符數(shù)組1、字符串輸出函數(shù):puts(字符串或字符數(shù)組名)
●將字符串或字符數(shù)組中存放的字符串輸出到顯示終端,并換行。3.3.5字符串處理函數(shù)2、字符串輸入函數(shù):gets(字符數(shù)組名)
●從鍵盤輸入一個字符串(可含空格)到字符數(shù)組中,換行符作為輸入的結(jié)束符。3.3字符數(shù)組3、字符串連接函數(shù):strcat(字符數(shù)組名1,字符串或字符數(shù)組名2)
3.3.5字符串處理函數(shù)
●將字符串或字符數(shù)組2中的字符串連接到字符數(shù)組1中字符串的后面,結(jié)果放在字符數(shù)組1中。
說明:(1)字符數(shù)組1必須足夠大,能夠容納連接后的新字符串。
(2)連接時將原字符串1最后的'\0'取消,只在新字符串最后保留'\0'。3.3字符數(shù)組4、字符串復(fù)制函數(shù):strcpy(字符數(shù)組名1,字符串或字符數(shù)組名2)
3.3.5字符串處理函數(shù)
●將字符串或字符數(shù)組2中的字符串復(fù)制到字符數(shù)組1中。
說明:(1)字符數(shù)組1的長
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit3 Weather A let's learn(說課稿)-2023-2024學(xué)年人教PEP版英語四年級下冊001
- 2025寫場地租賃合同范文
- 2025工程建設(shè)招標(biāo)投標(biāo)合同履約銀行保證書
- Unit 1 Playtime Lesson 3(說課稿)-2023-2024學(xué)年人教新起點版英語二年級下冊
- 2023九年級歷史下冊 第一單元 殖民地人民的反抗與資本主義制度的擴展第3課 美國內(nèi)戰(zhàn)說課稿 新人教版
- 2025泵車租賃合同
- 2024-2025學(xué)年高中歷史 專題二 近代中國資本主義的曲折發(fā)展 2.1 近代中國民族工業(yè)的興起說課稿1 人民版必修2
- 蔬菜物資發(fā)放方案
- 養(yǎng)生館前臺合同范例
- 代理經(jīng)營店鋪合同范例
- 2025至2030年中國PVC熱縮封帽數(shù)據(jù)監(jiān)測研究報告
- (一診)畢節(jié)市2025屆高三第一次診斷性考試 生物試卷(含答案)
- 《教育強國建設(shè)規(guī)劃綱要(2024-2035年)》解讀與培訓(xùn)
- 2025年市場營銷人員工作計劃
- 2025年枝江金潤源建設(shè)集團招聘筆試參考題庫含答案解析
- 中國減肥連鎖行業(yè)市場調(diào)查研究及投資戰(zhàn)略研究報告
- 危險化學(xué)品安全監(jiān)管培訓(xùn)
- 2024-2030年中國醫(yī)療建筑工程行業(yè)發(fā)展?jié)摿巴顿Y戰(zhàn)略規(guī)劃分析報告
- 人工智能導(dǎo)論知到智慧樹章節(jié)測試課后答案2024年秋天津大學(xué)
- 金融消保培訓(xùn)
- 2024-2025學(xué)年七年級英語上冊單詞默寫冊
評論
0/150
提交評論