大學C語言程序設計基礎第6章_第1頁
大學C語言程序設計基礎第6章_第2頁
大學C語言程序設計基礎第6章_第3頁
大學C語言程序設計基礎第6章_第4頁
大學C語言程序設計基礎第6章_第5頁
已閱讀5頁,還剩61頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 第6章 數 組1.概述雙精度型(double)結構體類型(struct)共用體類型(union)數 據 類 型整型(int)實型單精度型(float)字符類型(char)數組類型枚舉類型(enum)基本類型構造類型指針類型 空類型2.基本數據類型:如整型、實型、字符型。 這些數據又表現為常量、變量。基本數據類型中的數據之間沒有任何關聯,也沒有任何順序。一堆無序的且沒有任何關聯的數據是很難處理的。所以,需要把數據變量有序地關聯起來。形成構造類型。構造類型:由基本數據型按照一定的規則構成一些復雜的數據類型. 如數組、結構體、共同體等。數組定義: 有序數據(變量)的集合。 數組中的每一個元素都屬于

2、同一數據類型; 數組元素用一個統一的數組名和下標來唯一的確定。算法依賴于數據結構,選擇合適的數據結構,可以簡化算法。 程序=算法+數據結構。3. 6 .1 一維數組的定義和引用1、一維數組的定義: 類型說明符 數組名常量表達式;例如: int a10;表示定義了一個含有10個整型元素、名稱為a的一維數組。說明:類型說明符用來說明數組中各個數據元素的類型。在 任何一個數組中,數據元素的類型都是一致的。(2) 數組名的命名規則與變量名相同,遵循標識符命名規 則(以字母或下劃線開頭,由字母、數字、下劃線組 成)。 注意:數組名不僅是一個標識符號,它還是一個地址常量。是數組第一個元素的存儲地址。4.

3、int a10;(3) 常量表達式用方括號 括起,不能用圓括 號,如 b(10) 是錯誤的。(4) 常量表達式表示數組中元素的個數,即數組 的長度。例如,在a10中,10 表示數組中 有10個元素。這10個元素分別是: a0,a1,a2,a3,a4,a5,a6, a7,a8,a9。 注意:下標從0開始,沒有a10。5.(5) 常量表達式中必須是由常量或符號常量組成的表達式,不能包含變量。例如, (6) 由于數組元素占有連續的內存單元,因此一維數組中的各個元素按照下標規定的順序存放在內存中。例如,我們定義了一個整型的一維數組 int a5;那么這個 數組中的每個元素都將占用二個字節。 假定內存地

4、址1000開始存放數組 a: 各元素起始地址: 1000 1002 1004 1006 1008 各數組元素 : a0 a1 a2 a3 a4(7) 定義數組只是為數組預留適當的內存空間,并未給數組元素賦值。int n=10;char namen; # define M 10char textM*2+16.7定義的作用:系統為數組開辟相應的內存空間數組a在內存中是如何存放的呢?aa 0a 1a 2a 3a 4a 5a 6a 7a 8a 9例:int a10 ; 各元素在內存中連續存放 數組名代表首地址7.2.一維數組元素的引用 引用 就是讀出數組中某一元素的值或將數椐賦給某一數組元素。 定義了

5、一個數組以后,怎么引用數組中的元素呢?C語言規定只能一個一個地引用數組元素而不能整體引 用數組名。引用的一般形式: 數組名下標使用說明: 先定義數組,再引用數組元素。 用指定的下標來引用數組中的元素。 下標可以是表達式。例如: x3=b11+b10; i=2; a=xi+2;8. 一個數組含有 n 個元素,那么下標的取值范圍為 0,n-1。引用數組元素時,注意下標值不要超出數組范圍。例如:通過循環控制數組元素下標的變化,達到輸入10個數 的目的。Int a10; for(i=0;i=10;i+) scanf(%d,&ai);應該在數組定義范圍內操作:#include void main()in

