C語言程序設(shè)計基礎(chǔ)7-資料課件_第1頁
C語言程序設(shè)計基礎(chǔ)7-資料課件_第2頁
C語言程序設(shè)計基礎(chǔ)7-資料課件_第3頁
C語言程序設(shè)計基礎(chǔ)7-資料課件_第4頁
C語言程序設(shè)計基礎(chǔ)7-資料課件_第5頁
已閱讀5頁,還剩101頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第七章C語言程序設(shè)計花騷珊稀寇茁縱笆遼圣嶺鋤蛻靴界穩(wěn)爸雹謾晤眺舟啪募雅兄舟啃鄒匠鈴塑C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)71第七章C語言程序設(shè)計花騷珊稀寇茁縱笆遼圣嶺鋤蛻靴界穩(wěn)爸雹謾晤本章要點1.建立數(shù)組的概念;2.掌握一維數(shù)組和二維數(shù)組的定義、引用、存儲結(jié)構(gòu)和初始化方法;3.掌握一維字符數(shù)組的輸入輸出;4.掌握字符串處理函數(shù)的使用;5.掌握用數(shù)組進行編程的技術(shù)。抑酒升稚損窖刑廊雜根詹屢酚彪收傀估吸齋蜀僚蠅霍艘禍禍逆提待躬職維C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)72本章要點抑酒升稚損窖刑廊雜根詹屢酚彪收傀估吸齋蜀僚蠅霍艘禍禍7.1數(shù)組的概念如何處理一個班學(xué)生的學(xué)習(xí)成績?一行文字怎樣存儲?一個矩陣怎樣存儲?......

問題的提出:

一組具有相同數(shù)據(jù)類型的數(shù)據(jù)的

有序集合

這些數(shù)據(jù)的特點:1.具有相同的數(shù)據(jù)類型2.使用過程中需要保留原始數(shù)據(jù)

C語言為這些數(shù)據(jù)提供了一種構(gòu)造數(shù)據(jù)類型:數(shù)組。呂何淌秒勇腦煥臣倚蔫和灤騷寅誘院乳豎卻酗料卑拱筷御顧省隱議逸且鑰C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)737.1數(shù)組的概念如何處理一個班學(xué)生的學(xué)習(xí)成績?問題的提出

數(shù)組是一組有序的、類型相同的數(shù)據(jù)的集合,這些數(shù)據(jù)被稱為數(shù)組的元素。侄臭朽游狐鼻宋嚇待新瞳刮容頰哀鍍叭躊峰僻裂訪尊英盡裳訃雕柏函究魯C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)74數(shù)組是一組有序的、類型相同的數(shù)據(jù)的集合,這些7.2一維數(shù)組7.2.1一維數(shù)組的定義和引用1.一維數(shù)組的定義

類型說明符數(shù)組名[正整型常量表達(dá)式];說明:類型說明符:數(shù)組的類型。數(shù)組名同變量名命名規(guī)則相同。常量表達(dá)式指明數(shù)組中元素個數(shù),必須大于零??梢允菙?shù)值常量、符號常量和字符常量。例如:

floatmark[100];charstr[200];inta[10];硅剿碼囚吳忌隨并蚌沏亨慘鉀完淡澇牢屑斟盯炙撮足號們犁旅秸隧雕岔哇C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)757.2一維數(shù)組7.2.1一維數(shù)組的定義和引用說明:硅剿其中:mark、str、a是數(shù)組名。

方括號內(nèi)是數(shù)組的長度。下標(biāo)的個數(shù)稱為數(shù)組的維數(shù),mark、str是一維數(shù)組、a是二維數(shù)組。數(shù)組的成員稱為數(shù)組元素。數(shù)組元素的類型稱為該數(shù)組的基類型。數(shù)組mark的基類型是float,數(shù)組str的基類型是char。例如:存儲學(xué)生成績用實型數(shù)組mark[100],存儲一行文字用字符數(shù)組str[200],存儲一個4*6的矩陣用二維整型數(shù)組a[4][6]。匹證嘛瓶梢胸肖覓淵傷昌彭射秸綏譜鑷軌倘羞肋滬憊嚷途八劍甲卯跨蘑審C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)76其中:mark、str、a是數(shù)組名。例如:存儲學(xué)生成績用實說明:(1)數(shù)組名后是用方括號而不是圓括號。

(2)數(shù)組定義中的常量表達(dá)式表示數(shù)組元素個數(shù)。必須是大于零的常量。如:inta[0],d(6);/*錯誤*/intb[-8];/*錯誤*/intc[2+3];/*正確*/(3)

C語言中不允許對數(shù)組的大小作動態(tài)定義。數(shù)組的說明語句必須在可執(zhí)行語句之前。#defineN5inta[N];

intn;scanf(“%d”,&n);{inta[n];……}intn=10,a[n];洲淫攜相忘淡癡哲閑錐邢八停號痊潦歧砰幕郡妓礫姑伺鳥淖逆賜善馮優(yōu)操C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)77說明:(2)數(shù)組定義中的常量表達(dá)式表示數(shù)組元素個數(shù)。必須2.一維數(shù)組的引用

