![清華-譚浩強(qiáng)-C語言程序設(shè)計視頻教程-第7章_第1頁](http://file4.renrendoc.com/view/503d98a0c1413651d2fe7d4c4627f99e/503d98a0c1413651d2fe7d4c4627f99e1.gif)
![清華-譚浩強(qiáng)-C語言程序設(shè)計視頻教程-第7章_第2頁](http://file4.renrendoc.com/view/503d98a0c1413651d2fe7d4c4627f99e/503d98a0c1413651d2fe7d4c4627f99e2.gif)
![清華-譚浩強(qiáng)-C語言程序設(shè)計視頻教程-第7章_第3頁](http://file4.renrendoc.com/view/503d98a0c1413651d2fe7d4c4627f99e/503d98a0c1413651d2fe7d4c4627f99e3.gif)
![清華-譚浩強(qiáng)-C語言程序設(shè)計視頻教程-第7章_第4頁](http://file4.renrendoc.com/view/503d98a0c1413651d2fe7d4c4627f99e/503d98a0c1413651d2fe7d4c4627f99e4.gif)
![清華-譚浩強(qiáng)-C語言程序設(shè)計視頻教程-第7章_第5頁](http://file4.renrendoc.com/view/503d98a0c1413651d2fe7d4c4627f99e/503d98a0c1413651d2fe7d4c4627f99e5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
清華-譚浩強(qiáng)-C語言程序設(shè)計視頻教程-第7章第7章數(shù)組 前幾章使用的都是屬于基本類型(整型、字符型、實型)的數(shù)據(jù),C語言還提供了構(gòu)造類型的數(shù)據(jù),它們有數(shù)組類型、結(jié)構(gòu)體類型和共用體類型。構(gòu)造類型數(shù)據(jù)是由基本類型數(shù)據(jù)按一定規(guī)則組成的,因此它們又被稱為“導(dǎo)出類型”。
數(shù)組是有序數(shù)據(jù)的集合。數(shù)組中的每一個元素都屬于同一個數(shù)據(jù)類型。用一個統(tǒng)一的數(shù)組名和下標(biāo)來惟一地確定數(shù)組中的元素。7.1一維數(shù)組的定義和引用
7.1.1一維數(shù)組的定義一維數(shù)組的定義方式為 類型說明符數(shù)組名[常量表達(dá)式]; 例如:inta[10];說明:(1)數(shù)組名的命名規(guī)則和變量名相同,遵循標(biāo)識符命名規(guī)則。(2)在定義數(shù)組時,需要指定數(shù)組中元素的個數(shù),方括號中的常量表達(dá)式用來表示元素的個數(shù),即數(shù)組長度。(3)常量表達(dá)式中可以包括常量和符號常量,不能包含變量。C語言不允許對數(shù)組的大小作動態(tài)定義,即數(shù)組的大小不依賴于程序運行過程中變量的值。7.1.2一維數(shù)組元素的引用 數(shù)組必須先定義,然后使用。C語言規(guī)定只能逐個引用數(shù)組元素而不能一次引用整個數(shù)組。 數(shù)組元素的表示形式為
數(shù)組名[下標(biāo)] 下標(biāo)可以是整型常量或整型表達(dá)式。[例7.1]數(shù)組元素的引用#include<stdio.h>voidmain(){ inti,a[10]; for(i=0;i<=9;i++) a[i]=i; for(i=9;i>=0;i--) printf(“%d”,a[i]); printf(“\n”);}7.1.3一維數(shù)組的初始化對數(shù)組元素的初始化可以用以下方式實現(xiàn)(1)在定義數(shù)組時對數(shù)組元素賦予初值。(2)可以只給一部分元素賦值。(3)如果想使一個數(shù)組中全部元素值為0,可以寫成: inta[2]={0,0}或inta[2]={0};。(4)在對全部數(shù)組元素賦初值時,由于數(shù)據(jù)的個數(shù)已經(jīng)確定,因此可以不指定數(shù)組長度。7.1.4一維數(shù)組程序舉例[例7.2]用數(shù)組來處理求Fibonacci數(shù)列問題 #include<stdio.h> voidmain() { inti; intf[20]={1,1}; for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<20;i++) { if(i%5==0)printf(“\n”); printf(“%12d”,f[i]); } }[例7.3]用起泡法對10個數(shù)排序(由小到大)起泡法的思路:將相鄰兩個數(shù)比較,將小的調(diào)到前頭7.2二維數(shù)組的定義和引用
7.2.1二維數(shù)組的定義 二維數(shù)組定義的形式為 類型說明符數(shù)組名[常量表達(dá)式][常量表達(dá)式];
例如:floata[3][4],b[5][10]; 二維數(shù)組可被看作是一種特殊的一維數(shù)組:它的元素又是一個一維數(shù)組。 二維數(shù)組中元素排列的順序是按行存放的。即在內(nèi)存中先順序存放第一行的元素,再存放第二行的元素。 C語言允許使用多維數(shù)組。7.2.2二維數(shù)組的引用 二維數(shù)組元素的表示形式為 數(shù)組名[下標(biāo)][下標(biāo)] 例如a[2][3]。下標(biāo)可以是整型表達(dá)式,如a[2-1][2*2-1]。 數(shù)組元素可以出現(xiàn)在表達(dá)式中,也可以被賦值。例如: b[1][2]=a[2][3]/2 下標(biāo)值應(yīng)在已定義的數(shù)組大小的范圍內(nèi)。常出現(xiàn)的錯誤是: inta[3][4]; …… a[3][4]=3;7.2.3二維數(shù)組的初始化 可以用下面的方法對二維數(shù)組初始化 (1)分行給二維數(shù)組賦初值。 (2)可以將所有數(shù)據(jù)寫在一個花括號內(nèi),按數(shù)組排列的順序?qū)Ω髟刭x初值。 (3)可以對部分元素賦初值。 (4)如果對全部元素都賦初值(即提供全部初始數(shù)據(jù)),則定義數(shù)組時對第一維的長度可以不指定,但第二維的長度不能省。7.2.4二維數(shù)組程序舉例[例7.4]將一個二維數(shù)組行和列的元素互換,存到另一個二維數(shù)組中。例如:[例7.5]有一個3×4的矩陣,要求編程求出其中值最大的那個元素的值,以及其所在的行號和列號7.3字符數(shù)組 用來存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組。字符數(shù)組中的一個元素存放一個字符。7.3.1字符數(shù)組的定義 字符數(shù)組定義的一般形式為
char數(shù)組名[常量表達(dá)式][常量表達(dá)式]…… 由于字符型與整型是相互通用的,因此也可以定義一個整型數(shù)組,用它存放字符數(shù)據(jù)。 intc[10]; c[0]=‘a(chǎn)’;7.3.2字符數(shù)組的初始化 對字符數(shù)組初始化,最容易理解的方式是逐個字符賦給數(shù)組中各元素。 如果在定義字符數(shù)組時不進(jìn)行初始化,則數(shù)組中各元素的值是不可預(yù)料的。 如果花括號中提供的初值個數(shù)大于數(shù)組長度,則按語法錯誤處理。 如果初值個數(shù)小于數(shù)組長度,則只將這些字符賦給數(shù)組中前面那些元素,其余的元素自動定為空字符(即’\0’)。 如果提供的初值個數(shù)與預(yù)定的數(shù)組長度相同,在定義時可以省略數(shù)組長度,系統(tǒng)會自動根據(jù)初值個數(shù)確定數(shù)組長度。7.3.3字符數(shù)組的引用可以引用字符數(shù)組中的一個元素,得到一個字符。[例7.6]輸出一個字符串 #include<stdio.h> voidmain() { charc[10]={‘I’,‘a(chǎn)’,‘m’,‘‘,‘a(chǎn)’,‘‘,‘b’,‘o’,‘y’}; inti; for(i=0;i<10;i++) printf(“%c”,c[i]); printf(“\n”); }[例7.7]輸出一個菱形圖#include<stdio.h>voidmain(){ chardiamond[][5]={{‘‘,’‘,’*’},{‘‘,’*’,’‘,’*’},{‘*’,’‘,’‘,’‘,’*’},{‘‘,’*’,’‘,’*’},{‘‘,’‘,’*’}}; inti,j; for(i=0;i<5;i++) { for(j=0;j<5;j++) printf(“%c”,diamond[i][j]); printf(“\n”); }}7.3.4字符串和字符串結(jié)束標(biāo)志 在C語言中,是將字符串作為字符數(shù)組來處理的。字符串中的字符是逐個存放到數(shù)組元素中的。在實際工作中,人們關(guān)心的往往是字符串的有效長度而不是字符數(shù)組的長度。為了測定字符串的實際長度,C語言規(guī)定了一個“字符串結(jié)束標(biāo)志”,以字符’\0’作為標(biāo)志。 系統(tǒng)對字符串常量也自動加一個’\0’作為結(jié)束符。字符串作為一維數(shù)組存放在內(nèi)存中。 對C語言處理字符串的方法有以上的了解后,再對字符數(shù)組初始化的方法補充一種方法,即用字符串常量來使字符數(shù)組初始化。7.3.5字符數(shù)組的輸入輸出 字符數(shù)組的輸入輸出可以有兩種方法: (1)逐個字符輸入輸出。用格式符“%c”輸入或輸出一個字符。 (2)將整個字符串一次輸入或輸出。用“%s”格式符,意思是對字符串的輸入輸出。注意: (1)輸出字符不包括結(jié)束符’\0’。 (2)用“%s”格式符輸出字符串時,printf函數(shù)中的輸出項是字符數(shù)組名,而不是數(shù)組元素名。 (3)如果數(shù)組長度大于字符串的實際長度,也只輸出到遇’\0’結(jié)束。 (4)如果一個字符數(shù)組中包含一個以上’\0’,則遇第一個’\0’時輸出就結(jié)束。 (5)可以用scanf函數(shù)輸入一個字符串。 (6)按字符數(shù)組名找到其數(shù)組起始地址,然后逐個輸出其中的字符,直到遇’\0’為止。7.3.6字符串處理函數(shù) 在C函數(shù)庫中提供了一些用來處理字符串的函數(shù),使用方便。幾乎所有版本的C語言編輯系統(tǒng)都提供這些函數(shù)。1、puts函數(shù)函數(shù)原型: intputs(char*str);功能: 把str指向的字符串輸出到標(biāo)準(zhǔn)輸出設(shè)備,將’\0’轉(zhuǎn)換為換行符’\n’返回值: 若執(zhí)行成功,返回非負(fù)值,否則,返回EOF2、gets函數(shù)函數(shù)原型: char*gets(char*str);功能: 從終端輸入一個字符串到字符數(shù)組str返回值: 若執(zhí)行成功,返回字符數(shù)組的起始地址,否則,返回NULL3、strcat函數(shù)函數(shù)原型: char*strcat(char*str1,char*str2);功能: 把字符串str2接到str1后面,str1最后面的’\0’被取消返回值:str14、strcpy函數(shù)原型: char*strcpy(char*str1,char*str2);功能: 把str2指向的字符串復(fù)制到str1中去返回值: str15、strcmp函數(shù)函數(shù)原型: intstrcmp(char*str1,char*str2);功能: 比較兩個字符串str1、str2返回值: str1<str2,返回負(fù)數(shù); str1=str2,返回0; str1>str2,返回正數(shù)6、strlen函數(shù)函數(shù)原型: unsignedintstrlen(char*str);功能: 統(tǒng)計字符串str中字符的個數(shù)(不包括終止符’\0’)返回值: 返回字符個數(shù)7、strlwr函數(shù)函數(shù)原型: char*strlwr(char*str);功能: 將字符串str中大寫字符換成小寫字母返回值: str8、strupr函數(shù)函數(shù)原型: char*strupr(char*str);功能: 將字符串str中小寫字符換成大寫字母返回值: str7.3.7字符數(shù)組應(yīng)用舉例
[例7.8]輸入一行字符,統(tǒng)計其中有多少個單詞,單詞之間用空格分隔開[例7.9]有3個字符串,要求找出其中最大者#include<stdio.h>#include<string.h>voidmain(){ charstring[20]; charstr[3][20]; inti; for(i=0;i<3;i++) gets(str[i]); if(strcmp(str[0],str[1])>0) strcpy(string,str[0]); else strcpy(string,str[1]); if(strcmp(str[2],string)>0) strcpy(string,str[2]); printf(“\nthelargeststringis:\n%s\n”,string);}習(xí)題 7.3求一個3×3的整型矩陣對角線元素之和。 7.4已有一個已排好序的數(shù)組,要求輸入一個數(shù)后,按原來排序的規(guī)律將它插入數(shù)組中。 7.5將一個數(shù)組中的值按逆序重新存放。例如,原來順序為8,6,5,4,1。要求改為1,4,5,6,8。 7.6輸出以下的楊輝三角形(要求輸出10行) 1 11 121 1331 14641 15101051 …………….... 7.11輸出以下圖案: *****
***************
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年可調(diào)控輥型四輥液壓軋機(jī)合作協(xié)議書
- 2022-2023學(xué)年廣西玉林市容縣四年級(上)期末數(shù)學(xué)試卷
- 新譯林六年級英語上冊教案(全冊)
- 2025年臨時工協(xié)議常用版(2篇)
- 2025年二手?jǐn)?shù)控機(jī)床買賣合同(2篇)
- 2025年五年級下冊語文教學(xué)工作總結(jié)樣本(3篇)
- 2025年人事代理員工勞動合同常用版(4篇)
- 2025年倉儲運輸合同標(biāo)準(zhǔn)版本(4篇)
- 2025年互聯(lián)網(wǎng)技術(shù)服務(wù)合同樣本(三篇)
- 專題01 集合、邏輯用語與復(fù)數(shù)(解析版)
- 2024年公務(wù)員考試題庫附答案【完整版】
- 關(guān)于闖紅燈的調(diào)查報告
- T-GDWCA 0019-2018 輻照工藝操作規(guī)范
- 決策與博弈論課件
- 為什么偉大不能被計劃
- 精神障礙患者的社交技巧訓(xùn)練
- 司機(jī)考核管理制度
- 重慶八中2024屆高三12月高考適應(yīng)性月考卷(四) 語文試卷(含答案)
- 出差報銷單-中英對照版
- 電流互感器試驗報告
- 蔣中一動態(tài)最優(yōu)化基礎(chǔ)
評論
0/150
提交評論