6、t i,a10; for(i=0;i=9;i+) ai=i; for(i=0;i=9;i+) printf(“%3d”,ai);下標超界9.例: 從鍵盤輸入10個字符,再反序輸出。程序如下:#include stdio.h void main()char ch10; /*定義字符數組C,它含有10個字符*/ int i; for(i=0;i=0;i-) /*反序輸出*/ printf(%c,chi); putchar(n); getch(); (演示)10.3. 一維數組的初始化 定義數組只是為數組元素分配了存儲空間。其值是不確定的。因此,在引用數組元素前,還必須給下標變量賦值。 還可以在定義

7、數組的同時給數組賦初值,這稱為:數組的初始化。形式如下: 類型說明符數組名長度數值表;使用說明:對數組的初始化操作只能在定義數組時進行,大括號中的內容即為 數組的初值,各項用逗號隔開。 例如,int X10=0,1,2,3,4,5,6,7,8,9;定義了一個含有10個整型元素的數組。X0=0、x1=1、x2=2(2) 可以只給部分數組元素賦初值。 例如,int a4=1,2; 定義了一個含有4個整型元素的數組。但只對前2個元素a0,a1賦初值,其余的元素系統將自動賦值為0。11.(3) 如果想將數組中的所有元素全部賦為0時,可以寫成: int a10=0,0,0,0,0,0,0,0,0,0;也

8、可以這樣寫:int a10=0; 雖然只給第0個元素賦初值,但系統會自動將剩余的數組元素賦值 0。 不能這樣寫:int a10=0*10;在C語言中不能給數組整體賦初值。(4) 對全部數組元素賦初值時,可以不指定數組的大小。 int a=1,2,3,4,5; 省略數組的大小后,系統能夠根據初值的個數自動定義決定數組的長度為 5。 因此這個數組定義語句相當于: int a5=1,2,3,4,5;12.例1: 鍵盤輸入10數,輸出其中最小的數。 用數組a10存放10個數,通過循環控制數組元素的下標讀入。第1個數a0作為比較的目標。從第二個數a1開始直到a9 ,每一個數與min進行比較。如果大于mi

9、n,則放棄此數并讀入下一個數,否則將此小數賦值給min。通過次比較后,min就是最小數。-打擂臺法#include void main() int i,a10,min; printf(input 10 number:); for(i=0;i=9;i+) scanf(%d,&ai); min=a0; for(i=1;iai) min=ai; printf(nmin= %d,min); (演示)13.14例2:求Fibonacci數列:1,1,2,3,5,8,的前20個數. 公式為: F1=1 (n=1) F2=1 (n=2) Fn=Fn-1+Fn-2 (n=3)#include void mai

10、n() int i,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(%10d,fi); printf(n); 算法簡單,占內存多#include main() int f1,f2,f3,i; f1=1;f2=1; printf(“%10d%10dn” ,f1,f2 ); for(i=1;i=18;i+) f3=f1+f2; printf(“%10d”,f3); if(i%2=0)printf(“n”); f1=f2; f2=f3; 14.15例3:用冒泡法對n個數排序。 (由小

11、到大)思想: 讓大數逐步“沉入”數組的底部,讓小數象氣泡似的“冒起”到數組的頂點。做法:將相鄰兩個數比較,將小的調到前頭。以五個數為例數組a1a2a3a4a5數組的初始狀態823165947第一輪比較結果318265829824782第二輪比較結果3165965476582第三輪比較結果931476582第四輪比較結果931476582826547931第1輪:共進行4小次兩兩比較,最大的數向后移到了a5(最后)第2輪:只對前4個數進行3次兩兩比較,挑出這4個數中最大的一個,放到a4(次后)第3輪:只對前3個數進行2次兩兩比較,挑出這3個數中最大的一個,放到a3第4輪:只對前2個數進行1次兩兩