C語言規(guī)定,只能引用單個數(shù)組元素,不能一次引用整個數(shù)組。數(shù)組元素的引用形式:數(shù)組名[下標(biāo)]如a[3]下標(biāo)可以是整型常量、整型變量或整型表達(dá)式。如:a[3]=a[0]+a[i+1];下標(biāo)的值是數(shù)組元素的序號,且從0開始,直到a[10],說明數(shù)組a一共有10個元素,起始值是0。數(shù)組a的10個元素分別是: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ù)組中第幾個元素勤敞欣呀載控拾鄰旱鷹蝦射求砰珠魄略件瘤氣檀霄染昭盤礫槽士琢螟惜江C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)782.一維數(shù)組的引用下標(biāo)指出在數(shù)組中第幾個元素勤敞欣呀載控數(shù)組中的每個元素在功能上等價于一個一般的變量。例如:輸入100個學(xué)生成績,并求出總成績。引用數(shù)組元素的注意事項: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;}簡單變量

x

sum85

m[0]m[1]m[2]

m[99]

sum82856378906385

851488279501482263167950優(yōu)點:數(shù)據(jù)重用數(shù)據(jù)有序露砸虱瘦肅借兩禾帥產(chǎn)妓融臟仇頸滾氫獺柜磋嘿錫霜耪吶盅蔓啊冉繩鱉恍C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)79數(shù)組中的每個元素在功能上等價于一個一般的變量。引用數(shù)組元素mark[0]mark[1]mark[2]mark[3]...mark[99]86.592.077.552.0...94.02000H2004H2008H200CH。。。218CH引用數(shù)組元素時,根據(jù)首地址和下標(biāo),自動計算出該元素的實際地址,取出該地址的內(nèi)容進行操作。如引用mark[2]:(1)計算

2000+2*4=2008(2)取出2008的內(nèi)容下標(biāo)與地址的關(guān)系[]為下標(biāo)運算符,數(shù)組名、數(shù)組元素是兩種不同性質(zhì)的數(shù)據(jù)。數(shù)組名是數(shù)組的首地址,是一個地址常量。數(shù)組元素則是數(shù)值。廊舵槍割紙算塑偵滌近稿淋算巋宮淌脊乒偵指董漂瘓箭絹倚每會仔摻壹窮C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)710mark[0]86.52000H引用數(shù)組元素時,根據(jù)首地址和7.2.2一維數(shù)組的初始化和輸入輸出

在數(shù)組定義時為數(shù)組元素賦初值稱為數(shù)組初始化.方法:將初值依次寫在花括號{}內(nèi)。如:inta[5]={2,4,6,8,10};存儲形式:存儲單元弦酶封開爹持敏友澗規(guī)蜒樁瘁忌沈尊紋響姨蘇豁艦森才目蘭泥一爬敵葵潞C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)7117.2.2一維數(shù)組的初始化和輸入輸出在數(shù)組定義時為數(shù)

(1)給數(shù)組中部分元素賦初值,其他元素按零值處理。如:inta[9]={1,2};則a[0]=1,a[1]=2,a[2]~a[8]值全為0。(2)對數(shù)組元素全部賦值可以不指定長度。

inta[]={0,1,2,3,5};等價于:inta[5]={0,1,2,3,5};

(4)初值的個數(shù)不能超過數(shù)組總元素的個數(shù)。inta[3]={1,2,3,4};語法錯!說明:(3)對數(shù)組中間元素賦值必須指明位置。inta[5]={,,2,3,4};/*對第3-5個元素賦初值*/昏暗臻不握戊平浦鉸兼踢償?shù)溉贾疂低ぢ浣蛉幼煤諗M寧在它側(cè)而慫C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)712(1)給數(shù)組中部分元素賦初值,其他元素按零值處理。(2)數(shù)組元素在程序中賦值⑵為個別元素賦值main(){charas[26];as[0]='a';…...}⑴利用循環(huán)為全部元素賦值main(){charas[26],ch;for(ch='A';ch<='Z';ch++)as[ch-'A']=ch;…...}殖些揣屬酷粒爾琵撒鑰玲咯判閡獎犢鯨彩燼凰視皂癸醋攜游箔瀉箱瀑協(xié)瞥C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)713數(shù)組元素在程序中賦值⑵為個別元素賦值⑴利用循環(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]);…...}毫個盂醇賽柳塔膘腥三頓庇癢突鵬彝械鯨堵擻影鴻初凸綿含租亨穢顫語捂C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)714數(shù)組元素的輸入輸出⑵數(shù)組元素輸出⑴數(shù)組元素輸入毫個盂醇賽柳7.2.3一維數(shù)組應(yīng)用舉例[例1]從鍵盤上輸入10個實型數(shù)存入數(shù)組,然后按輸入順序的逆序輸出這10個數(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)變量,通過循環(huán),就可以對數(shù)組的所有元素逐個進行處理。努拴螢受人述巫意苦癱穢旱宏哨玲捎奏華叮隋煤億閩牡蔭腑瑯擇宜勛瀝幅C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)7157.2.3一維數(shù)組應(yīng)用舉例[例1]從鍵盤上輸入10個[例2]從鍵盤上輸入10個數(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);}算法分析:采用打擂臺的方法,先把10個數(shù)存在數(shù)組中,任意指定某數(shù)為擂主,然后擂主依次與其他數(shù)比較,若某數(shù)大于擂主,則該數(shù)為擂主。循環(huán)結(jié)束,擂主變量中一定是最大的數(shù)。指定第1個元素為擂主拉脾喬蝦月減嗚蠢伺茄氖盒酸缸蠶雪局蕉擱肢襟贊湛西軸藻海鍵姚錦復(fù)干C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)716[例2]從鍵盤上輸入10個數(shù),求出其中最大值并輸出。#in[例3]從鍵盤上輸入6個數(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è)計。逆序操作可總結(jié)為:a[i]與a[j]進行交換,其中i=0,1,…n/2-1,j=n-i-1程序運行演示341562a[0]a[1]a[2]a[3]a[4]a[5]

