




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、掌握一維數(shù)組和多維數(shù)組的定義、 初始化和引用 掌握字符串與字符數(shù)組,第六章 數(shù) 組,6.1.1 一維數(shù)組的定義 格式: 類型說明符 數(shù)組名Size ; 如: float class130; 說明:(1)數(shù)組名同變量名命名規(guī)則相同。 (2)數(shù)組名后是用方括號而不是圓括號。,前面我們用到的是語言中的基本類型(整型、符型、實(shí)型)的數(shù)據(jù),語言使用了構(gòu)造類型(數(shù)組、結(jié)構(gòu)體、共同體類型),本章首先介紹數(shù)組部分。,6.1 一維數(shù)組的定義和引用,(3) Size表示數(shù)組元素個(gè)數(shù)。 如:a3 表示a數(shù)組有個(gè)數(shù)組元素,即 :a0、a1、a2 ,下標(biāo)從0開始,且數(shù)組元素不能有a3。 (4) Size為常量(包括符號
2、常量),不能為變量,語言中不允許對數(shù)組的大小作動(dòng)態(tài)定義。如下是錯(cuò)誤的。 int n; scanf(“%d” , ,下標(biāo)可以為常量或變量,(1)把數(shù)組清0 for(i=0;i5;ii+) ai=0; (2)給數(shù)組輸入值(數(shù)組元素只能逐個(gè)賦值) for(i=0;i5;i+) scanf(“%d”,6.1.3 一維數(shù)組的初始化 語言中允許對數(shù)組進(jìn)行初始化,一維數(shù)組的初始化是在定義數(shù)組時(shí),用 內(nèi)的初始條件來表示初始化,和初始值之間用逗號隔開。 實(shí)現(xiàn)的方法: 對數(shù)組置初值。 如: Static int a5=3,5,6,4,8; 注意:C語言中只能對static(靜態(tài)變量)、extern(外部變量)進(jìn)行
3、初始化。但是在Turbo C中可以直接對數(shù)組賦初值,例 int a10=1,2; 只給數(shù)組中一部分元素初值。如:static int a9=1,2; 則a0= 1, a1= 2, a2a8值全為0。 若組數(shù)組元素全部清。 如:static int a5; 或 static int a5= 0, 0, 0, 0, 0 ; 注意:定義成static數(shù)組,系統(tǒng)會自動(dòng)賦以0值。,若對全部數(shù)組元素賦值時(shí),可以不指定數(shù)組長度。 如:static float array13= 1.2, 1.4, 2.5 等價(jià)于 static float array1 = 1.2, 1.4, 2.5 ,6.1.4 一維數(shù)組的
4、程序舉例 例 用數(shù)組來處理求Fibonacci數(shù)列問題。 程序?yàn)椋簃ain( ) int i; static int f20= 1, 1 ; for( i=2; i20 ;i+) fi= fi-2+fi-1; for( i=0; i20; i+) if( i%5= = 0) printf(“n”); printf(“%12d” , fi ); ,運(yùn)行結(jié)果如下: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765,例2 用冒泡法對10個(gè)數(shù)排序(由小到大)。 方法:將兩個(gè)相臨數(shù)比較,將小的調(diào)到前頭。 9 8 8 8
5、8 8 8 9 5 5 5 5 5 5 9 4 4 4 4 4 4 9 2 2 2 2 2 2 9 0 0 0 0 0 0 9,由以上可推知:6 個(gè)數(shù)要比較5趟 第一趟中要進(jìn)行兩兩比較5次 第二趟中比較 4次 若有n個(gè)數(shù),則要進(jìn)行n-1趟比較 第j趟比較中要進(jìn)行n-j次兩兩比較。,main( ) int a11; int i, j, t ; printf(“input 10 numbers: n”); for( i=1; iai+1) t= ai; ai= ai+1;ai+1= t ; printf(“%the sorted numbers: n”); for( i= 1; i11; i+)
6、printf(“%d ”, ai); ,為什么用11,n個(gè)數(shù)比較n-1趟,第j趟比較n-j次,運(yùn)行:屏幕顯示:input 10 numbers: 鍵盤輸入:6,4,-8,3,0,7,9,-2,1 屏幕顯示:the sorted numbers: -8 -2 0 1 3 4 6 7 9,6.2 二維數(shù)組的定義,6.2.1 二維數(shù)組的定義 二維數(shù)組定義的一般形式為: 類型說明符 數(shù)組名常量表達(dá)式1常量表達(dá)式2 如: int stu32, ar24; float grade35; C語言中,二維數(shù)組中元素在內(nèi)存排列順序是: “按 行 存 放”。 如:a23在內(nèi)存排列為: a00, a01, a02,
7、 a10, a11, a12。 同理,C允許定義多維數(shù)組。如:三維數(shù)組b234,6.2.2 二維數(shù)組的引用 二維數(shù)組元素表示形式:數(shù)組名下標(biāo)1下標(biāo)2 數(shù)組元素可以出現(xiàn)在表達(dá)式中,也可被賦值。 如:c12= a23+3*b31; 打印數(shù)組b的內(nèi)容: for(i=0;i5;i+) for(j=0;j10;j+) printf(“%d”,bij); printf(“n”);,注意: 下標(biāo)使用 的范圍,6.2.3 二維數(shù)組的初始化 采用方法如下: 分行給二維數(shù)組賦初值。 如:int a23= 2,3,1,1,2,3; 或 int a23=2,3,1,1,2,3;,第1種 方法好些,可以對部分元素賦值。
8、 如:static int a33=1,0,1,0,0,1; 相當(dāng)矩陣: 或 static int a33=1, ,0,0,1; 相當(dāng)矩陣: 如果對全部元素賦初值,第一維元素可省,但第二維元素不可省。 如:a34=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;,6.2.4 二維數(shù)組程序舉例 例1 將一個(gè)二維數(shù)組行和列元素互換,存到另一個(gè)二維 數(shù)組中。,程序:#include main( ) static int a23=1,2,3,4,5,6; static int b32, i , j; printf(“array a: n
9、”); for( i=0; i=1; i+) for( j=0; j=2; j+),printf(“%5d”, aij); bji=aij; printf(“n”); for(i=0; i=2; i+) for( j=0; j=2; j+) printf(“%5d”, bij); printf(“n”); 本例中使用靜態(tài)定義符號 static 是標(biāo)準(zhǔn)C 的寫法,在TC中可以省略。,運(yùn)行結(jié)果如下: array a: 1 2 3 4 5 6 array b: 1 4 2 5 3 6,例2 求34矩陣中值最大元素的值,及其所在行和列號。,程序: main( ) int i, j, row=0, co
10、lum=0, max; static int a34=1,2,3,4,9,7,4,6,-1,2,0,8; max=a00; for( i=0; imax) max=aij; row=i; colum=j; printf(“%max=%d,row=%d,colum=%dn”,max, row,colum); ,運(yùn)行結(jié)果為: max=9,row=1, colum=1,6.3 字 符 數(shù) 組 4.3.1 字符數(shù)組的定義 char c5; 4.3.2 字符數(shù)組的初始化 static char c7=p,r,o,g,r,a,m; c0 c1 c2 c3 c4 c5 c6,p r o g r a m,g
11、r e e n 0,注意:大括號提供的初值不能超過字符數(shù)組的長度, 可以小于字符數(shù)組的長度,最后為空字串0。 如:static char c6=g,r,e,e,n; 內(nèi)存分配為: c0 c1 c2 c3 c4 c5,或char c20=“I am a boy”; 或 char c = “I am a boy”;,6.3.3 字符數(shù)組的引用 例1 輸出一個(gè)字符串。 程序:main( ) static char c10= I, ,a,m, ,a, ,b,o,y; int i; for( i=0; i10; i+) printf(“%c”, ci); printf(“n”); ,運(yùn)行結(jié)果: I am
12、 boy,例2 輸出一個(gè)鉆石圖形。 main( ) static char diamond 5= , , *, , *, , *, *, , , , *, , *, , *, , , *; int i, j; for( i=0; i5; i+) for( j=0; j5; j+) printf(“%c”, diamondij); , ,6.3.4 字符串和字符串結(jié)束標(biāo)志 字符串具是由雙引號引起來的串。 如:char c =“I am a boy”; 或 char c = “I am a boy”; 注意:每個(gè)字符串都有一串結(jié)束標(biāo)志,用0表示;因此 a 表示 ? 個(gè)字符, “a” 表示有 ? 個(gè)
13、字符的字符串,a和0,如:“Hello”有 ?個(gè)字符,“Welcome”有?個(gè)字符。 (因?yàn)槊總€(gè)串后都自動(dòng)加上結(jié)束符“0”。) 6.3.5 字符數(shù)組(字符串)的輸入輸出 在學(xué)習(xí)printf函數(shù)和scanf函數(shù)時(shí),已學(xué)過兩種方法: c 表示一次 IO 一個(gè)字符, s 表示一次 IO 一個(gè)字符串。 注意: 輸出字符不包括0;,用S格輸出時(shí),輸出項(xiàng)為數(shù)組名不能數(shù)組元素。 如: printf(“%s”, c); c是一個(gè)數(shù)組的名字。 數(shù)組長度大于字符串長度,遇到“0”結(jié)束; 如: char c5=“red”; 輸出:red (后邊兩個(gè)“0”不輸出) 數(shù)組的輸入時(shí),不要再加地址符“ 的輸出為: book
14、,(2) gets(字符數(shù)組) 輸入一個(gè)字符串到字符數(shù)組,該字符 數(shù)組的起始地址為該函數(shù)值。 (3)strcat(字符數(shù)組1,字符數(shù)組2) 連接兩個(gè)字符串,把字符數(shù)組2連到字符數(shù)組1上,該數(shù)值為字符數(shù)組1的地址。 如:static char str1 = “C language”; static char str2 = “program”; printf(“%s”, strcat( str1, str2); 輸出: C language program (4) strcpy(字符數(shù)組1,字符數(shù)組2) 將字符數(shù)組2拷貝到字符數(shù)組1中去。 如:static char str110, str2 =
15、“red flag”; strcpy(str1,str2); 不能用賦值形式 str1=str2,注意:不能用if(str1= = str2)形式進(jìn)行比較,可以用 if( strcmp(str1,str2) = = 0)形式。 (6) strlen(字符數(shù)組) 測試字符數(shù)組的長度(不包括“0”); 如:static char str10= “yellow”; printf(“%d”, strlen(str); 結(jié)果: (7) strlwr(字符串) 將大寫字符串變小寫字符串。 (8) strupr(字符串) 將小寫字符串變大寫字符串。,(5) strcmp(字符串1,字符串2) 兩個(gè)串的比較;
16、,6.3.7 字符數(shù)組應(yīng)用舉例 例1 輸入一行字符,統(tǒng)計(jì)其中有多少個(gè)單詞,單詞之間用空格分隔開。 解題思路:用word作為是否為單詞的標(biāo)志, 若word=0,表示未出現(xiàn)單詞,否則就置為1;,輸入一個(gè)字符給string,i = 0;num=0,當(dāng) c= stringi != 0,C=空格?,T,F,T,F,word= 0?,word=0,num= num+1 word= 1,i= i + 1,輸出: num,當(dāng)前字符為空格,使word=0,根據(jù)word=0否,判斷前一字符是否為空格,前一字符為空格,出現(xiàn)新單詞,num加1,#include “stdio.h” main( ) char string81; int i, num=0, word=0; char c; gets(string); for( i=0; (c=stringi!= 0; i+) if( c= = ) word= 0; else if(word= =0) num+ ; word= 1; printf(“There are %d words in the linen”, num); ,結(jié)果: There are 4 words in the line,運(yùn)行: 輸入 I am a boy.,學(xué)習(xí)數(shù)組這一章要注意的幾個(gè)問題: 1. 在C語言中數(shù)組的下標(biāo)是從0開始; 2. C語言
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 證券資產(chǎn)投資管理辦法
- 福田外賣區(qū)域管理辦法
- 外地項(xiàng)目安全管理辦法
- 科技培訓(xùn)機(jī)構(gòu)管理辦法
- 育兒護(hù)理培訓(xùn)課件
- 肩頸護(hù)理課件教學(xué)
- 肝硬化護(hù)理課件
- 肝癌的護(hù)理課件
- 如何有效培訓(xùn)課件
- 高考一檢數(shù)學(xué)試卷
- 安徽省2024年普通高校招生國家專項(xiàng)計(jì)劃首輪投檔最低分及名次(物理科目組合)-3
- 2025年傳染病防控技能競賽筆試?yán)碚摽荚囶}庫600題(附答案)
- 人教PEP版英語五年級下冊Recycle 2單元教學(xué)設(shè)計(jì)(2課時(shí)教案)
- 【泉州:寒街孤影尋暖意 一抹亮色映霜花】中原地產(chǎn)2024年泉州樓市分析報(bào)告正式版
- SJG 124-2022 建筑廢棄物綜合利用設(shè)施建設(shè)運(yùn)營標(biāo)準(zhǔn)
- 國家開放大學(xué)法律事務(wù)??啤缎谭▽W(xué)(1)》期末紙質(zhì)考試總題庫2025春期版
- 中職高教版(2023)語文職業(yè)模塊-第三單元3.3《鑒賞家》【課件】
- 《電氣質(zhì)量工藝培訓(xùn)》課件
- 2023工業(yè)企業(yè)常見安全隱患整改對應(yīng)依據(jù)標(biāo)準(zhǔn)
- 醫(yī)院信息化網(wǎng)絡(luò)安全培訓(xùn)
- 發(fā)電廠安全隱患排查
評論
0/150
提交評論