12、比較,挑出這2個數中最大的一個,放到a215.16比較的輪數:n-1第i輪比較的次數:j=n-i# define N 5main( ) int aN+1, k, i, j, temp; printf(input %d number:n,N); for(k=1;k=N;k+) scanf(%d,&ak); for(i=1;i=N-1;i+) for(j=1;jaj+1) temp=aj; aj=aj+1; aj+1=temp; for(k=1;ka2 j=2: a2a3 j=3: a3a4 j=4: a4a5i=2: j=1: a1a2 j=2: a2a3 j=3: a3a4 i=3: j=1:

13、 a1a2 j=2: a2a3i=4: j=1: a1a2雙重循環執行過程16.6.2 二維數組的定義和引用 到目前為止,我們問題分析的還只是一維數組。如果需要描述類似矩陣這樣的數據,該如何實現呢?考慮一個3*4的矩陣M: 0 1 2 3 4 5 6 7 8 9 11 12Mi,j 指的是第i行第j列的元素,其中i 的范圍是1-3,j 的范圍 是1-4。例如,M3,2指的是第3行第2列的元素,其值為9。 在C語言中對類似矩陣這樣的數據可以用一個二維數組來表示。C語言允許使用多維數組,二維數組是最簡單的多維數組。17.一、 二維數組的定義二維數組的定義形式 類型說明符 數組名常量表達式 常量表達

14、式;其中: 類型說明符用來說明數組中各個數據元素的類型。 第1個常量表達式說明了這個數組有幾行。第2個常量表達式說明了每行有幾個元素,或說明了幾列。數組元素的個數是兩個常量表達式的乘積。例如: int a34; 表示定義一個二維數組a,它有3行4列,共12個元素,其中每個元素為整型。18.可以將二維數組 a 看成由 3 個一維數組組成,一維數組名分別是: a0、a1、a2; 每個一維數組中又含有4個元素,例如第一個一維數組a0的各個元素表示為: a00、a01、a02、a03。整個a數組可以描述成如下形式:這種對二維數組的描述方式對第10章學習用指針處理數組時將非常有用。 19.2) 二維數組

15、的存儲C語言規定,二維數組中的元素排列的順序是按行優先,即存儲時先存放第一行的數據,再存放第二行的數據,以此類推。例如,二維數組a34在內存中的存放順序為: a00a01a02a10a11a12a20a21a22。20.21a00a01a02a03a10a11a12a13a20a21a22a23a或a0 a1a2 二維數組a在內存中存放形式二維數組是按行存放的。 即:先存放第一行的元素; 再存放第二行的元素; .。21.二、 二維數組元素的引用 定義數組,引用元素。 引用格式為: 數組名下標下標 例如: int a22 共定義了4個元素,分別為: a00,a01,a10,a11二維數組的引用使

16、用兩個下標。另外要注意: int a45; 定義數組 b=a34; 引用元素,將元素a34賦值給變量 b。 ?能用 b=a45給變量賦值嗎? 22.三、二維數組的初始化二維數組初始化的方法有以下幾種方法: 將所有的數值順序列在一對大括號中: int a34=1,2,3,4,5,6,7,8,9,10,11,12; (太不直觀。) 分行給二維數組賦初值。將初始值按行排列,每行用大括號括起來, 各行之間用逗號分隔。例如: int a34=1,2,3,4,5,6,7,8,9,10,11,12; (比較直觀,) 可以只給每行的前面部分數組元素賦初值。 int a34=1,4,3,1,2; 這種賦值方式相

17、當于: int a34=1,0,0,0,4,3,0,0,1,2,0,0; (系統自動將沒有賦值的元素賦0。)23. 可以對各行的某一元素賦初值。 int a34=1,0,6,0,0,11; 這種賦值方式相當于: int a34=1,0,0,0,0,6,0,0,0,0,11,0; 可以只對部分行賦初值。 int a34=1,1;這種賦值方式相當于: int a34=1,0,0,0,0,0,0,0,1,0,0,0;24. 如果將數組的所有元素全部賦值的話,在定義數組時可以省略第一維的長度,但注意第二維的長度不能省略。如: int a 4=1,2,3,4,5,6,7,8,9,10,11,12; 一共