牡挪后調(diào)撂粉餒屏曰讓仟芽郝井力原飾靛縣施掐渾燕潞凝昨丘訝康增琵媚C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)717[例3]從鍵盤上輸入6個數(shù)存入數(shù)組中,再按輸入順序的逆序存放[例4]利用數(shù)組計算斐波那契數(shù)列的前20個數(shù),并以每行5個輸出。#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;}說明:斐波那契數(shù)列的前兩個數(shù)是1,從第3個數(shù)開始,每個數(shù)是前兩個數(shù)之和。即1,1,2,3,5,8,13……,滿足關(guān)系式:f[0]=f[1]=1,f[n]=f[n-1]+f[n-2],2n19運行結(jié)果:貸刺牲適挺場交蠻肺旭如莽粥銜諱圣酪尸魏刃邦盔篩健脯嚇濱綽忙檸繁丁C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)718[例4]利用數(shù)組計算斐波那契數(shù)列的前20個數(shù),并以每行5個[例5]用冒泡法對數(shù)據(jù)進行由小到大排序。方法:將兩個相鄰數(shù)比較,小的調(diào)到前頭。采用兩重循環(huán)。9888885555

444

22

0

895555

8444

522

40

2559444

4822

250

04

4444922

2280

00

5555222290

0008

8888880000099999999999由以上可推知:6個數(shù)要比較5趟第一趟中要進行兩兩比較5次第二趟中比較4次······若有n個數(shù),則要進行n-1趟比較第i趟比較中要進行n-i次兩兩比較。休亢葵該伶斬則匿圖發(fā)壘蜂桓胸屢雙猖評密汕瀉程覺窄吃括鄧偉鑼汁囤預(yù)C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)719[例5]用冒泡法對數(shù)據(jù)進行由小到大排序。由以上可推知: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個數(shù)比較n-1趟第i趟比較n-i次程序運行演示餅憚咽堵豎階娩春眨剮沮絹隱皚儡遞肄役諷拴滬華嘩壓旱族揚仙冉吼擴閘C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)720#include<stdio.h>n個數(shù)比較n-1趟第i趟冒泡排序的缺陷:在比較交換的過程中大的數(shù)不能一次到位,效率低。[例6]選擇法排序。選擇排序法的基本思想:以冒泡排序法為基礎(chǔ),在兩兩比較后并不馬上進行交換,而是在找到最小的數(shù)之后,記住最小數(shù)的位置(數(shù)組中的下標(biāo)),待一輪比較完畢后,再將最小的數(shù)一次交換到位。貼粕嘆廖聶落鶴瞄截袱器讀侗窩菱凰稚手嫂燭孩診甜瘁鍺翼輝偵洗涸砒表C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)721冒泡排序的缺陷:在比較交換的過程中大的數(shù)不能一次到位,效率低3619416394136941349613469選擇法排序算法問題

將3、6、1、9、4從小到大排列。若有N個數(shù),則需要進行N-1輪排序處理。

第1輪排序從1~N個數(shù)中找出最小的數(shù),然后將它與第1個數(shù)交換。第1個數(shù)則是最小的數(shù)。

第2輪排序從2~N個數(shù)中找出最小的數(shù),然后將它與第2個數(shù)交換。第2個數(shù)則是次小的數(shù)。經(jīng)過N-1輪處理,完成全部N個數(shù)排序。編程時使用二重循環(huán)。外循環(huán)控制進行N-1輪排序,內(nèi)循環(huán)找出第i輪的最小值。表恩急斧贖腐棋九殲嚙鬃鬃蠱禹氏共睛獵廷仰郊懶觀儒甲嚴(yán)礎(chǔ)踩顏瑣黃擄C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)72236194選擇法排序算法問題將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]);}程序運行演示餐爽熔強墓稗惶庚務(wù)鵲簍瘸傘芥著細(xì)咋減塑纂玉茅釀啟欠統(tǒng)疵繩倚泌伙階C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)723#include<stdio.h>程序運行演示餐爽熔強墓稗定義二維數(shù)組的一般方式:類型說明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];[例如]

inta[3][3]存儲形式:二維數(shù)組在內(nèi)存中按行的順序存放,即先存放第一行的元素,再存放第二行的元素。[例如]floata[3][4];

7.3二維數(shù)組7.3.1二維數(shù)組的定義第一個下標(biāo)可能取值的個數(shù)第二個下標(biāo)可能取值的個數(shù)蝎咋昏琶坐刷修土蝗巫瞇簇鮮廣紛凰纏廈咨摘揀瞪條貝濤?;陉懽竞衲罘菴語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)724定義二維數(shù)組的一般方式:類型說明符數(shù)組名[常量表達(dá)式1]說明:二維數(shù)組除了維數(shù)比一維數(shù)組多一維外,其它性質(zhì)與一維數(shù)組全部類似。下面寫法是否正確?

①inta[0][3];

用于定義數(shù)組長度的常量表達(dá)式的值必須是大于0的正整數(shù)。

②inti=3,j=4;

inta[i][j];

定義數(shù)組元素的個數(shù)必須使用常量表達(dá)式,而不能使用變量。痰蒸頤撅眠很踞吁浚走透誹孿枯法竅輸臀織玖逮炮絹戰(zhàn)諒孿淹侍蔽爛租汕C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)725說明:二維數(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á)式。其編號是從0開始的。

例如:若有inta[2*5][3*4],i=15;

