版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(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ù)組元素個數(shù)。 如:a3 表示a數(shù)組有個數(shù)組元素,即 :a0、a1、a2 ,下標(biāo)從0開始,且數(shù)組元素不能有a3。 (4) Size為常量(包括符號
2、常量),不能為變量,語言中不允許對數(shù)組的大小作動態(tài)定義。如下是錯誤的。 int n; scanf(“%d” , ,下標(biāo)可以為常量或變量,(1)把數(shù)組清0 for(i=0;i5;ii+) ai=0; (2)給數(shù)組輸入值(數(shù)組元素只能逐個賦值) for(i=0;i5;i+) scanf(“%d”,6.1.3 一維數(shù)組的初始化 語言中允許對數(shù)組進(jìn)行初始化,一維數(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)會自動賦以0值。,若對全部數(shù)組元素賦值時,可以不指定數(shù)組長度。 如:static float array13= 1.2, 1.4, 2.5 等價于 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個數(shù)排序(由小到大)。 方法:將兩個相臨數(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 個數(shù)要比較5趟 第一趟中要進(jìn)行兩兩比較5次 第二趟中比較 4次 若有n個數(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個數(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 將一個二維數(shù)組行和列元素互換,存到另一個二維 數(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 輸出一個字符串。 程序: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 輸出一個鉆石圖形。 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”; 注意:每個字符串都有一串結(jié)束標(biāo)志,用0表示;因此 a 表示 ? 個字符, “a” 表示有 ? 個
13、字符的字符串,a和0,如:“Hello”有 ?個字符,“Welcome”有?個字符。 (因?yàn)槊總€串后都自動加上結(jié)束符“0”。) 6.3.5 字符數(shù)組(字符串)的輸入輸出 在學(xué)習(xí)printf函數(shù)和scanf函數(shù)時,已學(xué)過兩種方法: c 表示一次 IO 一個字符, s 表示一次 IO 一個字符串。 注意: 輸出字符不包括0;,用S格輸出時,輸出項(xiàng)為數(shù)組名不能數(shù)組元素。 如: printf(“%s”, c); c是一個數(shù)組的名字。 數(shù)組長度大于字符串長度,遇到“0”結(jié)束; 如: char c5=“red”; 輸出:red (后邊兩個“0”不輸出) 數(shù)組的輸入時,不要再加地址符“ 的輸出為: book
14、,(2) gets(字符數(shù)組) 輸入一個字符串到字符數(shù)組,該字符 數(shù)組的起始地址為該函數(shù)值。 (3)strcat(字符數(shù)組1,字符數(shù)組2) 連接兩個字符串,把字符數(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) 兩個串的比較;
16、,6.3.7 字符數(shù)組應(yīng)用舉例 例1 輸入一行字符,統(tǒng)計其中有多少個單詞,單詞之間用空格分隔開。 解題思路:用word作為是否為單詞的標(biāo)志, 若word=0,表示未出現(xiàn)單詞,否則就置為1;,輸入一個字符給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ù)組這一章要注意的幾個問題: 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年溫州市公安局洞頭區(qū)分局第五期公開招聘編外用工備考題庫含答案詳解
- 2026年山西省財政稅務(wù)??茖W(xué)校單招職業(yè)技能考試模擬試題帶答案解析
- 2026年德陽市公安局旌陽區(qū)分局關(guān)于公開招聘警務(wù)輔助人員的備考題庫及答案詳解1套
- 2026年中國科學(xué)院半導(dǎo)體研究所科技管理與成果處科研業(yè)務(wù)主管招聘備考題庫有答案詳解
- 2026年合肥市規(guī)劃設(shè)計研究院公開招聘工作人員備考題庫帶答案詳解
- 2026年山東眾匯商業(yè)運(yùn)營有限公司蓼河古街曲阜宴項(xiàng)目(孔府宴秀)招聘備考題庫含答案詳解
- 2026年廣州市炭步鎮(zhèn)人民政府公開招聘專職消防員備考題庫及1套完整答案詳解
- 2026年·包頭稀土高新區(qū)教育系統(tǒng)校園招聘25人備考題庫(三)(北京師范大學(xué)招聘站)及完整答案詳解一套
- 2026年成都空港實(shí)驗(yàn)學(xué)校招聘備考題庫完整答案詳解
- 2026年常熟中遠(yuǎn)海運(yùn)物流有限公司招聘備考題庫及答案詳解1套
- 2021-2022學(xué)年天津市濱海新區(qū)九年級上學(xué)期物理期末試題及答案
- 江蘇省蘇州市、南京市九校2025-2026學(xué)年高三上學(xué)期一輪復(fù)習(xí)學(xué)情聯(lián)合調(diào)研數(shù)學(xué)試題(解析版)
- 2026年中國醫(yī)學(xué)科學(xué)院醫(yī)學(xué)實(shí)驗(yàn)動物研究所第三批公開招聘工作人員備考題庫及答案詳解一套
- 2025年幼兒園教師業(yè)務(wù)考試試題及答案
- 國家開放大學(xué)《Python語言基礎(chǔ)》形考任務(wù)4答案
- (自2026年1月1日起施行)《增值稅法實(shí)施條例》重點(diǎn)解讀
- 2026春小學(xué)科學(xué)教科版(2024)三年級下冊《4.幼蠶在生長》教學(xué)設(shè)計
- 管道安裝協(xié)議2025年
- 2026年內(nèi)蒙古商貿(mào)職業(yè)學(xué)院單招綜合素質(zhì)考試題庫附答案詳解
- 2025寧夏賀蘭工業(yè)園區(qū)管委會招聘40人筆試參考題庫及答案解析
- 2026年青島航空科技職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試題庫含答案詳解
評論
0/150
提交評論