18、定義了12個數據,系統會根據總個數自動確定第一維的長度(數據總數除以第二維的長度)。 這種賦值方式相當于: int a34=1,2,3,4,5,6,7,8,9,10,11,12;也可以在對部分數組元素賦初值時省略第一維的長度。 int a 4=1,1;因為有3個逗號分隔的大括號,所以第一維的長度就是3。25.四、二維數組程序舉例例: 輸出一個矩陣的轉置矩陣。 數組a: 2 4 5 換成 數組b: 2 3 3 7 8 4 7 5 8#includevoid main()int a23=2,4,5,3,7,8; int b32,i,j;printf(array a:n);for(i=0;i=1;i

19、+) for(j=0;j=2;j+) printf(%5d,aij); bji=aij; printf(n); (演示)printf(array b:n);for(i=0;i=2;i+) for(j=0;jmax,把aij作為 新的臨時最大值,并記錄下其行下標 I 和列 j 。當全部元素比較完 后,max是整個矩陣全部元素的最大值。下面給出程序。#includevoid main()int i,j,row=0,colum=0,max; int a34=1,2,3,4,9,8,7,6,-10,10,-5,2; max=a00; for(i=0;i=2;i+) /* 用二重循環遍歷全部元素 */

20、for(j=0;jmax ) max=aij;row=i;colum=j; printf(max=%d, row=%d, colum=%dn,max,row,colum); 運行結果:max=10, row=2, colum=1 (演示)27.例:輸入6個學生、每人5門課的成績,統計每個學生的總成績。#includevoid main() int s65,sum6,i,j; printf(“please input 5 score :n”); for(i=0;i6;i+) printf(“%-4d:”,i+1); for(j=0;j5;j+) sacnf(“%d”,&sij; for(i=0;

21、i6;i+) sumi=0; for(j=0;j5;j+) sumi+=sij); for(j=0;j6;j+) printf(“student%-4d %-6.2f”, j+1,sumj); 如何統計每門課的平均成績?另定義一個 sum15for (j=0;j5;j+) sum1j=0; for(i=0;i6;i+) sum1j+=sij;for(i=0;i5;i+) printf(“subject:%-4d %-6.2f”,i+1 ,sumj);28.例打印出以下的楊輝三角形(要求打印出10行)。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1問題分析 這是一個

22、10*10的矩陣,該矩陣的特點是對角線上方的元素全 為0,是一個下三角矩陣。楊輝三角形各行系數有如下規律:(1)各行第一個數都是1。(ai1=1)(2)各行最后一個數都是1。(aii=1) (3) 從第3行起,其余各數是上一行同列和前一列兩個數 之和。 aij=ai-1j+ai-1j-1,(其中i為行數j為列數。)29.例#include #define N 11void main() int i,j,aNN; for(i=1;iN;i+) aii=1; ai1=1; for(i=3;iN;i+) for(j=2;j=i-1;j+) aij=ai-1j-1+ai-1j; (演示)for(i=1

23、;iN;i+) for(j=1;j=i;j+) printf(%5d,aij); printf(n); printf(n); 30. 6.3 字符串與字符數組在前面的學習中,我們學習了整型、實型、字符型變量,沒有見到字符串變量,C語言中字符串存放在何處呢?原來 C語言用一維字符型數組來存放字符串。 字符數組就是字符串變量,字符數組的每一個元素(下標變量)存放一個字符。一、字符串常量 所謂字符串常量就是用雙引號括起來的字符組合。例如, I am a boy “ 就是一個字符串。 字符串在內存中存放時,系統會在字符串結束處自動 加上字符串結束標志 0。(ASCII碼為0)。 系統通過字符串結束標志