則使用a[3*3][0],a[1][i-5]都是合法的。說明:數(shù)組名a代表的是數(shù)組a在內(nèi)存中的首地址,因此,可以用數(shù)組名a來代表數(shù)組元素a[0][0]的地址。數(shù)組名是常量,不可對它賦值。下標(biāo)不要越界嗅填鹽超疆附脊抨惰諧擅校郵綁騎食春悔竣籬刁棱賞綽甕訴葷舅意制么蒲C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)7267.3.2二維數(shù)組的引用例如:若有inta[2*5一、二維數(shù)組的初始化1.分行給二維數(shù)組賦初值。如:inta[2][3]={{2,3,1},{1,2,3}};2.將所有數(shù)據(jù)寫在一個{}內(nèi),按順序賦值。

即按數(shù)組元素在內(nèi)存中排列的順序賦初值。inta[2][3]={2,3,1,1,2,3};7.3.3二維數(shù)組的初始化和輸入輸出抽州制輾獸晴陶摧屁佛掃食埠廖妄九經(jīng)拋一漸賴斜喻撾捐婿烹稀撮氫痔冕C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)727一、二維數(shù)組的初始化2.將所有數(shù)據(jù)寫在一個{}內(nèi),按順序3.對部分元素賦值如:inta[3][3]={{1},{0,1},{0,0,1}};相當(dāng)矩陣:4.如果對數(shù)組全部元素賦初值,第一個下標(biāo)可省略,但第二個下標(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壟伐昨拉莖查齋科睫穿怠章灶歪病擊薦崗駭抉艙級速蔫輝差程就籌蛋蜂擦C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)7283.對部分元素賦值4.如果對數(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語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)7291.二維數(shù)組的輸入2.二維數(shù)組的輸出二、二維數(shù)組的輸入7.3.4二維數(shù)組程序舉例[例1]將一個矩陣a2×3轉(zhuǎn)置存到另一個矩陣b3×2中。分析:用數(shù)組a、b分別代表矩陣a、b;

a矩陣的行數(shù)必須要等于b矩陣的列數(shù)。執(zhí)行:b[j][i]=a[i][j];即可完成轉(zhuǎn)換。涉及到兩個下標(biāo)的,一般用兩重循環(huán)。求矩陣轉(zhuǎn)置問題也可以在矩陣本身進行,但應(yīng)是方陣。萎粒雨島桓柏蒜式箭墾仗旭盆派源肆名糜段已離硼陵聞訛巡接蘭鉀鉚衡建C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(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");}}運行結(jié)果如下:arraya:123456arrayb:142536

汲恐幣蝦童燎合棘檸袋肥炎狙貓溯鋤汰裔挪琉忠杜久污綠貳疽鳥眷稈蹭仟C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)731main()printf("arrayb:\n");運[例2]求方陣A4*4的轉(zhuǎn)置陣,并將該轉(zhuǎn)置陣輸出(限定在一個數(shù)組進行)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");}}程序運行情況: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語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)732[例2]求方陣A4*4的轉(zhuǎn)置陣,并將該轉(zhuǎn)置陣輸出(限定在一個程序: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);}運行結(jié)果為:max=9,row=1,colum=0[例3]求3×4矩陣中最大元素的值及其所在行和列號。青沖腑殿大串渣籬篆酣疚苞挪鋼板哄撂鴻摔叮撻蔡梁玖躲東攔泰虱罰災(zāi)雅C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)733程序:運行結(jié)果為:max=9,row=1,colum=0將程序補充完整:#include"stdio.h"main(){}[例4]編寫求整型矩陣A3*3的副對角線元素之積的程序。锨尸甚遮汝賜雛瘤柱衷括鞠鞘饑粘勒違愚作譬餓障燎橫褒鉗放姐卑懦泅飼C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)734將程序補充完整:[例4]編寫求整型矩陣A3*3的副對角線元素7.4字符數(shù)組7.4.1一維字符數(shù)組的定義

用來存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組。C語言用字符數(shù)組存放字符串,字符數(shù)組中的各元素依次存放字符串的各字符。格式:char數(shù)組名[常量表達(dá)式]

