




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、2022-4-14C語言程序設計-第六章2基本類型基本類型 構造類型構造類型派生類型派生類型整型整型intint結構體結構體structstruct數組類型數組類型字符型字符型charchar共用體(聯合)共用體(聯合)型型unionunion指針類型指針類型實型實型floatfloat枚舉型枚舉型enumenum雙精度型雙精度型DoubleDouble用戶定義類型用戶定義類型typedeftypedef 空值型空值型voidvoid構造數據類型(導出構造數據類型(導出類型):由基本數據類型):由基本數據類型按一定規則組合類型按一定規則組合而成的。廣義上包括而成的。廣義上包括表中的構造類型和派
2、表中的構造類型和派生類型。生類型。 2022-4-14C語言程序設計-第六章36.1 一維數組一維數組6.2 多維數組多維數組6.3 字符數組字符數組第6章 數組2022-4-14C語言程序設計-第六章4數組和數組元素數組和數組元素數數 組組: :構造數據類型之一,是一種數據結構,處于這種結構中的變量具有相同的性質,并按一定的順序排列。數組的定義: 數據類型數據類型 數組名數組名 數組長度數組長度;例例: int: int a6; a6; a00145a1a2a3a4a523a數組元素數組元素 下標變量下標變量 數組中的每個分量,用下標來表示其所處位置,各分量排列有序且數據類型相同。數組元素的
3、表示: 數組名數組名 下標下標 例:a3, data34數組名數組名表示數組存儲區域的首地址,數組的首地址也就是第一個元素的地址,是一個地址常量,不能向它賦值。例:a或&a0下下 標標用來表示該數組元素在數組中的相對位置,是整型常量,最小值為0,最大值為數組長度-1。例: a3中的下標3 :數組運算符單目運算符優先級1左結合2022-4-14C語言程序設計-第六章5一維數組一維數組:帶有一個方括號的數組。a6二維數組:二維數組:帶有兩個方括號的數組。data34三維數組:三維數組:帶有三個方括號的數組。c345 n 維數組維數組: 帶有n個方括號的數組。b4 4多多維維數數組組用數組表
4、示向量D和矩陣A數組d10表示向量D: d0,d1,d2,d3,d4,d5,d6,d7,d8,d9數組a43表示矩陣A:a00,a01,a323231302221201211100201009876543210),(aaaaaaaaaaaaAddddddddddD2022-4-14C語言程序設計-第六章66.1 一維數組一維數組6.1.1 一維數組的定義和使用一維數組的定義和使用v定義方式: 數據類型 數組名常量表達式; 例例6.1 int a6;a00145a1a2a3a4a523a編譯時分配連續內存編譯時分配連續內存內存字節數內存字節數=數組元素個數數組元素個數*sizeof(元素數據類型
5、元素數據類型)2022-4-14C語言程序設計-第六章79 8 7 6 5 4 3 2 1 0例例6.2一維數組元素的使用。一維數組元素的使用。main() int i,a10; for (i=0;i=0;i-) printf(%d ,ai);2022-4-14C語言程序設計-第六章86.1.2 一維數組的初始化一維數組的初始化初始化方式 在定義數組時,為數組元素賦初值(在編譯階段使之得到初值) int a5=1,2,3,4,5;等價于:a0=1; a1=2; a2=3; a3=4; a4=5;v說明:l數組不初始化,其元素值為隨機數l對static數組元素不賦初值,系統會自動賦以0值l當全部
6、數組元素賦初值時,可不指定數組長度如 int a5=6,2,3; 等價于: a0=6; a1=2;a2=3; a3=0; a4=0;如 int a3=6,2,3,5,1; ()static int a5;等價于:a0=0; a1=0; a2=0; a3=0; a4=0;l只給部分數組元素賦初值 int a=1,2,3,4,5,6;編譯系統根據初值個數確定數組維數2022-4-14C語言程序設計-第六章9例例6.3整數數組的初始化。整數數組的初始化。#include”stdio.h”main() int i;int a=0,1,0,0,1;for (i=0;i5;i+) printf(%d ,a
7、i);0 1 0 0 12022-4-14C語言程序設計-第六章10例38 49 65 76 13 27 30 97第一趟38 49 65 13 27 30 76第二趟38 49 13 27 30 65第三趟38 13 27 30 49第四趟13 27 30 38第五趟13 27 30第六趟49 38 65 97 76 13 27 30初始關鍵字n=83849769713972797309713767676273013652765306513134949304927382738303813 27第七趟2022-4-14C語言程序設計-第六章11例6.4冒泡法從小到大排序程序。排序過程:排序過程
8、:設有設有n個數據個數據,存放到存放到a1到到an的的n個數組元素中。個數組元素中。 (1) 從從a1到到an,依次把兩個相鄰元素兩兩比較,即,依次把兩個相鄰元素兩兩比較,即a1與與a2比,比,a2與與a3比,比,an-1與與an比比;(2) 每次兩相鄰元素比較后,若前一個元素值比后一個元素每次兩相鄰元素比較后,若前一個元素值比后一個元素值大,則交換兩元素值;否則,不交換。值大,則交換兩元素值;否則,不交換。(3)重復上述算法,把重復上述算法,把a1到到an中的最大值換到中的最大值換到an ,再把,再把a1到到an-1中最大值換到中最大值換到an-1 ,最后把最后把a1到到a2中最大值換到中最
9、大值換到a2中,即中,即完成排序。完成排序。Input 8 numbers:2 6 5 4 1 9 8 3The sorted numbers:1 2 3 4 5 6 8 96.1.3 一維數組程序舉例一維數組程序舉例 main() int i,j,t,a9; printf(Input 8 numbers : n); for (i=1;i=8;i+) scanf(%d,&ai); printf(n); for (j=1;j=7;j+) for (i=1;iai+1)t=ai;ai=ai+1;ai+1=t; printf(the sorted numbers : n); for (i=1
10、;i=8;i+) printf(%d ,ai);2022-4-14C語言程序設計-第六章12例例6.5比較交換法從小到大排序程序。比較交換法從小到大排序程序。排序過程排序過程:(1)通過比較交換將數組元素通過比較交換將數組元素a1到到an中的最大值放入中的最大值放入a1中中;(2)再次比較交換將數組元素再次比較交換將數組元素a2到到an中的最大值放入中的最大值放入a2中中; (3)以此類推,將以此類推,將ai到到an中的最大值存入到中的最大值存入到ai中,直到最后二個中,直到最后二個元素元素an-1與與an進行一次比較,依條件交換,較大值存入進行一次比較,依條件交換,較大值存入an-1中,中,
11、即達到了按從大到小的排序。即達到了按從大到小的排序。#define N 6main() int i,j,t,aN+1; printf(Input 6 numbers: n); for(i=1;i=N;i+) scanf(%d,&ai); printf(n); for(i=1;i=N-1;i+) for(j=i+1;j=N;j+) if(aiaj) t=ai;ai=aj;aj=t; printf(the sorted numbers : n); for(i=1;i=N;i+) printf(%d ,ai);Input 8 numbers:5 7 4 3 8 6The sorted num
12、bers:8 7 6 5 4 32022-4-14C語言程序設計-第六章13例初始: 49 38 65 97 76 13 27 kji=11349一趟: 13 38 65 97 76 49 27 i=22738二趟: 13 27 65 97 76 49 38 三趟: 13 27 38 97 76 49 65 四趟: 13 27 38 49 76 97 65 五趟: 13 27 38 49 65 97 76 六趟: 13 27 38 49 65 76 97 kkkkjjjjjjjjjj2022-4-14C語言程序設計-第六章14例例6.6選擇法排序從大到小排序程序。選擇法排序從大到小排序程序。排
13、序過程排序過程: 在每一輪比較中不是每當在每一輪比較中不是每當aiaj時就交換,而是用一個變時就交換,而是用一個變量量k記下其中值較大的元素的下標值,在記下其中值較大的元素的下標值,在ai與與ai1到到an都比較都比較后,只將后,只將ai與與ai1到到an中值最大的那個元素交換,為此,在每中值最大的那個元素交換,為此,在每一輪只需將一輪只需將ai與與ak的值交換即可。的值交換即可。#define N 6main() int i,j,t,k,aN+1; printf(Input 6 numbers : n); for(i=1;i=N;i+) scanf(%d,&ai); printf(n
14、); for(i=1;i=N-1;i+) k=i; for(j=i+1;jak) k=j; if(k!=i) t=ai;ai=ak;ak=t; printf(the sorted numbers : n); for(i=1;i=N;i+) printf(%d ,ai);Input 8 numbers:5 7 4 3 8 6The sorted numbers:8 7 6 5 4 32022-4-14C語言程序設計-第六章156.2 多維數組多維數組 6.2.1 二維數組的定義和使用二維數組的定義和使用 6.2.2 二維數組的初始化二維數組的初始化 6.2.3 二維數組程序舉例二維數組程序舉例
15、2022-4-14C語言程序設計-第六章166.2.1 二維數組的定義和使用二維數組的定義和使用1.二維數組的定義二維數組的定義 類型類型 數組名數組名常量表達式常量表達式1常量表達式常量表達式2;例:int a34; a00a01a02a03a10a11a12a13a20a21a22a23014523a01a02a03a10a11a00a13a20a21a22a23a1267101189a0a1a2a0a1a2存儲結構存儲結構:以行為主序行為主序方式存放。數組長度數組長度=常量表達式1*常量表達式2邏輯結構邏輯結構:行數列數行名2022-4-14C語言程序設計-第六章17三維數組int b2
16、34的存儲結構:01234567.20212223b000b001b002b003b010b011b012b013b020b021b022b023b100b101b102b103b110b111b112b113b120b121b122b1232.二維數組元素的使用二維數組元素的使用二維數組名的使用:是該數組的首地址。二維數組元素的使用: 數組名數組名下標下標1下標下標2行號列號2022-4-14C語言程序設計-第六章18例例6.7輸入一個二維數組值輸入一個二維數組值,并將其在數組中的內容及并將其在數組中的內容及地址顯示出來。地址顯示出來。main() int a23; int i; for(i
17、=0;i2;i+) printf(Enter a%d0,a%d1,a%d2n,i,i,i); scanf(%d,%d,%d,&ai0,&ai1,&ai2); for(i=0;i2;i+) printf(a%d0=%d,addr=%xn,i,ai0,&ai0); printf(a%d1=%d,addr=%xn,i,ai1,&ai1); printf(a%d2=%d,addr=%xn,i,ai2,&ai2); Enter a00,a01,a0210,20,30Enter a10,a11,a1240,50,60a00=10,addr=ffd4 a01=
18、20,addr=ffd6 a02=30,addr=ffd8 a10=40,addr=ffda a11=50,addr=ffdc a12=60,addr=ffde2022-4-14C語言程序設計-第六章19多維數組的初始化有兩種方式:直述型:將所有常量寫在一個花括號內,各個常量之間用逗號分開,按數組元素存儲的順序對各元素賦初值。6.2.2 二維數組的初始化二維數組的初始化 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;分列型:用花括號嵌套,即每一組一維數組的初值數據再用一對花括號括起。注:若對全部元素都
19、賦初值,第一維長度可省略,但第二維長度不能省。int a34=1,5,9;int a4=1,2,3,4,5,6,7,8,9,10,11,12;2022-4-14C語言程序設計-第六章20例例6.8輸入一個輸入一個3*3的數組,將其行和列互換。的數組,將其行和列互換。main() int i,j,b33; static int a33=1,2,3,4,5,6,7,8,9; for(i=0;i=2;i+) for(j=0;j=2;j+) bji=aij; for(i=0;i=2;i+) for(j=0;j=2;j+) printf(%d ,bij); printf(n); 14 72 5 83 6
20、 92022-4-14C語言程序設計-第六章21例例6.9有一個有一個3*4的矩陣,要求編程求出第的矩陣,要求編程求出第i行、第行、第j列元素的值。列元素的值。main() int i,j; static int a34=1,2,3,4,9,8,7,6,-10,10,-5,2; printf(input integer i: ); scanf(%d,&i); printf(input integer j: ); scanf(%d,&j); printf(a%d%d=%d,i-1,j-1,ai-1j-1); input integer i: 2input integer j: 3
21、a12=76.2.3 二維數組程序舉例二維數組程序舉例 2022-4-14C語言程序設計-第六章22main() int i,j,k,m=2,n=3,p=2; static int a23= 6,8,7, 3,4,5 ; static int b32= 1,2, 2,1, -1,0 ; static int c22= 0,0, 0,0; for(i=0;im;i+) for(j=0;jp;j+) cij=0; for(k=0;kn;k+) cij=cij+aik*bkj; for(i=0;im;i+) for(j=0;jp;j+) printf(%d ,cij); printf(n); 例例6
22、.10求矩陣求矩陣A與乘積。與乘積。15 206 102022-4-14C語言程序設計-第六章236.3 字符數組字符數組 6.3.1 字符數組的定義字符數組的定義 6.3.2 字符數組的初始化字符數組的初始化 6.3.3 字符串的輸入和輸出字符串的輸入和輸出 6.3.4 用于字符處理的庫函數用于字符處理的庫函數2022-4-14C語言程序設計-第六章246.3.1 字符數組的定義字符數組的定義字符數組的定義:字符數組的定義: char/int數組名數組名數組長度數組長度;char c10; 注:char/int兩種表示方式所占的空間不同,因字符型占一個字節,而整型占兩個字節。2022-4-1
23、4C語言程序設計-第六章251 用字符常量對字符數組進行初始化6.3.2 字符數組的初始化字符數組的初始化 char str8=p,r,o,g,r,a,m,0; char str8=112,114,111,103,114,97,109,0;2 用字符的ASCII碼值對字符數組進行初始化3 用字符串對字符數組進行初始化char str=“program”;char str=“program”; 注:只能在定義時賦初值,不能在語句中直接將一個字符串賦給一個字符數組,可用strcpy()實現將一個字符串賦給予一個字符數組。 int qus19;qus=“Whats your name?”; 2022
24、-4-14C語言程序設計-第六章26 例 char ch5=H,e,l,l,o;ch0Hello逐個字符賦值ch1ch2ch3ch4 例 char ch5=B,o,y;ch0Boy00逐個字符賦值ch1ch2ch3ch4 例 char ch5=“Boy”;ch0Boy00用字符串常量ch1ch2ch3ch4 例 char ch6=“Hello”; char ch6=“Hello”; char ch=“Hello”;用字符串常量ch0Helloch1ch2ch3ch40ch52022-4-14C語言程序設計-第六章27 例 char diamond5=., .,*,.,*,.,*, *, .,
25、., . ,*,.,*, .,*,., .,*;二維字符數組初始化.*00.*.*0*.*.*.*0.*00diamond0diamond1diamond2diamond3diamond4 例 char fruit7=“Apple”,”Orange”, ”Grape”,”Pear”,”Peach”;二維字符數組初始化fruit0fruit1fruit2fruit3fruit4Apple00Orange0Grape00Pear000Peach002022-4-14C語言程序設計-第六章281 逐個字符的輸入和輸出逐個字符的輸入和輸出scanf( “%c”,&ch);printf(“ %c
26、”,ch);ch=getchar();putchar( ch); 6.3.3 字符串的輸入和輸出字符串的輸入和輸出例例6.11逐個字符輸入輸出。逐個字符輸入輸出。main() int i; char str10; for(i=0;i9;i+)scanf(“%c”,&stri); stri=0; for(i=0;i9;i+)printf(“%c”,stri);123456789123456789stri=getchar();putchar(stri);2022-4-14C語言程序設計-第六章29例 輸出一個字符串#include main() char c10=I, ,a,m, ,a,
27、,b,o,y; int i; for(i=0;i10;i+) printf(%c,ci); printf(n);Iamaboy01234567892022-4-14C語言程序設計-第六章30例main( ) char a5=H,e,l,l,o; printf(“%s”,a); 例 main( ) char a =“Hello”; printf(“%s”,a); 結果:Hello#-=*結果:Hello用“%s”輸出時,遇0結束2022-4-14C語言程序設計-第六章312. 字符串的整體輸入和輸出字符串的整體輸入和輸出 scanf( “ %s”,字符數組名字符數組名);注:輸入時自動加0。 p
28、rintf(“%s”,字符數組名字符數組名);注:輸出時遇第一個0結束。123456789123456789123456789123456char c=“China”;printf(“%s”,c);輸出: Chinamain() char a=h,e,l,0,l,o,0; printf(%s,a);輸出:helchar str13;scanf(“%s”,str);輸入: How例6.12字符串整體輸入輸出。main() int i; char str10; scanf(%s,str); printf(%sn,str); printf(%6sn,str); printf(%-.6sn,str);
29、例例6.13字符串的輸入輸出。字符串的輸入輸出。main()static char qus=What is your name ?; char name20; printf(%sn,qus); scanf(%s,name); printf(nMy name is %sn,name);Whats your name?LimingMy name is Liming.2022-4-14C語言程序設計-第六章32用字符數組名用字符數組名,不要加不要加&輸入串長度輸入串長度數組長度數組長度遇空格或回車結束遇空格或回車結束自動加自動加0用字符數組名用字符數組名,遇遇0結束結束例例 用用%s %s
30、main() char str5; scanf(“%s”, str); printf(“%s”, str);2022-4-14C語言程序設計-第六章33例 字符串輸入舉例 H o w 0 a r e 0 y o u ? 0 #include main() char a15,b5,c5; scanf(%s%s%s,a,b,c); printf(a=%snb=%snc=%sn,a,b,c); scanf(%s,a); printf(a=%sn,a);運行情況:輸入:How are you?輸出:a=How b=are c=you?輸入:How are you?輸出:a=How運行情況:輸入:How
31、 are you?scanf中%s輸入時,遇空格或回車結束2022-4-14C語言程序設計-第六章343. 整行輸入和輸出整行輸入和輸出 gets(str); 注:讀入由鍵盤輸入的字符(包括空格),直至換行符為止(換行符不存入),且自動在結尾處加0。 puts(str); 注:把字符串的內容顯示在屏幕上。char str=“ChinanBeijing”;puts(str);輸出: China Beijing2022-4-14C語言程序設計-第六章35#include main() char a15; gets(a); puts(a);運行情況:輸入:How are you?輸出:How are
32、 you?例 若準備將字符串“This is a string.”記錄下來,錯誤的輸入語句為:(A)scanf(“%20s”,s);(B)for(k=0;k17;k+) sk=getchar();(C)while(c=getchar()!=n) sk+=c;2022-4-14C語言程序設計-第六章36u字符串連接函數strcat格式:strcat(字符數組1,字符數組2)功能:把字符數組2連到字符數組1后面返值:返回字符數組1的首地址說明:字符數組1必須足夠大 連接前,兩串均以0結束;連接后,串1的0取消, 新串最后加0u字符串拷貝函數strcpy格式:strcpy(字符數組1,字符串2)功能
33、:將字符串2,拷貝到字符數組1中去返值:返回字符數組1的首地址說明:字符數組1必須足夠大 拷貝時0一同拷貝 不能使用賦值語句為一個字符數組賦值例 char str120,str220; str1=“Hello!”; () str2=str1; ()v6.3.4 用于字符處理的庫函數用于字符處理的庫函數包含在頭文件 string.h2022-4-14C語言程序設計-第六章37例 strcpy與strcat舉例#include #include void main() char destination25; char blank = , c= C+, turbo = Turbo; strcpy(d
34、estination, turbo); strcat(destination, blank); strcat(destination, c); printf(%sn, destination);Turbo C+TrboC+0123456789u024.Trbo0123456789u024.Trbo00123456789u24.2022-4-14C語言程序設計-第六章38u字符串比較函數strcmp格式:strcmp(字符串1,字符串2)功能:比較兩個字符串比較規則:對兩串從左向右逐個字符比較(ASCII碼), 直到遇到不同字符或0為止返值:返回int型整數,a. 若字符串1 字符串2, 返回正
35、整數 c. 若字符串1= 字符串2, 返回零說明:字符串比較不能用“=”,必須用strcmpu字符串長度函數strlen格式:strlen(字符數組)功能:計算字符串長度返值:返回字符串實際長度,不包括0在內例 對于以下字符串,strlen(s)的值為:(1)char s10=A,0,B,C,0,D;(2)char s =“tv0willn”;(3)char s =“x69082n”; 答案:1 3 12022-4-14C語言程序設計-第六章39#include #include main() char str1 = ”Hello!, str2 = ”How are you?”,str20;
36、int len1,len2,len3; len1=strlen(str1); len2=strlen(str2); if(strcmp(str1, str2)0) strcpy(str,str1); strcat(str,str2); else if (strcmp(str1, str2)0) strcpy(str,str2); strcat(str,str1); else strcpy(str,str1); len3=strlen(str); puts(str); printf(”Len1=%d,Len2=%d,Len3=%dn”,len1,len2,len3);例 strcmp與strle
37、n舉例How are you?Hello!Len1=6,Len2=12,Len3=182022-4-14C語言程序設計-第六章40應用舉例例 輸入一行字符,統計其中有多少個單詞輸入一字符串給 string i=0 num=0 word=0當(c=stringi)!=0)c=空格真真假假word=0word=1num=num+1i=i+1輸出:numword=0#include main() char string81; int i,num=0,word=0; char c; gets(string); for(i=0;(c=stringi)!=0;i+) if(c= ) word=0; els
38、e if(word=0) word=1; num+; printf(There are %d words in the linen,num);2022-4-14C語言程序設計-第六章41當前字符=空格是否未出現新單詞,使word=0,num不累加前一字符為空格(word=0),新單詞出現,word=1,num加1前一字符為非空格(word=1),未出現新單詞,num不變否0是11是1未01否0是12否1未12是1未02否0是13是1未03否0是14否1未14否1未14否1未14例 輸入:I am a boy. 當前字符是否空格word原值新單詞開始否word新值num值Iamaboy.2022-4-14C語言程序設計-第六章42例 有三個字符串,找出其中最大者 H o w 0 H e l l o 0 H i g h 0 str0str1str2#include #include main() char string20,str320; int i; for(i=0;i0)strcpy(string,str0); else strcpy(string,str1); if(strcmp(str2,string)0)strcpy(string,str2); printf(The largest st
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑工程預付合同協議書
- 鄉村別墅-改造方案(3篇)
- 保潔維護服務方案(3篇)
- DB23-T2963-2021-天然鱗片石墨中微量鈣含量測定鈣-偶氮胂Ⅲ分光光度法-黑龍江省
- 固體醫療廢物管理制度
- 幼兒園新環境管理制度
- 學校禁毒工作管理制度
- 年度質量培訓管理制度
- 公司車車保養管理制度
- 庭院遮陽測評方案(3篇)
- 2025年離婚協議書內容
- 西湖大學《土木工程CAD》2023-2024學年第二學期期末試卷
- 拆遷款收款協議書
- 血液透析專科復習題及參考答案
- 安全生產月知識競賽試題(含答案)
- 2025年物流管理與工程考試試題及答案
- GB/T 17642-2025土工合成材料非織造布復合土工膜
- (四調)武漢市2025屆高中畢業生四月調研考試 數學試卷(含答案詳解)
- 2024年上海市中考英語試題和答案
- 應急預案演練記錄表
- 外貿中英文商業發票
評論
0/150
提交評論