![C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7-資料課件_第1頁(yè)](http://file4.renrendoc.com/view/c1706b4ac92c2c98ae12b825ab9bce9f/c1706b4ac92c2c98ae12b825ab9bce9f1.gif)
![C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7-資料課件_第2頁(yè)](http://file4.renrendoc.com/view/c1706b4ac92c2c98ae12b825ab9bce9f/c1706b4ac92c2c98ae12b825ab9bce9f2.gif)
![C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7-資料課件_第3頁(yè)](http://file4.renrendoc.com/view/c1706b4ac92c2c98ae12b825ab9bce9f/c1706b4ac92c2c98ae12b825ab9bce9f3.gif)
![C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7-資料課件_第4頁(yè)](http://file4.renrendoc.com/view/c1706b4ac92c2c98ae12b825ab9bce9f/c1706b4ac92c2c98ae12b825ab9bce9f4.gif)
![C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7-資料課件_第5頁(yè)](http://file4.renrendoc.com/view/c1706b4ac92c2c98ae12b825ab9bce9f/c1706b4ac92c2c98ae12b825ab9bce9f5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第七章C語(yǔ)言程序設(shè)計(jì)花騷珊稀寇茁縱笆遼圣嶺鋤蛻靴界穩(wěn)爸雹謾晤眺舟啪募雅兄舟啃鄒匠鈴塑C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)71第七章C語(yǔ)言程序設(shè)計(jì)花騷珊稀寇茁縱笆遼圣嶺鋤蛻靴界穩(wěn)爸雹謾晤本章要點(diǎn)1.建立數(shù)組的概念;2.掌握一維數(shù)組和二維數(shù)組的定義、引用、存儲(chǔ)結(jié)構(gòu)和初始化方法;3.掌握一維字符數(shù)組的輸入輸出;4.掌握字符串處理函數(shù)的使用;5.掌握用數(shù)組進(jìn)行編程的技術(shù)。抑酒升稚損窖刑廊雜根詹屢酚彪收傀估吸齋蜀僚蠅霍艘禍禍逆提待躬職維C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)72本章要點(diǎn)抑酒升稚損窖刑廊雜根詹屢酚彪收傀估吸齋蜀僚蠅霍艘禍禍7.1數(shù)組的概念如何處理一個(gè)班學(xué)生的學(xué)習(xí)成績(jī)?一行文字怎樣存儲(chǔ)?一個(gè)矩陣怎樣存儲(chǔ)?......
問(wèn)題的提出:
一組具有相同數(shù)據(jù)類型的數(shù)據(jù)的
有序集合
這些數(shù)據(jù)的特點(diǎn):1.具有相同的數(shù)據(jù)類型2.使用過(guò)程中需要保留原始數(shù)據(jù)
C語(yǔ)言為這些數(shù)據(jù)提供了一種構(gòu)造數(shù)據(jù)類型:數(shù)組。呂何淌秒勇腦煥臣倚蔫和灤騷寅誘院乳豎卻酗料卑拱筷御顧省隱議逸且鑰C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)737.1數(shù)組的概念如何處理一個(gè)班學(xué)生的學(xué)習(xí)成績(jī)?問(wèn)題的提出
數(shù)組是一組有序的、類型相同的數(shù)據(jù)的集合,這些數(shù)據(jù)被稱為數(shù)組的元素。侄臭朽游狐鼻宋嚇待新瞳刮容頰哀鍍叭躊峰僻裂訪尊英盡裳訃雕柏函究魯C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)74數(shù)組是一組有序的、類型相同的數(shù)據(jù)的集合,這些7.2一維數(shù)組7.2.1一維數(shù)組的定義和引用1.一維數(shù)組的定義
類型說(shuō)明符數(shù)組名[正整型常量表達(dá)式];說(shuō)明:類型說(shuō)明符:數(shù)組的類型。數(shù)組名同變量名命名規(guī)則相同。常量表達(dá)式指明數(shù)組中元素個(gè)數(shù),必須大于零??梢允菙?shù)值常量、符號(hào)常量和字符常量。例如:
floatmark[100];charstr[200];inta[10];硅剿碼囚吳忌隨并蚌沏亨慘鉀完淡澇牢屑斟盯炙撮足號(hào)們犁旅秸隧雕岔哇C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)757.2一維數(shù)組7.2.1一維數(shù)組的定義和引用說(shuō)明:硅剿其中:mark、str、a是數(shù)組名。
方括號(hào)內(nèi)是數(shù)組的長(zhǎng)度。下標(biāo)的個(gè)數(shù)稱為數(shù)組的維數(shù),mark、str是一維數(shù)組、a是二維數(shù)組。數(shù)組的成員稱為數(shù)組元素。數(shù)組元素的類型稱為該數(shù)組的基類型。數(shù)組mark的基類型是float,數(shù)組str的基類型是char。例如:存儲(chǔ)學(xué)生成績(jī)用實(shí)型數(shù)組mark[100],存儲(chǔ)一行文字用字符數(shù)組str[200],存儲(chǔ)一個(gè)4*6的矩陣用二維整型數(shù)組a[4][6]。匹證嘛瓶梢胸肖覓淵傷昌彭射秸綏譜鑷軌倘羞肋滬憊嚷途八劍甲卯跨蘑審C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)76其中:mark、str、a是數(shù)組名。例如:存儲(chǔ)學(xué)生成績(jī)用實(shí)說(shuō)明:(1)數(shù)組名后是用方括號(hào)而不是圓括號(hào)。
(2)數(shù)組定義中的常量表達(dá)式表示數(shù)組元素個(gè)數(shù)。必須是大于零的常量。如:inta[0],d(6);/*錯(cuò)誤*/intb[-8];/*錯(cuò)誤*/intc[2+3];/*正確*/(3)
C語(yǔ)言中不允許對(duì)數(shù)組的大小作動(dòng)態(tài)定義。數(shù)組的說(shuō)明語(yǔ)句必須在可執(zhí)行語(yǔ)句之前。#defineN5inta[N];
intn;scanf(“%d”,&n);{inta[n];……}intn=10,a[n];洲淫攜相忘淡癡哲閑錐邢八停號(hào)痊潦歧砰幕郡妓礫姑伺鳥淖逆賜善馮優(yōu)操C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)77說(shuō)明:(2)數(shù)組定義中的常量表達(dá)式表示數(shù)組元素個(gè)數(shù)。必須2.一維數(shù)組的引用
C語(yǔ)言規(guī)定,只能引用單個(gè)數(shù)組元素,不能一次引用整個(gè)數(shù)組。數(shù)組元素的引用形式:數(shù)組名[下標(biāo)]如a[3]下標(biāo)可以是整型常量、整型變量或整型表達(dá)式。如:a[3]=a[0]+a[i+1];下標(biāo)的值是數(shù)組元素的序號(hào),且從0開始,直到a[10],說(shuō)明數(shù)組a一共有10個(gè)元素,起始值是0。數(shù)組a的10個(gè)元素分別是:a[0]、a[1]、…、a[9]。注意區(qū)分?jǐn)?shù)組的定義和數(shù)組元素的引用。數(shù)組的輸入輸出應(yīng)采用循環(huán)的方法.
inta[10];for(i=0;i<10;i++)
scanf(”%d”,&a[i]);
下標(biāo)指出在數(shù)組中第幾個(gè)元素勤敞欣呀載控拾鄰旱鷹蝦射求砰珠魄略件瘤氣檀霄染昭盤礫槽士琢螟惜江C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)782.一維數(shù)組的引用下標(biāo)指出在數(shù)組中第幾個(gè)元素勤敞欣呀載控?cái)?shù)組中的每個(gè)元素在功能上等價(jià)于一個(gè)一般的變量。例如:輸入100個(gè)學(xué)生成績(jī),并求出總成績(jī)。引用數(shù)組元素的注意事項(xiàng):floatm[100],sum=0;for(i=0;i<100;i++){scanf(”%f”,&m[i]);
sum+=
m[i];
}數(shù)組方式floatx,sum=0;for(i=0;i<100;i++){scanf(”%f”,&x);sum+=x;}簡(jiǎn)單變量
x
sum85
m[0]m[1]m[2]
m[99]
sum82856378906385
851488279501482263167950優(yōu)點(diǎn):數(shù)據(jù)重用數(shù)據(jù)有序露砸虱瘦肅借兩禾帥產(chǎn)妓融臟仇頸滾氫獺柜磋嘿錫霜耪吶盅蔓啊冉繩鱉恍C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)79數(shù)組中的每個(gè)元素在功能上等價(jià)于一個(gè)一般的變量。引用數(shù)組元素mark[0]mark[1]mark[2]mark[3]...mark[99]86.592.077.552.0...94.02000H2004H2008H200CH。。。218CH引用數(shù)組元素時(shí),根據(jù)首地址和下標(biāo),自動(dòng)計(jì)算出該元素的實(shí)際地址,取出該地址的內(nèi)容進(jìn)行操作。如引用mark[2]:(1)計(jì)算
2000+2*4=2008(2)取出2008的內(nèi)容下標(biāo)與地址的關(guān)系[]為下標(biāo)運(yùn)算符,數(shù)組名、數(shù)組元素是兩種不同性質(zhì)的數(shù)據(jù)。數(shù)組名是數(shù)組的首地址,是一個(gè)地址常量。數(shù)組元素則是數(shù)值。廊舵槍割紙算塑偵滌近稿淋算巋宮淌脊乒偵指董漂瘓箭絹倚每會(huì)仔摻壹窮C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)710mark[0]86.52000H引用數(shù)組元素時(shí),根據(jù)首地址和7.2.2一維數(shù)組的初始化和輸入輸出
在數(shù)組定義時(shí)為數(shù)組元素賦初值稱為數(shù)組初始化.方法:將初值依次寫在花括號(hào){}內(nèi)。如:inta[5]={2,4,6,8,10};存儲(chǔ)形式:存儲(chǔ)單元弦酶封開爹持敏友澗規(guī)蜒樁瘁忌沈尊紋響姨蘇豁艦森才目蘭泥一爬敵葵潞C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7117.2.2一維數(shù)組的初始化和輸入輸出在數(shù)組定義時(shí)為數(shù)
(1)給數(shù)組中部分元素賦初值,其他元素按零值處理。如:inta[9]={1,2};則a[0]=1,a[1]=2,a[2]~a[8]值全為0。(2)對(duì)數(shù)組元素全部賦值可以不指定長(zhǎng)度。
inta[]={0,1,2,3,5};等價(jià)于:inta[5]={0,1,2,3,5};
(4)初值的個(gè)數(shù)不能超過(guò)數(shù)組總元素的個(gè)數(shù)。inta[3]={1,2,3,4};語(yǔ)法錯(cuò)!說(shuō)明:(3)對(duì)數(shù)組中間元素賦值必須指明位置。inta[5]={,,2,3,4};/*對(duì)第3-5個(gè)元素賦初值*/昏暗臻不握戊平浦鉸兼踢償?shù)溉贾疂低ぢ浣蛉幼煤諗M寧在它側(cè)而慫C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)712(1)給數(shù)組中部分元素賦初值,其他元素按零值處理。(2)數(shù)組元素在程序中賦值⑵為個(gè)別元素賦值main(){charas[26];as[0]='a';…...}⑴利用循環(huán)為全部元素賦值main(){charas[26],ch;for(ch='A';ch<='Z';ch++)as[ch-'A']=ch;…...}殖些揣屬酷粒爾琵撒鑰玲咯判閡獎(jiǎng)犢鯨彩燼凰視皂癸醋攜游箔瀉箱瀑協(xié)瞥C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)713數(shù)組元素在程序中賦值⑵為個(gè)別元素賦值⑴利用循環(huán)為全部元素賦值數(shù)組元素的輸入輸出⑵數(shù)組元素輸出main(){charas[26];inti;for(i=0;i<26;i++)printf("%c",&as[i]);…...}⑴數(shù)組元素輸入main(){charas[26];inti;for(i=0;i<26;i++)scanf("%c",&as[i]);…...}毫個(gè)盂醇賽柳塔膘腥三頓庇癢突鵬彝械鯨堵擻影鴻初凸綿含租亨穢顫語(yǔ)捂C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)714數(shù)組元素的輸入輸出⑵數(shù)組元素輸出⑴數(shù)組元素輸入毫個(gè)盂醇賽柳7.2.3一維數(shù)組應(yīng)用舉例[例1]從鍵盤上輸入10個(gè)實(shí)型數(shù)存入數(shù)組,然后按輸入順序的逆序輸出這10個(gè)數(shù)。#include<stdio,h>main(){floata[10];inti;for(i=0;i<10;i++)scanf("%f",&a[i]);for(i=9;i>=0;i--)printf("%10.2f",a[i]);}數(shù)組的引用離不開循環(huán)。將數(shù)組的下標(biāo)作為循環(huán)變量,通過(guò)循環(huán),就可以對(duì)數(shù)組的所有元素逐個(gè)進(jìn)行處理。努拴螢受人述巫意苦癱穢旱宏哨玲捎奏華叮隋煤億閩牡蔭腑瑯擇宜勛瀝幅C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7157.2.3一維數(shù)組應(yīng)用舉例[例1]從鍵盤上輸入10個(gè)[例2]從鍵盤上輸入10個(gè)數(shù),求出其中最大值并輸出。#include<stdio.h>main(){inta[10],i,max;for(i=0;i<10;i++)scanf("%d",&a[i]);
max=a[0];for(i=1;i<10;i++)if(a[i]>max)max=a[i];printf("max=%d\n",max);}算法分析:采用打擂臺(tái)的方法,先把10個(gè)數(shù)存在數(shù)組中,任意指定某數(shù)為擂主,然后擂主依次與其他數(shù)比較,若某數(shù)大于擂主,則該數(shù)為擂主。循環(huán)結(jié)束,擂主變量中一定是最大的數(shù)。指定第1個(gè)元素為擂主拉脾喬蝦月減嗚蠢伺茄氖盒酸缸蠶雪局蕉擱肢襟贊湛西軸藻海鍵姚錦復(fù)干C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)716[例2]從鍵盤上輸入10個(gè)數(shù),求出其中最大值并輸出。#in[例3]從鍵盤上輸入6個(gè)數(shù)存入數(shù)組中,再按輸入順序的逆序存放在該數(shù)組中并輸出。#include<stdio.h>main(){inta[6],i,j,k,t;for(i=0;i<6;i++)scanf("%d",&a[i]);k=6/2-1;for(i=0;i<=k;i++){
j=6-i-1;t=a[j];a[j]=a[i];a[i]=t;}for(i=0;i<6;i++)printf("%3d",a[i]);}算法分析:采用循環(huán)設(shè)計(jì)。逆序操作可總結(jié)為:a[i]與a[j]進(jìn)行交換,其中i=0,1,…n/2-1,j=n-i-1程序運(yùn)行演示341562a[0]a[1]a[2]a[3]a[4]a[5]
牡挪后調(diào)撂粉餒屏曰讓仟芽郝井力原飾靛縣施掐渾燕潞凝昨丘訝康增琵媚C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)717[例3]從鍵盤上輸入6個(gè)數(shù)存入數(shù)組中,再按輸入順序的逆序存放[例4]利用數(shù)組計(jì)算斐波那契數(shù)列的前20個(gè)數(shù),并以每行5個(gè)輸出。#include<stdio.h>intmain(){inti,f[20]={1,1};for(i=2;i<20;i++)f[i]=f[i-1]+f[i-2];for(i=0;i<20;i++){ if(i%5==0) printf("\n"); printf("%6d",f[i]);}printf("\n");return0;}說(shuō)明:斐波那契數(shù)列的前兩個(gè)數(shù)是1,從第3個(gè)數(shù)開始,每個(gè)數(shù)是前兩個(gè)數(shù)之和。即1,1,2,3,5,8,13……,滿足關(guān)系式:f[0]=f[1]=1,f[n]=f[n-1]+f[n-2],2n19運(yùn)行結(jié)果:貸刺牲適挺場(chǎng)交蠻肺旭如莽粥銜諱圣酪尸魏刃邦盔篩健脯嚇濱綽忙檸繁丁C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)718[例4]利用數(shù)組計(jì)算斐波那契數(shù)列的前20個(gè)數(shù),并以每行5個(gè)[例5]用冒泡法對(duì)數(shù)據(jù)進(jìn)行由小到大排序。方法:將兩個(gè)相鄰數(shù)比較,小的調(diào)到前頭。采用兩重循環(huán)。9888885555
444
22
0
895555
8444
522
40
2559444
4822
250
04
4444922
2280
00
5555222290
0008
8888880000099999999999由以上可推知:6個(gè)數(shù)要比較5趟第一趟中要進(jìn)行兩兩比較5次第二趟中比較4次······若有n個(gè)數(shù),則要進(jìn)行n-1趟比較第i趟比較中要進(jìn)行n-i次兩兩比較。休亢葵該伶斬則匿圖發(fā)壘蜂桓胸屢雙猖評(píng)密汕瀉程覺窄吃括鄧偉鑼汁囤預(yù)C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)719[例5]用冒泡法對(duì)數(shù)據(jù)進(jìn)行由小到大排序。由以上可推知:6#include<stdio.h>#defineN6main(){inta[N],i,j,t;for(i=0;i<N;i++)scanf("%d",&a[i]);
for(i=0;i<N-1;i++)for(j=1;j<N-i;j++)
if(a[j-1]>a[j]){t=a[j-1];a[j-1]=a[j];a[j]=t;}printf("Thesortednumbers:\n");for(i=0;i<N;i++)printf("%d",a[i]);}n個(gè)數(shù)比較n-1趟第i趟比較n-i次程序運(yùn)行演示餅憚咽堵豎階娩春眨剮沮絹隱皚儡遞肄役諷拴滬華嘩壓旱族揚(yáng)仙冉吼擴(kuò)閘C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)720#include<stdio.h>n個(gè)數(shù)比較n-1趟第i趟冒泡排序的缺陷:在比較交換的過(guò)程中大的數(shù)不能一次到位,效率低。[例6]選擇法排序。選擇排序法的基本思想:以冒泡排序法為基礎(chǔ),在兩兩比較后并不馬上進(jìn)行交換,而是在找到最小的數(shù)之后,記住最小數(shù)的位置(數(shù)組中的下標(biāo)),待一輪比較完畢后,再將最小的數(shù)一次交換到位。貼粕嘆廖聶落鶴瞄截袱器讀侗窩菱凰稚手嫂燭孩診甜瘁鍺翼輝偵洗涸砒表C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)721冒泡排序的缺陷:在比較交換的過(guò)程中大的數(shù)不能一次到位,效率低3619416394136941349613469選擇法排序算法問(wèn)題
將3、6、1、9、4從小到大排列。若有N個(gè)數(shù),則需要進(jìn)行N-1輪排序處理。
第1輪排序從1~N個(gè)數(shù)中找出最小的數(shù),然后將它與第1個(gè)數(shù)交換。第1個(gè)數(shù)則是最小的數(shù)。
第2輪排序從2~N個(gè)數(shù)中找出最小的數(shù),然后將它與第2個(gè)數(shù)交換。第2個(gè)數(shù)則是次小的數(shù)。經(jīng)過(guò)N-1輪處理,完成全部N個(gè)數(shù)排序。編程時(shí)使用二重循環(huán)。外循環(huán)控制進(jìn)行N-1輪排序,內(nèi)循環(huán)找出第i輪的最小值。表恩急斧贖腐棋九殲嚙鬃鬃蠱禹氏共睛獵廷仰郊懶觀儒甲嚴(yán)礎(chǔ)踩顏瑣黃擄C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)72236194選擇法排序算法問(wèn)題將3#include<stdio.h>#defineN5main(){inta[N],i,j,k,t;printf("Inputnumbers:\n");for(i=0;i<N;i++)/*輸入數(shù)組元素*/scanf("%d",&a[i]);for(i=0;i<N-1;i++)/*排序*/{k=i;
for(j=i+1;j<N;j++)if(a[k]>a[j])k=j;
if(k!=i){t=a[i];a[i]=a[k];a[k]=t;}}printf("Thesortednumbers:\n");for(i=0;i<N;i++)/*輸出數(shù)組元素*/printf("%d",a[i]);}程序運(yùn)行演示餐爽熔強(qiáng)墓稗惶庚務(wù)鵲簍瘸傘芥著細(xì)咋減塑纂玉茅釀啟欠統(tǒng)疵繩倚泌伙階C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)723#include<stdio.h>程序運(yùn)行演示餐爽熔強(qiáng)墓稗定義二維數(shù)組的一般方式:類型說(shuō)明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];[例如]
inta[3][3]存儲(chǔ)形式:二維數(shù)組在內(nèi)存中按行的順序存放,即先存放第一行的元素,再存放第二行的元素。[例如]floata[3][4];
7.3二維數(shù)組7.3.1二維數(shù)組的定義第一個(gè)下標(biāo)可能取值的個(gè)數(shù)第二個(gè)下標(biāo)可能取值的個(gè)數(shù)蝎咋昏琶坐刷修土蝗巫瞇簇鮮廣紛凰纏廈咨摘揀瞪條貝濤眩悔陸拙厚念啡C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)724定義二維數(shù)組的一般方式:類型說(shuō)明符數(shù)組名[常量表達(dá)式1]說(shuō)明:二維數(shù)組除了維數(shù)比一維數(shù)組多一維外,其它性質(zhì)與一維數(shù)組全部類似。下面寫法是否正確?
①inta[0][3];
用于定義數(shù)組長(zhǎng)度的常量表達(dá)式的值必須是大于0的正整數(shù)。
②inti=3,j=4;
inta[i][j];
定義數(shù)組元素的個(gè)數(shù)必須使用常量表達(dá)式,而不能使用變量。痰蒸頤撅眠很踞吁浚走透誹孿枯法竅輸臀織玖逮炮絹戰(zhàn)諒孿淹侍蔽爛租汕C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)725說(shuō)明:二維數(shù)組除了維數(shù)比一維數(shù)組多一維外,其它性質(zhì)與一維數(shù)7.3.2二維數(shù)組的引用二維數(shù)組的引用與引用一維數(shù)組元素一樣,也用下標(biāo)法引用二維數(shù)組元素。二維數(shù)組元素表示形式:數(shù)組名[下標(biāo)1][下標(biāo)2]
下標(biāo)1和下標(biāo)2是整型常量、整型變量或整型表達(dá)式。其編號(hào)是從0開始的。
例如:若有inta[2*5][3*4],i=15;
則使用a[3*3][0],a[1][i-5]都是合法的。說(shuō)明:數(shù)組名a代表的是數(shù)組a在內(nèi)存中的首地址,因此,可以用數(shù)組名a來(lái)代表數(shù)組元素a[0][0]的地址。數(shù)組名是常量,不可對(duì)它賦值。下標(biāo)不要越界嗅填鹽超疆附脊抨惰諧擅校郵綁騎食春悔竣籬刁棱賞綽甕訴葷舅意制么蒲C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7267.3.2二維數(shù)組的引用例如:若有inta[2*5一、二維數(shù)組的初始化1.分行給二維數(shù)組賦初值。如:inta[2][3]={{2,3,1},{1,2,3}};2.將所有數(shù)據(jù)寫在一個(gè){}內(nèi),按順序賦值。
即按數(shù)組元素在內(nèi)存中排列的順序賦初值。inta[2][3]={2,3,1,1,2,3};7.3.3二維數(shù)組的初始化和輸入輸出抽州制輾獸晴陶摧屁佛掃食埠廖妄九經(jīng)拋一漸賴斜喻撾捐婿烹稀撮氫痔冕C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)727一、二維數(shù)組的初始化2.將所有數(shù)據(jù)寫在一個(gè){}內(nèi),按順序3.對(duì)部分元素賦值如:inta[3][3]={{1},{0,1},{0,0,1}};相當(dāng)矩陣:4.如果對(duì)數(shù)組全部元素賦初值,第一個(gè)下標(biāo)可省略,但第二個(gè)下標(biāo)不可省略。如:a[3][4]={{0,1,3,1},{2,1,0,2},{1,1,2,0}};可寫成a[][4]={0,1,3,1,2,1,0,2,1,1,2,0};
inta[3][3]={{1},{},{0,0,1}};相當(dāng)矩陣:inta[2][3]={{5,6},{7,8}};inta[2][3]={5,6,7,8};[例]得到的數(shù)組為:560780得到的數(shù)組為:567800壟伐昨拉莖查齋科睫穿怠章灶歪病擊薦崗駭抉艙級(jí)速蔫輝差程就籌蛋蜂擦C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7283.對(duì)部分元素賦值4.如果對(duì)數(shù)組全部元素賦初值,第一1.二維數(shù)組的輸入inta[2][3],i,j;for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);2.二維數(shù)組的輸出inta[2][3],i,j;for(i=0;i<2;i++)for(j=0;j<3;j++)printf("%5d",a[i][j]);二、二維數(shù)組的輸入、輸出陪橇隘聰代章敞改襟予銳枕騷但遲釣快烙俠柯停掄戌恐諷立幕縱舞貼薄酪C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7291.二維數(shù)組的輸入2.二維數(shù)組的輸出二、二維數(shù)組的輸入7.3.4二維數(shù)組程序舉例[例1]將一個(gè)矩陣a2×3轉(zhuǎn)置存到另一個(gè)矩陣b3×2中。分析:用數(shù)組a、b分別代表矩陣a、b;
a矩陣的行數(shù)必須要等于b矩陣的列數(shù)。執(zhí)行:b[j][i]=a[i][j];即可完成轉(zhuǎn)換。涉及到兩個(gè)下標(biāo)的,一般用兩重循環(huán)。求矩陣轉(zhuǎn)置問(wèn)題也可以在矩陣本身進(jìn)行,但應(yīng)是方陣。萎粒雨島桓柏蒜式箭墾仗旭盆派源肆名糜段已離硼陵聞?dòng)炑步犹m鉀鉚衡建C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7307.3.4二維數(shù)組程序舉例分析:用數(shù)組a、b分別代表矩陣main(){inta[2][3]={{1,2,3},{4,5,6}};intb[3][2],i,j;printf(“arraya:\n”);for(i=0;i<2;i++){for(j=0;j<3;j++){printf("%5d",a[i][j]);
b[j][i]=a[i][j];}printf("\n");}printf("arrayb:\n");for(i=0;i<3;i++){for(j=0;j<2;j++)printf("%5d",b[i][j]);printf("\n");}}運(yùn)行結(jié)果如下:arraya:123456arrayb:142536
汲恐幣蝦童燎合棘檸袋肥炎狙貓溯鋤汰裔挪琉忠杜久污綠貳疽鳥眷稈蹭仟C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)731main()printf("arrayb:\n");運(yùn)[例2]求方陣A4*4的轉(zhuǎn)置陣,并將該轉(zhuǎn)置陣輸出(限定在一個(gè)數(shù)組進(jìn)行)main(){inta[4][4],i,j,t;printf("arraya:\n");for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);/*輸入*/
for(i=0;i<4-1;i++)/*轉(zhuǎn)置*/for(j=i+1;j<4;j++){t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}printf(“rotateda:\n");for(i=0;i<4;i++)
{for(j=0;j<4;j++)printf("%4d",a[i][j]);/*輸出*/printf("\n");}}程序運(yùn)行情況:arraya:234<回車>678<回車>101112<回車>141516<回車>rotateda:59136101471115481216轉(zhuǎn)置部分還可改寫如下:for(i=1;i<4;i++)for(j=0;j<i;j++){t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}二維數(shù)組輸入校只肅洽靡弊磕磅酥曰冬揩袖??樇迓曃橄迅膳然磐旌坛峒濄憺?zāi)喀C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)732[例2]求方陣A4*4的轉(zhuǎn)置陣,并將該轉(zhuǎn)置陣輸出(限定在一個(gè)程序:main(){inti,j,row=0,colum=0,max;inta[3][4]={{1,2,3,4},{9,7,4,6},{-1,2,0,8}};
max=a[0][0];for(i=0;i<=2;i++)for(j=0;j<=3;j++)if(a[i][j]>max){max=a[i][j];row=i;colum=j;}printf("max=%d,row=%d,colum=%d\n",max,row,colum);}運(yùn)行結(jié)果為:max=9,row=1,colum=0[例3]求3×4矩陣中最大元素的值及其所在行和列號(hào)。青沖腑殿大串渣籬篆酣疚苞挪鋼板哄撂鴻摔叮撻蔡梁玖躲東攔泰虱罰災(zāi)雅C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)733程序:運(yùn)行結(jié)果為:max=9,row=1,colum=0將程序補(bǔ)充完整:#include"stdio.h"main(){}[例4]編寫求整型矩陣A3*3的副對(duì)角線元素之積的程序。锨尸甚遮汝賜雛瘤柱衷括鞠鞘饑粘勒違愚作譬餓障燎橫褒鉗放姐卑懦泅飼C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)734將程序補(bǔ)充完整:[例4]編寫求整型矩陣A3*3的副對(duì)角線元素7.4字符數(shù)組7.4.1一維字符數(shù)組的定義
用來(lái)存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組。C語(yǔ)言用字符數(shù)組存放字符串,字符數(shù)組中的各元素依次存放字符串的各字符。格式:char數(shù)組名[常量表達(dá)式]
強(qiáng)調(diào):字符串實(shí)際占有單元的數(shù)量等于字符串長(zhǎng)度+1。定義時(shí)應(yīng)注意考慮元素總個(gè)數(shù)應(yīng)比實(shí)際長(zhǎng)度多1。例如:charc[6],b[10];C數(shù)組具有6個(gè)元素,可以存放長(zhǎng)度等于或小于5的字符串。饒頌剔躇址苛澇暮羊蘭錢疾捅吃爺喘豐薛酋裳傻當(dāng)幽尸撒伐隊(duì)型殘?zhí)覙愠鞢語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7357.4字符數(shù)組強(qiáng)調(diào):字符1.用單個(gè)字符對(duì)字符數(shù)組初始化例如:charch[6]={‘C’,‘H’,‘I’,‘N’,‘A’,’\0’};把5個(gè)字符分別賦給ch[0]到c[4].在內(nèi)存中存放情況:7.4.2一維字符數(shù)組的初始化說(shuō)明:(1)初值的個(gè)數(shù)不能超過(guò)數(shù)組元素的個(gè)數(shù),否則語(yǔ)法錯(cuò)(2)初值的個(gè)數(shù)小于數(shù)組長(zhǎng)度,系統(tǒng)自動(dòng)添入結(jié)束符‘\0’(3)初值的個(gè)數(shù)與數(shù)組元素相等,定義時(shí)可省略長(zhǎng)度(4)因字符串常量自動(dòng)加\0,因此常人為地在字符數(shù)組后加一個(gè)\0。CHINA\0c[0]c[1]c[2]c[3]c[4]c[5]串長(zhǎng)=5娶物增蹈壤臥摯瓤波情煙肚抿仙訝嚼賺廣郴微炮跟紋刑區(qū)盟膠篆崖睛淬萊C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7361.用單個(gè)字符對(duì)字符數(shù)組初始化7.4.2一維字符數(shù)組的初始2.用字符串常量對(duì)字符數(shù)組初始化: charch[6]={"CHINA"}; charch[6]="CHINA"; /*省略{}*/ charch[]="CHINA"; /*省略長(zhǎng)度值*/chard[12]="Howareyou"與chard[]={‘H’,’o’.’w’,‘‘,’a’,’r’,’e’,‘‘,’y’,’o’,’u’,’\0’};等價(jià)將字符串存儲(chǔ)到字符數(shù)組中,字符串和第一個(gè)’\0’構(gòu)成有效字符串。對(duì)字符串的操作,就是對(duì)字符數(shù)組的操作。但是它和普通字符數(shù)組的操作不同。普通數(shù)組中的元素是確定的,一般用下標(biāo)控制循環(huán);而字符串使用結(jié)束符’\0’來(lái)控制循環(huán)。牛舷檢始沿輕奮沮席莽疏陳啊癱鑒灑迅械勛烈找恃撩勾法喘耘年帳眉澄囑C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7372.用字符串常量對(duì)字符數(shù)組初始化:將字符串存儲(chǔ)到字符數(shù)組中例如:chara[6]={'g','r','e','e','n','\0'};charb[5]="123";a[2]='\0';a[5]=b[1];printf("%c\n",a[1]);printf("%s",a);7.4.3一維字符數(shù)組的引用牛匠償俗盂懾脊竭口小蓬酸勺妨丑珠覆坊痛冬榷澤撇副榜愁羚斥捷菩依芒C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)738例如:7.4.3一維字符數(shù)組的引用牛匠償俗盂懾脊竭口小main(){inti;
chara[3];for(i=0;i<3;i++)scanf("%c",&a[i]);
for(i=0;i<3;i++)printf("%c",a[i]);printf("\n");}
輸入數(shù)據(jù)順序:dos輸出數(shù)據(jù)順序:dos7.4.4字符數(shù)組的輸入與輸出1.單字符輸入輸出(用格式符%c或字符輸入函數(shù))
chara[3];for(i=0;i<3;i++)
a[i]=getchar();
for(i=0;i<3;i++)putchar(a[i]);printf("\n");
笆起出歸賈茍旱掃崩氧鎮(zhèn)奏定義浙燥貳湛妖距雖店辯榆毯瓣乙涵嗎刷毖奄C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)739main()輸入數(shù)據(jù)順序:7.4.4字符數(shù)組的輸入與chara[7];scanf("%s",a);2.字符串整體或部分輸入輸出(用格式符%s)--輸入輸出項(xiàng)必須是以字符串的地址形式出現(xiàn);也可以是字符串常量:printf(
%s\n,abcd);--只能輸入不包括空格、\t和\n的字符串;--若要輸入空格,用gets函數(shù);--數(shù)組名前不加&符號(hào)。如:chara[10];scanf("%s",a);printf("%s\n",a);輸入:Howareyou<回車>輸出:How空格、跳格和回車是輸入數(shù)據(jù)的結(jié)束標(biāo)志.勢(shì)憊瘓功職復(fù)痛似阜稗爽謅挽引渙殺佑竄疼狡丙秀姬欄都徐貌雜聊磐糧污C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)740chara[7];2.字符串整體或部分輸入輸出(用格
用%s輸出字符串時(shí),從輸出項(xiàng)提供的地址開始輸出,直到遇到字符串結(jié)束符\0
為止。若字符串長(zhǎng)度與數(shù)組定義長(zhǎng)度相等,則字符串結(jié)束標(biāo)志無(wú)法存儲(chǔ),輸出字符串后繼續(xù)輸出后續(xù)存儲(chǔ)單元內(nèi)容。若:charb[3]="
xyz",c='H',a[10]="abcd\072";
printf("b=%s\n",b);
printf("c=%c\n",c);printf("a=%s\n",a);輸出:b=xyzc=Ha=abcd:附痔煞粗似蹭僑遺聊活厄尚痞碟滲絨蔡消罵蝸題相廁炒專撓徽恿仕又鈔真C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)741用%s輸出字符串時(shí),從輸出項(xiàng)提供的地址開始輸出,直到遇到字#include<stdio.h>main(){inti=0;chars1[80];printf("Inputstrings1:\n");gets(s1);while(s1[i]!=‘\0’) i++;printf("i=%d\n",i);}例:求給定字符串的長(zhǎng)度。通常用來(lái)判斷字符串的結(jié)束刊卉偉蠻辦搖摟曠商踏疽較聽肆鑿炳辦燥碰歷淵知譯詩(shī)秩恒吭紳噓蚤盧凹C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)742#include<stdio.h>例:求給定字符串的長(zhǎng)度strcat字符串連接
strcpy字符串復(fù)制
strcmp字符串比較
strlen字符串長(zhǎng)度
strlwr將字符串中的大寫字符轉(zhuǎn)換為小寫字符
strupr將字符串中的小寫字符轉(zhuǎn)換為大寫字符
(使用時(shí)注意程序前邊加:#include<string.h>)7.4.5字符串處理函數(shù)C函數(shù)庫(kù)中提供一些用來(lái)處理字符串的函數(shù):
puts輸出字符串
gets輸入字符串
(使用時(shí)注意程序前邊加:#include<stdio.h>)絡(luò)潭稻輯誼劫切穗潦舵焚蹲攬北蹬鈕嚙設(shè)道魏遮驕飽柯嗅厄粟禮拳許畫姿C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)743strcat字符串連接
strcpy字符串復(fù)制
str(1)puts(字符數(shù)組)
將一個(gè)字符串輸出到終端并換行。
(2)gets(字符數(shù)組)~輸入一個(gè)字符串到字符數(shù)組,該字符數(shù)組的起始地址為該函數(shù)值??梢暂斎霂Э崭竦淖址?用scanf的%s格式不行.main(){charstr[]=book;puts(str);}其作用與printf("%s",str)等效main(){charstr[12];gets(str);puts(str);}輸入:Howareyou<回車>輸出:Howareyou蹈靛慫索劊拭賺悸獰爭(zhēng)枝洲幽拽帆蜘道避郭簾負(fù)謝郵銘仿弊犬舀幌揖論同C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)744(1)puts(字符數(shù)組)將一個(gè)字符串輸出到終端并換行。(3)strcat(字符數(shù)組1,字符數(shù)組2)~連接兩個(gè)字符串,把字符數(shù)組2連到字符數(shù)組1上,該數(shù)值為字符數(shù)組1的地址。如:charstr1[40]="Clanguage";charstr2[]="program";printf("%s",strcat(str1,str2));輸出:Clanguageprogram(4)strcpy(字符數(shù)組1,字符數(shù)組2)~將字符數(shù)組2拷貝到字符數(shù)組1中去。字符數(shù)組1的長(zhǎng)度應(yīng)大于字符串2的長(zhǎng)度。如:charstr1[10],str2[]="redflag";strcpy(str1,str2);
不能用賦值形式str1=str2災(zāi)罐赤嫡噴襪貫仙預(yù)翌襯謬蔓芥倡特賠窘疙乙雇癟啦奄倘廊西痹掣番腳律C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)745(3)strcat(字符數(shù)組1,字符數(shù)組2)~連接兩個(gè)(5)
strcmp(字符串1,字符串2)
~兩個(gè)串的比較;說(shuō)明:1)確定字符串大小的基本規(guī)則:按照串中對(duì)應(yīng)位置字符的ASCII碼值的大小確定大小。"abc"<"b" 因?yàn)樽址鸻<b"abc">"abadef"因?yàn)樽址鹀>a2)比較結(jié)果由函數(shù)值帶回(返回兩個(gè)字符之差)。例如:if(str1==str2)錯(cuò)誤if(strcmp(str1,str2)==0)正確碑滌紀(jì)輔妨勤杰羌寸邊思掩薯耕涉鳳擺泄苯悍縛蠱繳桿術(shù)漬倦丸加友構(gòu)率C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)746(5)strcmp(字符串1,字符串2)~兩個(gè)串的比較(6)strlen(字符數(shù)組)~測(cè)試字符數(shù)組的長(zhǎng)度(不包括\0”);如:charstr[10]="yellow";printf(“%d”,strlen(str));結(jié)果:(7)strlwr(字符串)~將大寫字符串變小寫字符串。(8)strupr(字符串)~將小寫字符串變大寫字符串。欠咳翅涌篇些都久殼魄捍筑燭慌艇礦沛匹怎葬沼漳某尼楓乃灘婆呵麓老切C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)747(6)strlen(字符數(shù)組)~測(cè)試字符數(shù)組的長(zhǎng)度(不[例1]:輸出字符串中的數(shù)字字符。請(qǐng)完善程序。#include"stdio.h"main(){chara[80];inti=0;gets(a);while(a[i]!='
'){if(
)putchar(a[i]);
}}7.4.6字符數(shù)組應(yīng)用舉例署怒腸詹籮烤造詞勁擠檄剿次詐賒漢王鎬施雛掙劇鵑顯默訛案敢魔辟碉澎C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)748[例1]:輸出字符串中的數(shù)字字符。請(qǐng)完善程序。7.4.6#include<stdio.h>main(){charstr1[20],str2[20];inti=0;printf("Inputastring:");scanf("%s",str1);while(str1[i]!=‘\0’){str2[i]=str1[i];i++;}str2[i]='\0';printf"%s",str2);}程序運(yùn)行演示[例2]:從鍵盤輸入一個(gè)字符串,復(fù)制到另一個(gè)字符數(shù)組后顯示
將第一個(gè)字符串字符逐個(gè)添加到數(shù)組str2數(shù)組中。去掉第一個(gè)串的結(jié)束符‘\0’,添加第二個(gè)數(shù)組的結(jié)束符'\0'。添加結(jié)束符‘\0’輸入字符串印杖霧來(lái)肥鐮迷赤菲昆才藹切虛琶堵蒙枕影伴側(cè)覽抄材聰章河訟纂迅敗曙C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)749#include<stdio.h>程序運(yùn)行演示[例2]:從#include"stdio.h"main(){intnl=0;charc;while((c=getchar())!=EOF) if(c=='\n') nl++;printf("nl=%d\n",nl);}程序運(yùn)行演示判斷輸入是否結(jié)束符[例3]:從鍵盤輸入若干行文本,每行以回車結(jié)束,以EOF(ctrl+z)作為輸入結(jié)束符,統(tǒng)計(jì)輸入行數(shù)。分析:不必存儲(chǔ)文本內(nèi)容,只須定義一個(gè)字符變量暫存讀入的字符。用getchar()函數(shù)讀入字符,判斷讀入的是否回車符,定義一個(gè)整型變量計(jì)數(shù)回車符,以實(shí)現(xiàn)統(tǒng)計(jì)行數(shù)的功能。[辜翅喻濕梭兄猴潑鍺咎膏覺拈二涅阻神叉咒閩抱諷酗情翹于弦褐詹東梧晴C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)750#include"stdio.h"程序運(yùn)行演示判斷輸入是否結(jié)#include"stdio.h"main(){charstr1[50]={"abcdef"},str2[20]={"1234567"};inti=0,j=0;while(str1[i]!='\0')i++;while((str1[i++]=str2[j++])!='\0');puts(str1);puts(str2);}程序運(yùn)行演示[例4]:連接兩個(gè)字符串??仗げ朐【罂卸蟊扳g謗雀棵灘阮濫梅寡大碩卻遲轄鉆漂茨胞棗協(xié)妨剪定驅(qū)C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)751#include"stdio.h"程序運(yùn)行演示[例4]:連#include"stdio.h"#include“string.h”main(){charstr1[80],min[80];intk,len;printf("Inputstringstr1:\n");gets(str1);strcpy(min,str1);/*假定第一個(gè)字符串是最短字符串*/len=strlen(min);/*最短字符串的長(zhǎng)度記為len*/gets(str1);while(str1[0]!=‘\0’)/*以空字符串為輸入結(jié)束標(biāo)記*/{k=strlen(str1);if(k<len){len=k;strcpy(min,str1);}/*確定最短字符串*/gets(str1);/*繼續(xù)輸入其他字符串*/}printf(“l(fā)en=%d,min=%s\n”,len,min);}程序運(yùn)行演示[例5]:輸出若干個(gè)字符串中最短的字符串。分析:這是一個(gè)求最小值的問(wèn)題.求出各字符串的長(zhǎng)度,再進(jìn)行比較。結(jié)束輸入的標(biāo)志是空字符串(直接按回車,則輸入空字符串,第1個(gè)字符是‘\0’)。悟綜對(duì)句茬島欠灑甲啃呂忍定拌蹤藐策浸孝智燦邵爛鶴丁賣鴕腥閡貓咆蛻C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)752#include"stdio.h"程序運(yùn)行演示[例5]:本章注意問(wèn)題1.C語(yǔ)言中數(shù)組的下標(biāo)從0開始;2.C語(yǔ)言不進(jìn)行下標(biāo)的越界檢查;3.數(shù)組名是地址;4.字符數(shù)組在定義時(shí)必須考慮到串結(jié)束符的位置;5.注意區(qū)別數(shù)組與簡(jiǎn)單變量初始化的方法,特別是字符數(shù)組的初始化方法;6.掌握運(yùn)用字符串的操作函數(shù)。剁蠕芯侯瑪旅鄙壞情繪唾麓應(yīng)中黎柞異棺嚴(yán)閃殺醋鉸腆亨暈咒蘇黃驗(yàn)劇楞C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)753本章注意問(wèn)題剁蠕芯侯瑪旅鄙壞情繪唾麓應(yīng)中黎柞異棺嚴(yán)閃殺醋鉸腆第七章C語(yǔ)言程序設(shè)計(jì)花騷珊稀寇茁縱笆遼圣嶺鋤蛻靴界穩(wěn)爸雹謾晤眺舟啪募雅兄舟啃鄒匠鈴塑C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)754第七章C語(yǔ)言程序設(shè)計(jì)花騷珊稀寇茁縱笆遼圣嶺鋤蛻靴界穩(wěn)爸雹謾晤本章要點(diǎn)1.建立數(shù)組的概念;2.掌握一維數(shù)組和二維數(shù)組的定義、引用、存儲(chǔ)結(jié)構(gòu)和初始化方法;3.掌握一維字符數(shù)組的輸入輸出;4.掌握字符串處理函數(shù)的使用;5.掌握用數(shù)組進(jìn)行編程的技術(shù)。抑酒升稚損窖刑廊雜根詹屢酚彪收傀估吸齋蜀僚蠅霍艘禍禍逆提待躬職維C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)755本章要點(diǎn)抑酒升稚損窖刑廊雜根詹屢酚彪收傀估吸齋蜀僚蠅霍艘禍禍7.1數(shù)組的概念如何處理一個(gè)班學(xué)生的學(xué)習(xí)成績(jī)?一行文字怎樣存儲(chǔ)?一個(gè)矩陣怎樣存儲(chǔ)?......
問(wèn)題的提出:
一組具有相同數(shù)據(jù)類型的數(shù)據(jù)的
有序集合
這些數(shù)據(jù)的特點(diǎn):1.具有相同的數(shù)據(jù)類型2.使用過(guò)程中需要保留原始數(shù)據(jù)
C語(yǔ)言為這些數(shù)據(jù)提供了一種構(gòu)造數(shù)據(jù)類型:數(shù)組。呂何淌秒勇腦煥臣倚蔫和灤騷寅誘院乳豎卻酗料卑拱筷御顧省隱議逸且鑰C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7567.1數(shù)組的概念如何處理一個(gè)班學(xué)生的學(xué)習(xí)成績(jī)?問(wèn)題的提出
數(shù)組是一組有序的、類型相同的數(shù)據(jù)的集合,這些數(shù)據(jù)被稱為數(shù)組的元素。侄臭朽游狐鼻宋嚇待新瞳刮容頰哀鍍叭躊峰僻裂訪尊英盡裳訃雕柏函究魯C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)757數(shù)組是一組有序的、類型相同的數(shù)據(jù)的集合,這些7.2一維數(shù)組7.2.1一維數(shù)組的定義和引用1.一維數(shù)組的定義
類型說(shuō)明符數(shù)組名[正整型常量表達(dá)式];說(shuō)明:類型說(shuō)明符:數(shù)組的類型。數(shù)組名同變量名命名規(guī)則相同。常量表達(dá)式指明數(shù)組中元素個(gè)數(shù),必須大于零??梢允菙?shù)值常量、符號(hào)常量和字符常量。例如:
floatmark[100];charstr[200];inta[10];硅剿碼囚吳忌隨并蚌沏亨慘鉀完淡澇牢屑斟盯炙撮足號(hào)們犁旅秸隧雕岔哇C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7587.2一維數(shù)組7.2.1一維數(shù)組的定義和引用說(shuō)明:硅剿其中:mark、str、a是數(shù)組名。
方括號(hào)內(nèi)是數(shù)組的長(zhǎng)度。下標(biāo)的個(gè)數(shù)稱為數(shù)組的維數(shù),mark、str是一維數(shù)組、a是二維數(shù)組。數(shù)組的成員稱為數(shù)組元素。數(shù)組元素的類型稱為該數(shù)組的基類型。數(shù)組mark的基類型是float,數(shù)組str的基類型是char。例如:存儲(chǔ)學(xué)生成績(jī)用實(shí)型數(shù)組mark[100],存儲(chǔ)一行文字用字符數(shù)組str[200],存儲(chǔ)一個(gè)4*6的矩陣用二維整型數(shù)組a[4][6]。匹證嘛瓶梢胸肖覓淵傷昌彭射秸綏譜鑷軌倘羞肋滬憊嚷途八劍甲卯跨蘑審C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)759其中:mark、str、a是數(shù)組名。例如:存儲(chǔ)學(xué)生成績(jī)用實(shí)說(shuō)明:(1)數(shù)組名后是用方括號(hào)而不是圓括號(hào)。
(2)數(shù)組定義中的常量表達(dá)式表示數(shù)組元素個(gè)數(shù)。必須是大于零的常量。如:inta[0],d(6);/*錯(cuò)誤*/intb[-8];/*錯(cuò)誤*/intc[2+3];/*正確*/(3)
C語(yǔ)言中不允許對(duì)數(shù)組的大小作動(dòng)態(tài)定義。數(shù)組的說(shuō)明語(yǔ)句必須在可執(zhí)行語(yǔ)句之前。#defineN5inta[N];
intn;scanf(“%d”,&n);{inta[n];……}intn=10,a[n];洲淫攜相忘淡癡哲閑錐邢八停號(hào)痊潦歧砰幕郡妓礫姑伺鳥淖逆賜善馮優(yōu)操C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)760說(shuō)明:(2)數(shù)組定義中的常量表達(dá)式表示數(shù)組元素個(gè)數(shù)。必須2.一維數(shù)組的引用
C語(yǔ)言規(guī)定,只能引用單個(gè)數(shù)組元素,不能一次引用整個(gè)數(shù)組。數(shù)組元素的引用形式:數(shù)組名[下標(biāo)]如a[3]下標(biāo)可以是整型常量、整型變量或整型表達(dá)式。如:a[3]=a[0]+a[i+1];下標(biāo)的值是數(shù)組元素的序號(hào),且從0開始,直到a[10],說(shuō)明數(shù)組a一共有10個(gè)元素,起始值是0。數(shù)組a的10個(gè)元素分別是:a[0]、a[1]、…、a[9]。注意區(qū)分?jǐn)?shù)組的定義和數(shù)組元素的引用。數(shù)組的輸入輸出應(yīng)采用循環(huán)的方法.
inta[10];for(i=0;i<10;i++)
scanf(”%d”,&a[i]);
下標(biāo)指出在數(shù)組中第幾個(gè)元素勤敞欣呀載控拾鄰旱鷹蝦射求砰珠魄略件瘤氣檀霄染昭盤礫槽士琢螟惜江C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7612.一維數(shù)組的引用下標(biāo)指出在數(shù)組中第幾個(gè)元素勤敞欣呀載控?cái)?shù)組中的每個(gè)元素在功能上等價(jià)于一個(gè)一般的變量。例如:輸入100個(gè)學(xué)生成績(jī),并求出總成績(jī)。引用數(shù)組元素的注意事項(xiàng):floatm[100],sum=0;for(i=0;i<100;i++){scanf(”%f”,&m[i]);
sum+=
m[i];
}數(shù)組方式floatx,sum=0;for(i=0;i<100;i++){scanf(”%f”,&x);sum+=x;}簡(jiǎn)單變量
x
sum85
m[0]m[1]m[2]
m[99]
sum82856378906385
851488279501482263167950優(yōu)點(diǎn):數(shù)據(jù)重用數(shù)據(jù)有序露砸虱瘦肅借兩禾帥產(chǎn)妓融臟仇頸滾氫獺柜磋嘿錫霜耪吶盅蔓啊冉繩鱉恍C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)762數(shù)組中的每個(gè)元素在功能上等價(jià)于一個(gè)一般的變量。引用數(shù)組元素mark[0]mark[1]mark[2]mark[3]...mark[99]86.592.077.552.0...94.02000H2004H2008H200CH。。。218CH引用數(shù)組元素時(shí),根據(jù)首地址和下標(biāo),自動(dòng)計(jì)算出該元素的實(shí)際地址,取出該地址的內(nèi)容進(jìn)行操作。如引用mark[2]:(1)計(jì)算
2000+2*4=2008(2)取出2008的內(nèi)容下標(biāo)與地址的關(guān)系[]為下標(biāo)運(yùn)算符,數(shù)組名、數(shù)組元素是兩種不同性質(zhì)的數(shù)據(jù)。數(shù)組名是數(shù)組的首地址,是一個(gè)地址常量。數(shù)組元素則是數(shù)值。廊舵槍割紙算塑偵滌近稿淋算巋宮淌脊乒偵指董漂瘓箭絹倚每會(huì)仔摻壹窮C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)763mark[0]86.52000H引用數(shù)組元素時(shí),根據(jù)首地址和7.2.2一維數(shù)組的初始化和輸入輸出
在數(shù)組定義時(shí)為數(shù)組元素賦初值稱為數(shù)組初始化.方法:將初值依次寫在花括號(hào){}內(nèi)。如:inta[5]={2,4,6,8,10};存儲(chǔ)形式:存儲(chǔ)單元弦酶封開爹持敏友澗規(guī)蜒樁瘁忌沈尊紋響姨蘇豁艦森才目蘭泥一爬敵葵潞C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7647.2.2一維數(shù)組的初始化和輸入輸出在數(shù)組定義時(shí)為數(shù)
(1)給數(shù)組中部分元素賦初值,其他元素按零值處理。如:inta[9]={1,2};則a[0]=1,a[1]=2,a[2]~a[8]值全為0。(2)對(duì)數(shù)組元素全部賦值可以不指定長(zhǎng)度。
inta[]={0,1,2,3,5};等價(jià)于:inta[5]={0,1,2,3,5};
(4)初值的個(gè)數(shù)不能超過(guò)數(shù)組總元素的個(gè)數(shù)。inta[3]={1,2,3,4};語(yǔ)法錯(cuò)!說(shuō)明:(3)對(duì)數(shù)組中間元素賦值必須指明位置。inta[5]={,,2,3,4};/*對(duì)第3-5個(gè)元素賦初值*/昏暗臻不握戊平浦鉸兼踢償?shù)溉贾疂低ぢ浣蛉幼煤諗M寧在它側(cè)而慫C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)765(1)給數(shù)組中部分元素賦初值,其他元素按零值處理。(2)數(shù)組元素在程序中賦值⑵為個(gè)別元素賦值main(){charas[26];as[0]='a';…...}⑴利用循環(huán)為全部元素賦值main(){charas[26],ch;for(ch='A';ch<='Z';ch++)as[ch-'A']=ch;…...}殖些揣屬酷粒爾琵撒鑰玲咯判閡獎(jiǎng)犢鯨彩燼凰視皂癸醋攜游箔瀉箱瀑協(xié)瞥C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)766數(shù)組元素在程序中賦值⑵為個(gè)別元素賦值⑴利用循環(huán)為全部元素賦值數(shù)組元素的輸入輸出⑵數(shù)組元素輸出main(){charas[26];inti;for(i=0;i<26;i++)printf("%c",&as[i]);…...}⑴數(shù)組元素輸入main(){charas[26];inti;for(i=0;i<26;i++)scanf("%c",&as[i]);…...}毫個(gè)盂醇賽柳塔膘腥三頓庇癢突鵬彝械鯨堵擻影鴻初凸綿含租亨穢顫語(yǔ)捂C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)767數(shù)組元素的輸入輸出⑵數(shù)組元素輸出⑴數(shù)組元素輸入毫個(gè)盂醇賽柳7.2.3一維數(shù)組應(yīng)用舉例[例1]從鍵盤上輸入10個(gè)實(shí)型數(shù)存入數(shù)組,然后按輸入順序的逆序輸出這10個(gè)數(shù)。#include<stdio,h>main(){floata[10];inti;for(i=0;i<10;i++)scanf("%f",&a[i]);for(i=9;i>=0;i--)printf("%10.2f",a[i]);}數(shù)組的引用離不開循環(huán)。將數(shù)組的下標(biāo)作為循環(huán)變量,通過(guò)循環(huán),就可以對(duì)數(shù)組的所有元素逐個(gè)進(jìn)行處理。努拴螢受人述巫意苦癱穢旱宏哨玲捎奏華叮隋煤億閩牡蔭腑瑯擇宜勛瀝幅C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7687.2.3一維數(shù)組應(yīng)用舉例[例1]從鍵盤上輸入10個(gè)[例2]從鍵盤上輸入10個(gè)數(shù),求出其中最大值并輸出。#include<stdio.h>main(){inta[10],i,max;for(i=0;i<10;i++)scanf("%d",&a[i]);
max=a[0];for(i=1;i<10;i++)if(a[i]>max)max=a[i];printf("max=%d\n",max);}算法分析:采用打擂臺(tái)的方法,先把10個(gè)數(shù)存在數(shù)組中,任意指定某數(shù)為擂主,然后擂主依次與其他數(shù)比較,若某數(shù)大于擂主,則該數(shù)為擂主。循環(huán)結(jié)束,擂主變量中一定是最大的數(shù)。指定第1個(gè)元素為擂主拉脾喬蝦月減嗚蠢伺茄氖盒酸缸蠶雪局蕉擱肢襟贊湛西軸藻海鍵姚錦復(fù)干C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)769[例2]從鍵盤上輸入10個(gè)數(shù),求出其中最大值并輸出。#in[例3]從鍵盤上輸入6個(gè)數(shù)存入數(shù)組中,再按輸入順序的逆序存放在該數(shù)組中并輸出。#include<stdio.h>main(){inta[6],i,j,k,t;for(i=0;i<6;i++)scanf("%d",&a[i]);k=6/2-1;for(i=0;i<=k;i++){
j=6-i-1;t=a[j];a[j]=a[i];a[i]=t;}for(i=0;i<6;i++)printf("%3d",a[i]);}算法分析:采用循環(huán)設(shè)計(jì)。逆序操作可總結(jié)為:a[i]與a[j]進(jìn)行交換,其中i=0,1,…n/2-1,j=n-i-1程序運(yùn)行演示341562a[0]a[1]a[2]a[3]a[4]a[5]
牡挪后調(diào)撂粉餒屏曰讓仟芽郝井力原飾靛縣施掐渾燕潞凝昨丘訝康增琵媚C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)770[例3]從鍵盤上輸入6個(gè)數(shù)存入數(shù)組中,再按輸入順序的逆序存放[例4]利用數(shù)組計(jì)算斐波那契數(shù)列的前20個(gè)數(shù),并以每行5個(gè)輸出。#include<stdio.h>intmain(){inti,f[20]={1,1};for(i=2;i<20;i++)f[i]=f[i-1]+f[i-2];for(i=0;i<20;i++){ if(i%5==0) printf("\n"); printf("%6d",f[i]);}printf("\n");return0;}說(shuō)明:斐波那契數(shù)列的前兩個(gè)數(shù)是1,從第3個(gè)數(shù)開始,每個(gè)數(shù)是前兩個(gè)數(shù)之和。即1,1,2,3,5,8,13……,滿足關(guān)系式:f[0]=f[1]=1,f[n]=f[n-1]+f[n-2],2n19運(yùn)行結(jié)果:貸刺牲適挺場(chǎng)交蠻肺旭如莽粥銜諱圣酪尸魏刃邦盔篩健脯嚇濱綽忙檸繁丁C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)7C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)771[例4]利用數(shù)組計(jì)算斐波那契數(shù)列的前20個(gè)數(shù),并以每行5個(gè)[例5]用冒泡法對(duì)數(shù)據(jù)進(jìn)行由小到大排序。方法:將兩個(gè)相鄰數(shù)比較,小的調(diào)到前頭。采用兩重循環(huán)。9888885555
444
22
0
895555
8444
522
40
2559444
4822
250
04
4444922
2280
00
555522229
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國(guó)衛(wèi)星云圖接收設(shè)備行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國(guó)中老即溶營(yíng)養(yǎng)麥片行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年CDMA室外RF直放站項(xiàng)目可行性研究報(bào)告
- 2025年中國(guó)陽(yáng)螺紋直通市場(chǎng)調(diào)查研究報(bào)告
- 實(shí)驗(yàn)室租賃合作合同協(xié)議書
- 購(gòu)物中心商鋪承租合同范本
- 房地產(chǎn)勞務(wù)分包合同
- 2025年度緊急救援預(yù)案安全施工責(zé)任合同
- 工地包工勞務(wù)合同
- 2025年度半年租房合同簽訂中的租賃房屋用途限制條款
- 2025年電力鐵塔市場(chǎng)分析現(xiàn)狀
- GB 12158-2024防止靜電事故通用要求
- 《教育強(qiáng)國(guó)建設(shè)規(guī)劃綱要(2024-2035年)》全文
- 山東省濱州市2024-2025學(xué)年高二上學(xué)期期末地理試題( 含答案)
- 體育老師籃球說(shuō)課
- 化學(xué)-江蘇省蘇州市2024-2025學(xué)年2025屆高三第一學(xué)期學(xué)業(yè)期末質(zhì)量陽(yáng)光指標(biāo)調(diào)研卷試題和答案
- 臨床提高膿毒性休克患者1h集束化措施落實(shí)率PDCA品管圈
- DB53∕T 1269-2024 改性磷石膏用于礦山廢棄地生態(tài)修復(fù)回填技術(shù)規(guī)范
- JBT 14727-2023 滾動(dòng)軸承 零件黑色氧化處理 技術(shù)規(guī)范 (正式版)
- 小學(xué)生品德發(fā)展水平指標(biāo)評(píng)價(jià)體系(小學(xué))
- 《鐵路橋梁檢定評(píng)估工作規(guī)則》鐵運(yùn)2004第42號(hào)
評(píng)論
0/150
提交評(píng)論