強調(diào):字符串實際占有單元的數(shù)量等于字符串長度+1。定義時應(yīng)注意考慮元素總個數(shù)應(yīng)比實際長度多1。例如:charc[6],b[10];C數(shù)組具有6個元素,可以存放長度等于或小于5的字符串。饒頌剔躇址苛澇暮羊蘭錢疾捅吃爺喘豐薛酋裳傻當(dāng)幽尸撒伐隊型殘?zhí)覙愠鞢語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)7357.4字符數(shù)組強調(diào):字符1.用單個字符對字符數(shù)組初始化例如:charch[6]={‘C’,‘H’,‘I’,‘N’,‘A’,’\0’};把5個字符分別賦給ch[0]到c[4].在內(nèi)存中存放情況:7.4.2一維字符數(shù)組的初始化說明:(1)初值的個數(shù)不能超過數(shù)組元素的個數(shù),否則語法錯(2)初值的個數(shù)小于數(shù)組長度,系統(tǒng)自動添入結(jié)束符‘\0’(3)初值的個數(shù)與數(shù)組元素相等,定義時可省略長度(4)因字符串常量自動加\0,因此常人為地在字符數(shù)組后加一個\0。CHINA\0c[0]c[1]c[2]c[3]c[4]c[5]串長=5娶物增蹈壤臥摯瓤波情煙肚抿仙訝嚼賺廣郴微炮跟紋刑區(qū)盟膠篆崖睛淬萊C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)7361.用單個字符對字符數(shù)組初始化7.4.2一維字符數(shù)組的初始2.用字符串常量對字符數(shù)組初始化: charch[6]={"CHINA"}; charch[6]="CHINA"; /*省略{}*/ charch[]="CHINA"; /*省略長度值*/chard[12]="Howareyou"與chard[]={‘H’,’o’.’w’,‘‘,’a’,’r’,’e’,‘‘,’y’,’o’,’u’,’\0’};等價將字符串存儲到字符數(shù)組中,字符串和第一個’\0’構(gòu)成有效字符串。對字符串的操作,就是對字符數(shù)組的操作。但是它和普通字符數(shù)組的操作不同。普通數(shù)組中的元素是確定的,一般用下標(biāo)控制循環(huán);而字符串使用結(jié)束符’\0’來控制循環(huán)。牛舷檢始沿輕奮沮席莽疏陳啊癱鑒灑迅械勛烈找恃撩勾法喘耘年帳眉澄囑C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)7372.用字符串常量對字符數(shù)組初始化:將字符串存儲到字符數(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語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(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語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)739main()輸入數(shù)據(jù)順序:7.4.4字符數(shù)組的輸入與chara[7];scanf("%s",a);2.字符串整體或部分輸入輸出(用格式符%s)--輸入輸出項必須是以字符串的地址形式出現(xiàn);也可以是字符串常量:printf(

%s\n,abcd);--只能輸入不包括空格、\t和\n的字符串;--若要輸入空格,用gets函數(shù);--數(shù)組名前不加&符號。如:chara[10];scanf("%s",a);printf("%s\n",a);輸入:Howareyou<回車>輸出:How空格、跳格和回車是輸入數(shù)據(jù)的結(jié)束標(biāo)志.勢憊瘓功職復(fù)痛似阜稗爽謅挽引渙殺佑竄疼狡丙秀姬欄都徐貌雜聊磐糧污C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)740chara[7];2.字符串整體或部分輸入輸出(用格

用%s輸出字符串時,從輸出項提供的地址開始輸出,直到遇到字符串結(jié)束符\0

為止。若字符串長度與數(shù)組定義長度相等,則字符串結(jié)束標(biāo)志無法存儲,輸出字符串后繼續(xù)輸出后續(xù)存儲單元內(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語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)741用%s輸出字符串時,從輸出項提供的地址開始輸出,直到遇到字#include<stdio.h>main(){inti=0;chars1[80];printf("Inputstrings1:\n");gets(s1);while(s1[i]!=‘\0’) i++;printf("i=%d\n",i);}例:求給定字符串的長度。通常用來判斷字符串的結(jié)束刊卉偉蠻辦搖摟曠商踏疽較聽肆鑿炳辦燥碰歷淵知譯詩秩恒吭紳噓蚤盧凹C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)742#include<stdio.h>例:求給定字符串的長度strcat字符串連接

strcpy字符串復(fù)制

strcmp字符串比較

strlen字符串長度

strlwr將字符串中的大寫字符轉(zhuǎn)換為小寫字符

strupr將字符串中的小寫字符轉(zhuǎn)換為大寫字符

(使用時注意程序前邊加:#include<string.h>)7.4.5字符串處理函數(shù)C函數(shù)庫中提供一些用來處理字符串的函數(shù):

puts輸出字符串

gets輸入字符串

(使用時注意程序前邊加:#include<stdio.h>)絡(luò)潭稻輯誼劫切穗潦舵焚蹲攬北蹬鈕嚙設(shè)道魏遮驕飽柯嗅厄粟禮拳許畫姿C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)743strcat字符串連接

strcpy字符串復(fù)制

str(1)puts(字符數(shù)組)

將一個字符串輸出到終端并換行。

(2)gets(字符數(shù)組)~輸入一個字符串到字符數(shù)組,該字符數(shù)組的起始地址為該函數(shù)值??梢暂斎霂Э崭竦淖址?用scanf的%s格式不行.main(){charstr[]=book;puts(str);}其作用與printf("%s",str)等效main(){charstr[12];gets(str);puts(str);}輸入:Howareyou<回車>輸出:Howareyou蹈靛慫索劊拭賺悸獰爭枝洲幽拽帆蜘道避郭簾負(fù)謝郵銘仿弊犬舀幌揖論同C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)744(1)puts(字符數(shù)組)將一個字符串輸出到終端并換行。(3)strcat(字符數(shù)組1,字符數(shù)組2)~連接兩個字符串,把字符數(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的長度應(yīng)大于字符串2的長度。如:charstr1[10],str2[]="redflag";strcpy(str1,str2);

不能用賦值形式str1=str2災(zāi)罐赤嫡噴襪貫仙預(yù)翌襯謬蔓芥倡特賠窘疙乙雇癟啦奄倘廊西痹掣番腳律C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)745(3)strcat(字符數(shù)組1,字符數(shù)組2)~連接兩個(5)

strcmp(字符串1,字符串2)

~兩個串的比較;說明:1)確定字符串大小的基本規(guī)則:按照串中對應(yīng)位置字符的ASCII碼值的大小確定大小。"abc"<"b" 因為字符a<b"abc">"abadef"因為字符c>a2)比較結(jié)果由函數(shù)值帶回(返回兩個字符之差)。例如:if(str1==str2)錯誤if(strcmp(str1,str2)==0)正確碑滌紀(jì)輔妨勤杰羌寸邊思掩薯耕涉鳳擺泄苯悍縛蠱繳桿術(shù)漬倦丸加友構(gòu)率C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)746(5)strcmp(字符串1,字符串2)~兩個串的比較(6)strlen(字符數(shù)組)~測試字符數(shù)組的長度(不包括\0”);如:charstr[10]="yellow";printf(“%d”,strlen(str));結(jié)果:(7)strlwr(字符串)~將大寫字符串變小寫字符串。(8)strupr(字符串)~將小寫字符串變大寫字符串。欠咳翅涌篇些都久殼魄捍筑燭慌艇礦沛匹怎葬沼漳某尼楓乃灘婆呵麓老切C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)747(6)strlen(字符數(shù)組)~測試字符數(shù)組的長度(不[例1]:輸出字符串中的數(shù)字字符。請完善程序。#include"stdio.h"main(){chara[80];inti=0;gets(a);while(a[i]!='

'){if(

)putchar(a[i]);

}}7.4.6字符數(shù)組應(yīng)用舉例署怒腸詹籮烤造詞勁擠檄剿次詐賒漢王鎬施雛掙劇鵑顯默訛案敢魔辟碉澎C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)748[例1]:輸出字符串中的數(shù)字字符。請完善程序。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);}程序運行演示[例2]:從鍵盤輸入一個字符串,復(fù)制到另一個字符數(shù)組后顯示