24、0,判斷字符串是否結束,并得 到字符串的長度。31.二、字符數組的定義字符數組用來存放字符串,字符數組的說明形式如下:char 數組名常量表達式 常量表達式 ;例如: char a3; a0=Y;a1=O;a2=U;這里定義a為字符數組,包含3個元素。 我們知道,系統是用字符對應的ASCII碼來處理字符的,于是字符和0255間的整數是等價的。他們可以通用。但有區別: char c10; /* 在內存中占10字節 */ int c10; /* 在內存中占20字節 */32.三、字符數組的初始化(1) 逐個元素初始化。比如: char c10=I, ,a,m, ,h,a,p,p,y; 這里把10個

25、字符分別賦給c0到c910個元素。(2) 初始化數據少于數組長度,多余元素自動為“空”。 比如: char c12= I , ,a,m, ,h,a,p,p,y;在這個初始化語句中,共寫了10個字符(含空格),還有2個數組元素我們沒有給出初值,根據前面所講的,對沒有給出初值的數組元素,系統自動對它們賦值0(或0)。這樣上面這個數組初始化完畢后,如下所示:a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 I a m h a p p y 0 033.(3) 如果提供的初值個數與預定的數組長度相同,在定義時可以省略數組長度,系統會根據初值個數確定數組長度。 char c =

26、I , ,a,m, ,h,a,p,p,y,0; (4) 初始化字符數組時,也可以寫成如下形式: char a=I am happy;還可以寫成如下形式,這種形式 最符合我們的習慣: char c =I am happy; 等價于:char c=I, ,a,m, ,h,a,p,p,y,0;系統自動在字符串尾加上一個:0 此0不需要人為書寫。但是輸出時不顯示這個0. 程序是依據標志來0來確定字符串是否結束及其長度。 所以,數組 c 在內存中的長度是11,而不是10。應人工加上0此處可以不加034.在不確定字符數組長度情況下,逐個字符賦值要注意:例#include void main()int i,

27、j; char c=I am happy; char d=I, ,a,m, ,h,a,p,p,y; puts(c); puts(d); i=sizeof(c);j=sizeof(d); printf(%d %dn,i,j);運行結果: I am happy I am happy #$. 10 11 如何解決? (應加上尾標志0) 演示35.四、字符數組的輸入輸出 C語言提供了兩組實現字符串輸入輸出操作的函數。一組是格式輸入 scanf(), 格式輸出函數printf()一組是鍵盤輸入 gets (數組名), 屏幕輸出 puts (數組名)。1、 使用格式函數輸入輸出將字符數組逐個字符輸入輸出(

28、格式符“%c” )。將整個字符串的內容一次輸入輸出(格式符“%s”) 。 (1) 采用 格式符%c逐個字符輸入輸出, .void main()char c10=I, ,a,m, ,a, ,b,o,y; int i; for(i=0;i10;i+) printf(%c,ci); printf(n); getch(); 運行結果: I am a boy 36.(2) 采用格式符%s將整個字符串一次輸入輸出, .#include stdio.h void main()char c10 ; scanf(%s,c); printf(%sn,c); 輸入:china 輸出:china其中, scanf(“

29、%s”, c); 表示將鍵盤輸入的內容按字符串的方式送到數組 c 中。這里注意在數組名 c 前不要加引用符號&,因為 數組名就是數組的首地址。37.對于printf( )輸出字符串應注意: 不輸出字符串結束符號0 輸出項只能是數組名,不能是具體的數組元素。 printf(“% s”,c2);是錯誤的。 數組定義長度大于實際長度時,輸出到0符為止。如: char c10=”china”; printf(“%s”,c); 只輸出 china38. 對于用scanf() 輸入字符串應注意: 輸入的數組名此前應定義。 數組名前不要加取地址符號 & ,數組名就是數組的地址。 鍵入的串長度應小于定義的長度

