c语言不允许对数组的大小做动态定义,数组,C语言程序设计课件,与中南大学出版社教材相配套.ppt...
《數組,C語言程序設計課件,與中南大學出版社教材相配套.ppt》由會員分享,可在線閱讀,更多相關《數組,C語言程序設計課件,與中南大學出版社教材相配套.ppt(32頁珍藏版)》請在人人文庫網上搜索。
1、C語言程序設計,第5章 數組,5.1 一維數組 5.2 二維數組與多維數組 5.3 字符與數組,什么是數組,數組:數組是一組有序數據的集合,數組中每一個元素的類型相同。用數組名和下標來唯一確定數組中的元素,5.1一維數組,5.1.1一維數組的聲明 5.1.2一維數組元素的引用 5.1.3一維數組的賦值 5.1.4一維數組越界檢查 5.1.5一維數組的應用舉例,5.1.1一維數組的聲明,定義方式: 類型說明符 數組名下標常量表達式 例、 int a10 定義一個數組,數組名a,有10個元素,每個元素的類型均為int。 這10個元素分別是:a0、a1、a2、a3、a4、.、a8、a9。 注意: (。
2、1)C語言中,數組下標從0開始. (2)C語言不允許對數組的大小做動態定義,如: int n; scanf(%d, 因為,在編譯時,C編譯器根據已知數組大小分配內存。 例5.1源程序,5.1.2 一維數組元素的引用,C語言規定,不能引用整個數組,只能逐個引用元素,元素引用方式: 數組名下標 例、 a0 = a5 + a7 - a2*3,5.1.2一維數組元素的引用,使數組元素a0a9的值為09,然后逆序輸出。 main () int i,a10; for (i=0;i=0; i-) printf(“%d ”,ai); 運行輸出: 9 8 7 6 5 4 3 2 1 0,5.1.3 一維數組的賦。
3、值,初始化:在定義時指定初始值,編譯器把初值賦給數組變量。 賦值:使用賦值語句,在程序運行時把值賦給數組變量,如a0 = 2。 1、一般初始化,例、 static int a10 = 0,1,2,3,4,5,6,7,8,9; int array10 = 1,2,3,4,5,6,7,8,9,10; 2、部分元素初始化,例、 static int a10 = 0,1,2,3,4; 僅前5個元素賦初值,后5個元素未指頂初值。 3、全部元素均初始化為0,不允許簡寫。 static int a10 = 0,0,0,0,0,0,0,0,0,0; 不能簡寫為: static int a10 = 0*10,5。
4、.1.3 一維數組的賦值,注意:當程序不給數組指定初始值時,編譯器作如下處理: (1)編譯器自動把靜態數組的各元素初始化為0。 (2)編譯器不為動態數組自動指定初始值。 4、如果全部元素均指定初值,定義中可以省略元素的個數,例、 static int a5 = 1,2,3,4,5; 可以寫為: static int a = 1,2,3,4,5; 例5.2 求10個元素的最大值,5.1.4一維數組越界檢查,C語言并不檢驗數組邊界 在程序中最好還是加上數組越界檢查程序代碼,5.1.5 一維數組程序舉例,用數組來處理Fibonicci數列的前20項。 F1 = 1 n = 1 F2 = 1 n = 。
5、2 Fn = Fn-1 + Fn-2 n 3 程序: main () int i; static int f20 = 1,1; /* f1、f2已知 */ for(i=2; i20; i+) fi = fi-1 + fi-2; for(i=0; i20; i+) if (i%5 = 0) printf(n); printf(%12d,fi); 例5.3源程序,5.1.5 一維數組程序舉例,例5.4 輸入10個數,用“冒泡法”對10個數排序(由小到大)。 “冒泡法”算法:以六個數9、8、5、4、2、0為例。 第1趟比較(圖5-1) 第2趟比較(圖5-2) 第1趟比較后,剩5個數未排好序; 兩兩比。
6、較5次 第2趟比較后,剩4個數未排好序; 兩兩比較4次 第3趟比較后,剩3個數未排好序; 兩兩比較3次 第4趟比較后,剩2個數未排好序; 兩兩比較2次 第5趟比較后,全部排好序; 兩兩比較1次 算法結論:對于n個數的排序,需進行n-1趟比較,第j趟比較需進行n-j次兩兩比較,5.1.5 一維數組程序舉例,圖5-1,圖5-2,5.1.5 一維數組程序舉例,程序流程圖:(用兩層嵌套循環實現 例程5.4 例程5.5輸入若干個0-9之間的數,統計各整數的個數,5.2 二維數組與多維數組,5.2.1二維數組的聲明與初始化 5.2.2二維數組的表示方法 5.2.3多維數組 5.2.4二維數組的應用舉例,5。
7、.2.1二維數組的聲明與初始化,一般形式: 類型說明符 數組名常量表達式常量表達式 例、 float a34; a為34(3行4列)的數組 float b510; b為510(5行10列)的數組,5.2.1二維數組的聲明與初始化,二維數組的理解: 二維數組a34理解為: 二維數組的元素在內存中的存放順序: 按行存放,即:先順序存放第一行的元素,再存放第二行的元素。(最右邊的下標變化最快,第一維的下標變化最慢,5.2.1二維數組的聲明與初始化,1、分行賦值,如、 static int a34 = 1,2,3,4,5,6,7,8,9,10,11,12; 2、全部數據寫在一個大括號內,如、 stat。
8、ic int a34 = 1,2,3,4,5,6,7,8,9,10,11,12; 3、部分元素賦值,如、 static int a34 = 1,5,9; 僅對a00、a10、a20賦值,其余元素未賦值(對于靜態數組,編譯器自動為未賦值元素指定初值0;對于動態數組,未賦值元素的初值是隨機的)。 4、如果對全部元素賦初值,則第一維的長度可以不指定,但必須指定第二維的長度。例、 static int a34=1,2,3,4,5,6,7,8,9,10,11,12; 與下面定義等價: static int a 4=1,2,3,4,5,6,7,8,9,10,11,12,5.2.2二維數組元素的表示方法,用。
9、數組名和下標引用元素。例、 float a23; 有6個元素,按如下方式引用各元素: a00、a01、a02、a10、a11、a12 注意:數組float a23中無元素a23。(下標從0始) 例5.6源程序 例5.7源程序,5.2.3多維數組,在學習了一維數組和二維數組之后,不難發現: 提高數組的維數,只需要在聲明數組的時候將下標和方括號”再加一組就可以了. 三維數組:float a234在內存中的存放順序: a000a001a002a003 a010a011a012a013 a020a021a022a023 a100a101a102a103 a110a111a112a113 a120a12。
10、1a122a123 例5.8源程序,5.2.4二維數組的應用舉例,例5-9 將一個二維數組的行和列互換,存放到另一個二維數組中. 例5-10 編寫程序,打印出所給形式的楊輝三角. 例5.11源程序 例5.12源程序,5.3字符與數組,5.3.1字符型數據 5.3.2一維字符數組的聲明及初始化 5.3.3一維字符數組的輸入與輸出 5.3.4二維字符數組 5.3.5字符串處理函數 5.3.6字符數組程序舉例,5.3.1字符型數據,字符型數據包括字符常量、轉義字符常量、字符串常量、字符變量和符號常量。 字符常量:由單引號括起的單個字符。如:a,A,G,?。 轉義字符常量:以反斜桿開頭的特殊字符序列。。
11、意思是把反斜桿后面的字符序列轉換成特定的含義,而不是原來的含義。 例如:n表示換行,而不是小寫字母n。r表示回車;b表示退格;表示等等。 字符串常量:用雙引號括起來的字符序列。例如,China,12234等。字符串常量的長度沒有限制,系統在字符串的末尾自動加上0 ,以示字符串的結束。 字符變量:存放字符常量的內存變量。字符變量用關鍵字char來說明。可以在定義字符變量的同時進行初始化。 符號常量:以指定的符號代表其后的一串字符。用于簡化程序的編寫和修改,5.3.2一維字符數組的聲明及初始化,字符數組: 存放字符數據的數組,每一個元素存放一個字符。 char c10; /* 定義c為字符數組,包。
12、含10個元素 */ c0=I; c1= ; c2=a; c3=m; c4= ; c5=h; c6=a; c7=p; c8=p; c9=y,5.3.2一維字符數組的聲明及初始化,1.逐個元素初始化 static char c10 = I, ,a,m, ,h,a,p,p,y; 2.初始化數據少于數組長度,多余元素自動為“空”(0,二進制0)。 3.指定初值時,若未指定數組長度,則長度等于初值個數。 static char c = I, ,a,m, ,h,a,p,p,y,5.3.2一維字符數組的聲明及初始化,字符數組的引用 引用一個元素,得到一個字符。 例 輸出一個字符串。 main () stat。
13、ic char c10=I, ,a,m, ,a, ,b,o,y; int i; for(i=0;i10;i+) printf(%c,ci); printf(n); 輸出結果: I am a boy,5.3.3一維字符數組的輸入與輸出,1、用“%c”格式符逐個輸入輸出。 2、用“%s”格式符按字符串輸入輸出。例、 static char c6; scanf(%s,c); printf(%s,c); 注意: (1)輸出時,遇0結束,且輸出字符中不包含0。 (2)“%s”格式輸出字符串時,printf()函數的輸出項是字符數組名,而不是元素名。 static char c6 = China; pri。
14、ntf(%s,c); printf(%c,c0); printf(%s,c0); (3)“%s”格式輸出時,即使數組長度大于字符串長度,遇0也結束。例、 static char c10 = China; printf(%s,c); /*只輸出5個字符 */ (4) “%s”格式輸出時,若數組中包含一個以上0,遇第一個0時結束。 (5)輸入時,遇回車鍵結束,但獲得的字符中不包含回車鍵本身(0 x0D,0 x0A),而是在字符串末尾添0。因此,定義的字符數組必須有足夠的長度,以容納所輸入的字符。(如,輸入5個字符,定義的字符數組至少應有6個元素,5.3.3一維字符數組的輸入與輸出,6)一個scan。
15、f函數輸入多個字符串,輸入時以“空格”鍵作為字符串間的分隔。 static char str13; scanf(%s,str); 輸入:How are you? 結果:僅“How”被輸入數組str 如要想str獲得全部輸入(包含空格及其以后的字符),程序應設計為: static char c13; int i; for(i=0;i13;i+) ci = getchar(); (7) C語言中,數組名代表該數組的起始地址,因此,scanf()函數中不需要地址運算符 在Turbo C中,加上 printf、puts均以0結尾. printf(%sn,c); printf需要格式控制符%s puts。
16、(c); puts不需要格式控制符,且自動換行 2、gets()函數:輸入字符串到數組。例、 static char str12; gets(str); 注意:gets()、puts()一次只能輸入輸出一個字符串。而scanf()、printf()可以輸入輸出幾個字符串。 3、strcat():連接字符串。 strcat(字符串1,字符串2); 把“字符串2”連接到“字符串1”的后面,5.3.5字符串處理函數,4、strcpy():字符串拷貝。 strcpy(字符串1,字符串2); 把“字符串2”的值拷貝到“字符串1”中 5、strcmp():字符串比較。 比較“字符串1”、“字符串2”,例、 strcmp(str1,str2); strcmp(China, Korea); strcmp(str1, Beijing); 比較規則:逐個字符比較ASCII碼,直到遇到不同字符或0,比較結果是該函數的返回值。 6、strlwr():將字符串中的大寫字母轉換為小寫字母(lwr:lowercase小寫)。 7、strupr():將字符串中的小寫字母轉換為大寫字母(upr:uppercase大寫)。 注意:以上函數均是庫函數,使用時必須用#include語句包含頭文件,5.3.6字符數組程序舉例,例5.16不使用字符串比較函數strcmp,自編程序,實現兩個字符串s1、s2的比較。
總結
以上是生活随笔為你收集整理的c语言不允许对数组的大小做动态定义,数组,C语言程序设计课件,与中南大学出版社教材相配套.ppt...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 补丁分发 linux,patch 命令应
- 下一篇: c语言栈解决迷宫问题,栈处理迷宫问题