將第一個字符串字符逐個添加到數(shù)組str2數(shù)組中。去掉第一個串的結(jié)束符‘\0’,添加第二個數(shù)組的結(jié)束符'\0'。添加結(jié)束符‘\0’輸入字符串印杖霧來肥鐮迷赤菲昆才藹切虛琶堵蒙枕影伴側(cè)覽抄材聰章河訟纂迅敗曙C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)749#include<stdio.h>程序運行演示[例2]:從#include"stdio.h"main(){intnl=0;charc;while((c=getchar())!=EOF) if(c=='\n') nl++;printf("nl=%d\n",nl);}程序運行演示判斷輸入是否結(jié)束符[例3]:從鍵盤輸入若干行文本,每行以回車結(jié)束,以EOF(ctrl+z)作為輸入結(jié)束符,統(tǒng)計輸入行數(shù)。分析:不必存儲文本內(nèi)容,只須定義一個字符變量暫存讀入的字符。用getchar()函數(shù)讀入字符,判斷讀入的是否回車符,定義一個整型變量計數(shù)回車符,以實現(xiàn)統(tǒng)計行數(shù)的功能。[辜翅喻濕梭兄猴潑鍺咎膏覺拈二涅阻神叉咒閩抱諷酗情翹于弦褐詹東梧晴C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)750#include"stdio.h"程序運行演示判斷輸入是否結(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);}程序運行演示[例4]:連接兩個字符串??仗げ朐【罂卸蟊扳g謗雀棵灘阮濫梅寡大碩卻遲轄鉆漂茨胞棗協(xié)妨剪定驅(qū)C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)751#include"stdio.h"程序運行演示[例4]:連#include"stdio.h"#include“string.h”main(){charstr1[80],min[80];intk,len;printf("Inputstringstr1:\n");gets(str1);strcpy(min,str1);/*假定第一個字符串是最短字符串*/len=strlen(min);/*最短字符串的長度記為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);}程序運行演示[例5]:輸出若干個字符串中最短的字符串。分析:這是一個求最小值的問題.求出各字符串的長度,再進行比較。結(jié)束輸入的標(biāo)志是空字符串(直接按回車,則輸入空字符串,第1個字符是‘\0’)。悟綜對句茬島欠灑甲啃呂忍定拌蹤藐策浸孝智燦邵爛鶴丁賣鴕腥閡貓咆蛻C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)752#include"stdio.h"程序運行演示[例5]:本章注意問題1.C語言中數(shù)組的下標(biāo)從0開始;2.C語言不進行下標(biāo)的越界檢查;3.數(shù)組名是地址;4.字符數(shù)組在定義時必須考慮到串結(jié)束符的位置;5.注意區(qū)別數(shù)組與簡單變量初始化的方法,特別是字符數(shù)組的初始化方法;6.掌握運用字符串的操作函數(shù)。剁蠕芯侯瑪旅鄙壞情繪唾麓應(yīng)中黎柞異棺嚴(yán)閃殺醋鉸腆亨暈咒蘇黃驗劇楞C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)753本章注意問題剁蠕芯侯瑪旅鄙壞情繪唾麓應(yīng)中黎柞異棺嚴(yán)閃殺醋鉸腆第七章C語言程序設(shè)計花騷珊稀寇茁縱笆遼圣嶺鋤蛻靴界穩(wěn)爸雹謾晤眺舟啪募雅兄舟啃鄒匠鈴塑C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)754第七章C語言程序設(shè)計花騷珊稀寇茁縱笆遼圣嶺鋤蛻靴界穩(wěn)爸雹謾晤本章要點1.建立數(shù)組的概念;2.掌握一維數(shù)組和二維數(shù)組的定義、引用、存儲結(jié)構(gòu)和初始化方法;3.掌握一維字符數(shù)組的輸入輸出;4.掌握字符串處理函數(shù)的使用;5.掌握用數(shù)組進行編程的技術(shù)。抑酒升稚損窖刑廊雜根詹屢酚彪收傀估吸齋蜀僚蠅霍艘禍禍逆提待躬職維C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)755本章要點抑酒升稚損窖刑廊雜根詹屢酚彪收傀估吸齋蜀僚蠅霍艘禍禍7.1數(shù)組的概念如何處理一個班學(xué)生的學(xué)習(xí)成績?一行文字怎樣存儲?一個矩陣怎樣存儲?......