30、。 利用一個scanf( )函數輸入多個串時,各個串之間用 空格 分隔。 如:char c15,c25,c35; scanf(“%s%s%s”,c1,c2,c3); 可輸入數據: How are you?當遇到分隔符時就認為字符串輸入完畢, 同時將分隔符前 面的字符以及字符串結束字符0一并存入數組中。如: char c15 scanf(“%s”,c); 若輸入:How are you? 則字符串C中只能得到 How,余下的位置填0 39.2、使用 gets(數組名)和puts(數組名)輸入和輸出 字符串輸出函數 形式:puts(字符數組或字符串) 功能:將一個字符串輸出到屏幕上,同時將字符串結

31、束標志0換成 n ,即輸出完字符串后換行。例J7-9:#include void main( )static char a1 = chinanbeijing; static char a2 = china0beijing; puts(a1); puts(a2); puts(WUHAN);getch(); 運行結果: china beijing china WUHAN (演示)40. 字符串輸入函數 從鍵盤輸入一個字符串到字符數組保存,字符數組名就是保存的地址。形式:gets (字符數組)功能:從鍵盤輸入一個字符串到字符數組。在輸入過程中,遇“”回 車符結束,并將其轉換為0存入字符串尾部, 特殊

32、地:對輸入的空格可作為字符串的一個字符存入字符型數組中。例J7-10: 用gets和scanf 函數分別輸入字符串,#includevoid main( )char a115, a215 ; gets(a1); scanf(%s,a2); printf (a1=%sn,a1); printf (a2=%sn,a2); 輸入:china beijing china beijing 輸出:a1=china beijing a2=china41.五、字符串處理函數 除了輸入輸出字符串函數外,在C語言的函數庫中還提供了一些專門的字符串處理函數。這些函數是: 字符串連接函數: strcat字符串拷貝函數

33、: strcpy 字符串比較函數: strcmp求字符串長度函數: strlen 大小寫字母轉換函數: strlwr 和 strupr 同樣:在使用這些庫函數前必須在文件開始處用: include命令將相關的頭文件包含到源程序中。42. 字符串連接函數形式:strcat (字符數組1,字符數組2)功能:連接兩個數組中的字符串。把字符數組2中的內容(串2)連接到字符數組1的后面,結果存放到字符數組1中,strcat 函數值得到字符數組1的地址。例: (演示)#includevoid main( ) char a11=I ; char b11=am a boy; printf(%sn, strca