問題的提出:

一組具有相同數(shù)據(jù)類型的數(shù)據(jù)的

有序集合

這些數(shù)據(jù)的特點:1.具有相同的數(shù)據(jù)類型2.使用過程中需要保留原始數(shù)據(jù)

C語言為這些數(shù)據(jù)提供了一種構(gòu)造數(shù)據(jù)類型:數(shù)組。呂何淌秒勇腦煥臣倚蔫和灤騷寅誘院乳豎卻酗料卑拱筷御顧省隱議逸且鑰C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)7567.1數(shù)組的概念如何處理一個班學(xué)生的學(xué)習(xí)成績?問題的提出

數(shù)組是一組有序的、類型相同的數(shù)據(jù)的集合,這些數(shù)據(jù)被稱為數(shù)組的元素。侄臭朽游狐鼻宋嚇待新瞳刮容頰哀鍍叭躊峰僻裂訪尊英盡裳訃雕柏函究魯C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)757數(shù)組是一組有序的、類型相同的數(shù)據(jù)的集合,這些7.2一維數(shù)組7.2.1一維數(shù)組的定義和引用1.一維數(shù)組的定義

類型說明符數(shù)組名[正整型常量表達(dá)式];說明:類型說明符:數(shù)組的類型。數(shù)組名同變量名命名規(guī)則相同。常量表達(dá)式指明數(shù)組中元素個數(shù),必須大于零??梢允菙?shù)值常量、符號常量和字符常量。例如:

floatmark[100];charstr[200];inta[10];硅剿碼囚吳忌隨并蚌沏亨慘鉀完淡澇牢屑斟盯炙撮足號們犁旅秸隧雕岔哇C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)7587.2一維數(shù)組7.2.1一維數(shù)組的定義和引用說明:硅剿其中:mark、str、a是數(shù)組名。

方括號內(nèi)是數(shù)組的長度。下標(biāo)的個數(shù)稱為數(shù)組的維數(shù),mark、str是一維數(shù)組、a是二維數(shù)組。數(shù)組的成員稱為數(shù)組元素。數(shù)組元素的類型稱為該數(shù)組的基類型。數(shù)組mark的基類型是float,數(shù)組str的基類型是char。例如:存儲學(xué)生成績用實型數(shù)組mark[100],存儲一行文字用字符數(shù)組str[200],存儲一個4*6的矩陣用二維整型數(shù)組a[4][6]。匹證嘛瓶梢胸肖覓淵傷昌彭射秸綏譜鑷軌倘羞肋滬憊嚷途八劍甲卯跨蘑審C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)759其中:mark、str、a是數(shù)組名。例如:存儲學(xué)生成績用實說明:(1)數(shù)組名后是用方括號而不是圓括號。

(2)數(shù)組定義中的常量表達(dá)式表示數(shù)組元素個數(shù)。必須是大于零的常量。如:inta[0],d(6);/*錯誤*/intb[-8];/*錯誤*/intc[2+3];/*正確*/(3)

C語言中不允許對數(shù)組的大小作動態(tài)定義。數(shù)組的說明語句必須在可執(zhí)行語句之前。#defineN5inta[N];

intn;scanf(“%d”,&n);{inta[n];……}intn=10,a[n];洲淫攜相忘淡癡哲閑錐邢八停號痊潦歧砰幕郡妓礫姑伺鳥淖逆賜善馮優(yōu)操C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)760說明:(2)數(shù)組定義中的常量表達(dá)式表示數(shù)組元素個數(shù)。必須2.一維數(shù)組的引用

C語言規(guī)定,只能引用單個數(shù)組元素,不能一次引用整個數(shù)組。數(shù)組元素的引用形式:數(shù)組名[下標(biāo)]如a[3]下標(biāo)可以是整型常量、整型變量或整型表達(dá)式。如:a[3]=a[0]+a[i+1];下標(biāo)的值是數(shù)組元素的序號,且從0開始,直到a[10],說明數(shù)組a一共有10個元素,起始值是0。數(shù)組a的10個元素分別是: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ù)組中第幾個元素勤敞欣呀載控拾鄰旱鷹蝦射求砰珠魄略件瘤氣檀霄染昭盤礫槽士琢螟惜江C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)7612.一維數(shù)組的引用下標(biāo)指出在數(shù)組中第幾個元素勤敞欣呀載控數(shù)組中的每個元素在功能上等價于一個一般的變量。例如:輸入100個學(xué)生成績,并求出總成績。引用數(shù)組元素的注意事項: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;}簡單變量

x

sum85

m[0]m[1]m[2]

m[99]

sum82856378906385

851488279501482263167950優(yōu)點:數(shù)據(jù)重用數(shù)據(jù)有序露砸虱瘦肅借兩禾帥產(chǎn)妓融臟仇頸滾氫獺柜磋嘿錫霜耪吶盅蔓啊冉繩鱉恍C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)762數(shù)組中的每個元素在功能上等價于一個一般的變量。引用數(shù)組元素mark[0]mark[1]mark[2]mark[3]...mark[99]86.592.077.552.0...94.02000H2004H2008H200CH。。。218CH引用數(shù)組元素時,根據(jù)首地址和下標(biāo),自動計算出該元素的實際地址,取出該地址的內(nèi)容進行操作。如引用mark[2]:(1)計算

2000+2*4=2008(2)取出2008的內(nèi)容下標(biāo)與地址的關(guān)系[]為下標(biāo)運算符,數(shù)組名、數(shù)組元素是兩種不同性質(zhì)的數(shù)據(jù)。數(shù)組名是數(shù)組的首地址,是一個地址常量。數(shù)組元素則是數(shù)值。廊舵槍割紙算塑偵滌近稿淋算巋宮淌脊乒偵指董漂瘓箭絹倚每會仔摻壹窮C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)763mark[0]86.52000H引用數(shù)組元素時,根據(jù)首地址和7.2.2一維數(shù)組的初始化和輸入輸出

在數(shù)組定義時為數(shù)組元素賦初值稱為數(shù)組初始化.方法:將初值依次寫在花括號{}內(nèi)。如:inta[5]={2,4,6,8,10};存儲形式:存儲單元弦酶封開爹持敏友澗規(guī)蜒樁瘁忌沈尊紋響姨蘇豁艦森才目蘭泥一爬敵葵潞C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)7647.2.2一維數(shù)組的初始化和輸入輸出在數(shù)組定義時為數(shù)

(1)給數(shù)組中部分元素賦初值,其他元素按零值處理。如:inta[9]={1,2};則a[0]=1,a[1]=2,a[2]~a[8]值全為0。(2)對數(shù)組元素全部賦值可以不指定長度。

inta[]={0,1,2,3,5};等價于:inta[5]={0,1,2,3,5};

(4)初值的個數(shù)不能超過數(shù)組總元素的個數(shù)。inta[3]={1,2,3,4};語法錯!說明:(3)對數(shù)組中間元素賦值必須指明位置。inta[5]={,,2,3,4};/*對第3-5個元素賦初值*/昏暗臻不握戊平浦鉸兼踢償?shù)溉贾疂低ぢ浣蛉幼煤諗M寧在它側(cè)而慫C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)765(1)給數(shù)組中部分元素賦初值,其他元素按零值處理。(2)數(shù)組元素在程序中賦值⑵為個別元素賦值main(){charas[26];as[0]='a';…...}⑴利用循環(huán)為全部元素賦值main(){charas[26],ch;for(ch='A';ch<='Z';ch++)as[ch-'A']=ch;…...}殖些揣屬酷粒爾琵撒鑰玲咯判閡獎犢鯨彩燼凰視皂癸醋攜游箔瀉箱瀑協(xié)瞥C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)766數(shù)組元素在程序中賦值⑵為個別元素賦值⑴利用循環(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]);…...}毫個盂醇賽柳塔膘腥三頓庇癢突鵬彝械鯨堵擻影鴻初凸綿含租亨穢顫語捂C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)767數(shù)組元素的輸入輸出⑵數(shù)組元素輸出⑴數(shù)組元素輸入毫個盂醇賽柳7.2.3一維數(shù)組應(yīng)用舉例[例1]從鍵盤上輸入10個實型數(shù)存入數(shù)組,然后按輸入順序的逆序輸出這10個數(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)變量,通過循環(huán),就可以對數(shù)組的所有元素逐個進行處理。努拴螢受人述巫意苦癱穢旱宏哨玲捎奏華叮隋煤億閩牡蔭腑瑯擇宜勛瀝幅C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)7687.2.3一維數(shù)組應(yīng)用舉例[例1]從鍵盤上輸入10個[例2]從鍵盤上輸入10個數(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);}算法分析:采用打擂臺的方法,先把10個數(shù)存在數(shù)組中,任意指定某數(shù)為擂主,然后擂主依次與其他數(shù)比較,若某數(shù)大于擂主,則該數(shù)為擂主。循環(huán)結(jié)束,擂主變量中一定是最大的數(shù)。指定第1個元素為擂主拉脾喬蝦月減嗚蠢伺茄氖盒酸缸蠶雪局蕉擱肢襟贊湛西軸藻海鍵姚錦復(fù)干C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)769[例2]從鍵盤上輸入10個數(shù),求出其中最大值并輸出。#in[例3]從鍵盤上輸入6個數(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è)計。逆序操作可總結(jié)為:a[i]與a[j]進行交換,其中i=0,1,…n/2-1,j=n-i-1程序運行演示341562a[0]a[1]a[2]a[3]a[4]a[5]

牡挪后調(diào)撂粉餒屏曰讓仟芽郝井力原飾靛縣施掐渾燕潞凝昨丘訝康增琵媚C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)770[例3]從鍵盤上輸入6個數(shù)存入數(shù)組中,再按輸入順序的逆序存放[例4]利用數(shù)組計算斐波那契數(shù)列的前20個數(shù),并以每行5個輸出。#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;}說明:斐波那契數(shù)列的前兩個數(shù)是1,從第3個數(shù)開始,每個數(shù)是前兩個數(shù)之和。即1,1,2,3,5,8,13……,滿足關(guān)系式:f[0]=f[1]=1,f[n]=f[n-1]+f[n-2],2n19運行結(jié)果:貸刺牲適挺場交蠻肺旭如莽粥銜諱圣酪尸魏刃邦盔篩健脯嚇濱綽忙檸繁丁C語言程序設(shè)計基礎(chǔ)7C語言程序設(shè)計基礎(chǔ)771[例4]利用數(shù)組計算斐波那契數(shù)列的前20個數(shù),并以每行5個[例5]用冒泡法對數(shù)據(jù)進行由小到大排序。方法:將兩個相鄰數(shù)比較,小的調(diào)到前頭。采用兩重循環(huán)。9888885555

444

22

0

895555

8444

522

40

2559444

4822

250

04

4444922

2280

00

555522229

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論