34、t(a,b); printf(%dn,sizeof(a); getch(); 執行結果如下: I am a boy 1143.說明:函數應有兩個參數,參數1變量是字符數組名,但字符 數組也可以是字符串。(2) 定義字符數組1 時必須考慮有容納兩個字符串的空間。(3) 連接后字符串中原有的0被字符串的第一個字 符替代,新串中保留了字符串中的0,作為新串 的結束標志。 如: char str130=World“; str212=“ Cup; printf(%sn,strcat (str1,str2); 執行結果為:World Cup44.字符串拷貝函數形式:strcpy(字符數組1,字符數組2)功

35、能:將字符串2(也可以是字符數組2的部分內容)拷貝到 字符數組1中,字符數組1中原來的內容被覆蓋。例: (演示)#include void main( )char a18, a2 = china, a3 = wuhan ; strcpy(a1,a2); strcpy(a2,a3); strcpy(a3, hubei); printf(a1=%sna2=%sna3=%sn, a1,a2,a3); getch(); 運行結果: a1=china a2=wuhan a3=hubei45.說明:(1) “字符數組1”必須寫成數組名的形式,“字符數組2”可以是字符數組名,也可以是一個字符串。(2) 拷貝

36、時連同字符串后面的0一起拷貝到字符數組1中。(3) 字符串拷貝不能用賦值語句,如: a1=a2;是非法的操作。(4) 注意字符數組1要足夠大,以放下字符數組2中的字符串。(5)可以只將字符串數組2的部分內容拷貝到字符串數組1中。 如:strcpy(str1,str2,3); 將str2中前3個字符復制到str1中。46. 字符串比較函數形式:strcmp (字符串1,字符串2)功能:比較兩個字符串,比較時按AscII碼值從左向右逐個比較,直到出現不同字符或遇到0為止。比較的結果由函數值帶回:(1) 如字符串1等于字符串2,返回函數值為0。(2) 如字符串1大于字符串2,返回函數值為正數,其值是

37、ASCII碼的差值。(3) 如字符串1小于字符串2,返回函數值為負數,其值也是ASCII 碼的差值。不能這樣比較二個字符串: if(str1= =str2) printf(“yes”); 只能用: if(strcmp(str1,str2)= =0) printf(“yes”);47.例如: i=strcmp(“chinese”, “china”);不相等返回 e的ASCII碼 a的ASCII碼 =101 97 =448.例 (演示)#include#include void main( )int i,j,k; char a1 =wuhan,a2 =beijing; i=strcmp(a1,a2

38、);j=strcmp(china,korea); k=strcmp(a2, beijing); printf(i=%dnj=%dnk=%dn,i,j,k); TC 編譯,運行結果: i=21 J=- 8 k=0 VC+系統編譯,結果: i=1 J=-1 K=049.注意:(1) 兩個字符串不能直接比較if(str1= =str2) printf(“yesn”);是錯誤的; 只能是:if(strcmp(str1,str2)= =0)printf(“yesn”)(2) 可對字符串中部分字符進行比較:strcmp(str1,str2,n) 比較str1與str2的前n個字符. 如:strcmp(st

39、r1,str2,3);50.求字符串實際長度函數形式:strlen(字符數組)功能:檢測字符串長度,函數返回字符串中實際字符的個 數,不包括0 ;例: (演示)#include void main( ) char a110= china; printf(%dn,strlen(a1); printf(%dn,strlen(beijing0wuhan); getch(); 運行結果:5 7 51. 大小寫字母轉換函數strlwr(字符串);將字符串大寫字母轉換成小寫。Strupr(字符串);將字符串小寫字母轉換成大寫。 如:strlwr(“ABCD) 結果為:abcd strupr(“AbCd”)

40、 結果為: ABCD 52.七、字符數組應用舉例例: 輸入三個字符串,并找出其中最大者。(演示)#include string.h void main()char string20; char str320; int i; for(i=0;i0) strcpy(string,str0); else strcpy(string,str1); if (strcmp(str2,string)0) strcpy(string,str2); printf(nthe largest string is: n%sn,string); getch();輸入:china 輸出:the largest strin

41、g is: beijing ren ren 53.例:輸入一串以句號為結束標志的字母,再反序打印這些字母。#include void main()char s101,ch;int i=0,j; do scanf(“%c”,&ch); if(ch=a)&(ch=A)&(ch=0;j- -) printf(“%c”,sj); getch();退出do while循環后 i 的值是多少?54.例:將一批國家名按從小到大排序。 (演示)#include void main()char str1120=japen,canada,australia,china,korea,england,france,a

42、merican,india,russia, ; int i,j; for(i=0;i9;i+) for(j=i+1;j0) /*stri和strj表示二維數組中的行*/ strcpy(str10,stri);strcpy(stri,strj); strcpy(strj,str10); for(j=0;j10;j+) puts(strj); getch(); 55.例 簡單密碼檢測程序 (略)#include#include /*包含clrscr()函數原形*/#include /*包含exit()函數原形*/ void main() char pass_str80; /*定義字符數組passstr*/ int i=0; while(1) clrscr(); /*清除屏幕,光標到左上角*/ printf(請輸入密碼n); gets(pass_str); /*輸入密碼*/if(strcmp(pass_str,“password”)!=0) /*口令錯*/ printf(口令錯誤,按任意鍵繼續); else break; /*輸入正確,中止循環*/ getch(); i+; if(i=3) exit(0); /*輸入三次錯誤的密碼,正常退出程序*/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論