2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第五章 數(shù)組,構(gòu)造數(shù)據(jù)類型之一數(shù)組:有序數(shù)據(jù)的集合,用數(shù)組名標識元素:屬同一數(shù)據(jù)類型,用數(shù)組名和下標確定5.1 一維數(shù)組一維數(shù)組的定義定義方式: 數(shù)據(jù)類型 數(shù)組名[常量表達式];,合法標識符,表示元素個數(shù)下標從0開始,[ ] :數(shù)組運算符單目運算符優(yōu)先級(1)左結(jié)合不能用( ),例 int a[6];,編譯時分配連續(xù)內(nèi)存內(nèi)存字節(jié)數(shù)=數(shù)組維數(shù)* sizeo

2、f(元素數(shù)據(jù)類型),數(shù)組名表示內(nèi)存首地址,是地址常量,一維數(shù)組的引用數(shù)組必須先定義,后使用只能逐個引用數(shù)組元素,不能一次引用整個數(shù)組數(shù)組元素表示形式: 數(shù)組名[下標]其中:下標可以是常量或整型表達式,例 int i=15; int data[i]; (?不能用變量定義數(shù)組維數(shù)),例 int a[10]; printf(“%d”,a);

3、(?)必須 for(j=0;j<10;j++) printf(“%d\t”,a[j]); (?),例 int data[5]; data[5]=10; //C語言對數(shù)組不作越界檢查,使用時要 注意,一維數(shù)組的初始化初始化方式,在定義數(shù)組時,為數(shù)組元素賦初值(在編譯階段使之得到初值),int a[5]={1,2,3,4,5};

4、等價于:a[0]=1; a[1]=2; a[2]=3; a[3]=4; a[4]=5;,說明:數(shù)組不初始化,其元素值為隨機數(shù)對static數(shù)組元素不賦初值,系統(tǒng)會自動賦以0值,當全部數(shù)組元素賦初值時,可不指定數(shù)組長度,如 int a[5]={6,2,3}; 等價于: a[0]=6; a[1]=2;a[2]=3; a[3]=0; a[4]=0;如 int a[3]={6,2,3,5,1}; (?),s

5、tatic int a[5];等價于:a[0]=0; a[1]=0; a[2]=0; a[3]=0; a[4]=0;,只給部分數(shù)組元素賦初值,int a[]={1,2,3,4,5,6};編譯系統(tǒng)根據(jù)初值個數(shù)確定數(shù)組維數(shù),程序舉例,,例 讀10個整數(shù)存入數(shù)組,找出其中最大值和最小值,步驟:1. 輸入:for循環(huán)輸入10個整數(shù)2. 處理:(a) 先令max=min=x[0](b) 依次用x[i]和max,min比較(循環(huán))

6、 若maxx[i],令min=x[i]3. 輸出:max和min,#include #define SIZE 10main(){ int x[SIZE],i,max,min; printf("Enter 10 integers:\n"); for(i=0;ix[i]) min=x[i]; } printf("Maximum value is %d\n&q

7、uot;,max); printf("Minimum value is %d\n",min);},,例 用數(shù)組求Fibonacci數(shù)列前20個數(shù),#include main(){ int i; int f[20]={1,1}; for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<20;i++) {

8、 if(i%5==0) printf("\n"); printf("%12d",f[i]); }},例 用冒泡法對10個數(shù)排序,排序過程:(1)比較第一個數(shù)與第二個數(shù),若為逆序a[0]>a[1],則交換;然 后比較第二個數(shù)與第三個數(shù);依次類推,直至第n-1個數(shù)和第 n個數(shù)比較為止——第一趟冒泡排序,結(jié)果最大的數(shù)被安置在

9、 最后一個元素位置上(2)對前n-1個數(shù)進行第二趟冒泡排序,結(jié)果使次大的數(shù)被安置在 第n-1個元素位置(3)重復上述過程,共經(jīng)過n-1趟冒泡排序后,排序結(jié)束,,例,38,49,76,97,13,97,27,97,30,97,13,76,76,76,27,30,13,65,27,65,30,65,13,13,49,49,30,49,27,38,27,38,30,38,,#include main()

10、{ int a[11],i,j,t; printf("Input 10 numbers:\n"); for(i=1;ia[i+1]) {t=a[i]; a[i]=a[i+1]; a[i+1]=t;} printf("The sorted numbers:\n"); for(i=1;i<11;i++)printf("%d &q

11、uot;,a[i]);},例 用簡單選擇法對10個數(shù)排序,排序過程:(1)首先通過n-1次比較,從n個數(shù)中找出最小的, 將它與第一個數(shù) 交換—第一趟選擇排序,結(jié)果最小的數(shù)被安置在第一個元素位置上(2)再通過n-2次比較,從剩余的n-1個數(shù)中找出關(guān)鍵字次小的記錄, 將它與第二個數(shù)交換—第二趟選擇排序(3)重復上述過程,共經(jīng)過n-1趟排序后,排序結(jié)束,,例,,初始: [ 49 38

12、 65 97 76 13 27 ],i=1,13,49,一趟: 13 [38 65 97 76 49 27 ],i=2,27,38,六趟: 13 27 38 49 65 76 [97 ],,Ch5_201.c,#include main(){ int a[11],i,j,k,x;

13、 printf("Input 10 numbers:\n"); for(i=1;i<11;i++) scanf("%d",&a[i]); printf("\n"); for(i=1;i<10;i++) { k=i; for(j=i+1;j<=10;j++) if(a[j]

14、<a[k]) k=j; if(i!=k) { x=a[i]; a[i]=a[k]; a[k]=x;} } printf("The sorted numbers:\n"); for(i=1;i<11;i++)printf("%d ",a[i]);},#define N 6main(){ int a[N],b

15、[‘B’-60],c[]={1,2,3,4,5,6},i; for(i=0;i<N;i++) scanf(“%d%d”,&a[i],&b[i]); for(i=0;i<N;i++) printf(“%d ”,a[i]); printf(“\n”); for(i=0;i<N;i++)

16、 printf(“%d ”,b[i]); printf(“\n”); for(i=0;i<N;i++) c[i]=a[i]+b[N-i-1]; for(i=0;i<N;i++) printf(“%d ”,c[i]);},數(shù)組定義:必須用常量表達式,數(shù)組元素引用,,Ch6_001.c,5.2 二維數(shù)組及多維數(shù)組二維數(shù)組的

17、定義定義方式:  數(shù)據(jù)類型 數(shù)組名[常量表達式][常量表達式];,數(shù)組元素的存放順序原因:內(nèi)存是一維的二維數(shù)組:按行序優(yōu)先多維數(shù)組:最右下標變化最快,,例 int a[3][4]; float b[2][5]; int c[2][3][4]; int a[3,4]; (?),行數(shù),列數(shù),元素個數(shù)=行數(shù)*列數(shù),,二維數(shù)組理解,每個元素a[i]由包含4個元素的一維數(shù)組組成,

18、二維數(shù)組a是由3個元素組成,二維數(shù)組元素的引用形式: 數(shù)組名[下標][下標]二維數(shù)組元素的初始化分行初始化:,按元素排列順序初始化,,程序舉例,,例 將二維數(shù)組行列元素互換,存到另一個數(shù)組中,,例 求二維數(shù)組中最大元素值及其行列號,#include main(){ int a[3][4]={{1,2,3,4}, {9,8,7,6},

19、 {-10,10,-5,2}}; int i,j,row=0,colum=0,max; max=a[0][0]; for(i=0;imax) { max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d, \colum=%d\n",max,row,colum);},,例 讀入下表中值到數(shù)

20、組,分別求各行、各列及表中所有數(shù)之和,#include main(){ int x[5][4],i,j; for(i=0;i<4;i++) for(j=0;j<3;j++) scanf("%d",&x[i][j]); for(i=0;i<3;i++) x[4][i]=0; for(j=0;j<5;j++)

21、 x[j][3]=0; for(i=0;i<4;i++) for(j=0;j<3;j++) { x[i][3]+=x[i][j]; x[4][j]+=x[i][j]; x[4][3]+=x[i][j]; },for(i=0;i<5;i++){ for(j=0;j<4;j++) pri

22、ntf("%5d\t",x[i][j]); printf("\n"); }},5.3 字符數(shù)組和字符串字符數(shù)組定義,字符數(shù)組的初始化逐個字符賦值用字符串常量字符數(shù)組的引用,例 char c[10], ch[3][4];,,,例 輸出一個字符串,#include main(){ char c[10]={'I',' ','a&

23、#39;,'m',' ','a',' ','b','o','y'}; int i; for(i=0;i<10;i++) printf("%c",c[i]); printf("\n");},字符串字符串及其結(jié)束標志無字符串變量,用字符數(shù)組處

24、理字符串字符串結(jié)束標志:‘\0’,字符串的輸入輸出逐個字符I/O: %c整個字符串I/O: %s,例 用%c main(){ char str[5]; int i; for(i=0;i<5;i++) scanf(“%c”, &str[i]); for(i=0;i<5;i++) printf(“%c”, str[

25、i]);},例 用%s main(){ char str[5]; scanf(“%s”, str); printf(“%s”, str);},用字符數(shù)組名,不要加&輸入串長度<數(shù)組維數(shù)遇空格或回車結(jié)束自動加‘\0’,用字符數(shù)組名,遇‘\0’結(jié)束,例 main( ) { char a[5]={‘H’,’e’,’l’,’l’,’o’};

26、 printf(“%s”,a); },,例 main( ) { char a[ ]=“Hello”; printf(“%s”,a); },結(jié)果:Hello#-=*,結(jié)果:Hello,用“%s”輸出時,遇‘\0’結(jié)束,,main(){ char a[]={'h','e','l',&

27、#39;\0','l','o','\0'}; printf("%s",a);},例,輸出:hel,數(shù)組中有多個‘\0’時,遇第一個結(jié)束,main(){ int i; char a[5]; scanf("%s",a); for(i=0;i<5;i++) printf("%d,&qu

28、ot;,a[i]);},運行情況:(1)若輸入 hel , 正常(2)若輸入 hell , 正常(3)若輸入 hello , 用%s 輸出時,會出現(xiàn)問題,,輸入字符串長度<數(shù)組維數(shù),,例 字符串輸入舉例,#include main(){ char a[15],b[5],c[5]; scanf("%s%s%s",a,b,c); printf("a=%s\nb=%s\nc

29、=%s\n",a,b,c); scanf("%s",a); printf("a=%s\n",a);},運行情況:輸入:How are you?輸出:a=How b=are c=you?輸入:How are you?輸出:a=How,scanf中%s輸入時,遇空格或回車結(jié)束,運行情況:輸入:How are

30、you?,例 若準備將字符串“This is a string.”記錄下來,錯誤的輸入語句為:(A)scanf(“%20s”,s);(B)for(k=0;k<17;k++) s[k]=getchar();(C)while((c=getchar())!=‘\n’) s[k++]=c;,,常用的字符串處理函數(shù)包含在頭文件 string.h,字符串

31、輸出函數(shù)puts格式:puts(字符數(shù)組)功能:向顯示器輸出字符串(輸出完,換行)說明:字符數(shù)組必須以‘\0’結(jié)束,,字符串輸入函數(shù)gets格式:gets(字符數(shù)組)功能:從鍵盤輸入一以回車結(jié)束的字符串放入字符數(shù)組中, 并自動加‘\0’說明:輸入串長度應小于字符數(shù)組維數(shù),例 #include main( ) { char string[80];

32、 printf(“Input a string:”); gets(string); puts(string); }輸入: How are you?輸出: How are you ?,,字符串連接函數(shù)strcat格式:strcat(字符數(shù)組1,字符數(shù)組2)功能:把字符數(shù)組2連到字符數(shù)組1后面返值:返回字符數(shù)組1的首地址說明:?字符數(shù)組1必

33、須足夠大 ?連接前,兩串均以‘\0’結(jié)束;連接后,串1的‘\0’取消, 新串最后加‘\0’,字符串拷貝函數(shù)strcpy格式:strcpy(字符數(shù)組1,字符串2)功能:將字符串2,拷貝到字符數(shù)組1中去返值:返回字符數(shù)組1的首地址說明:?字符數(shù)組1必須足夠大 ?拷貝時‘\0’一同拷貝 ?不能使用賦值語句為一個字符數(shù)組賦值,例 ch

34、ar str1[20],str2[20]; str1={“Hello!”}; (?) str2=str1; (?),,,例 strcpy與strcat舉例,#include #include void main(){ char destination[25]; char blank[] = " ",

35、c[]= "C++", turbo[] = "Turbo"; strcpy(destination, turbo); strcat(destination, blank); strcat(destination, c); printf("%s\n", destination);},Turbo C++,字符串比較函數(shù)strcmp格

36、式:strcmp(字符串1,字符串2)功能:比較兩個字符串比較規(guī)則:對兩串從左向右逐個字符比較(ASCII碼), 直到遇到不同字符或‘\0’為止返值:返回int型整數(shù),a. 若字符串1 字符串2, 返回正整數(shù) c. 若字符串1== 字符串2, 返回零說明:字符串比較不能用“==”,必須用strcmp,,字符串長

37、度函數(shù)strlen格式:strlen(字符數(shù)組)功能:計算字符串長度返值:返回字符串實際長度,不包括‘\0’在內(nèi),例 對于以下字符串,strlen(s)的值為:(1)char s[10]={‘A’,‘\0’,‘B’,‘C’,‘\0’,‘D’};(2)char s[ ]=“\t\v\\\0will\n”;(3)char s[ ]=“\x69\082\n”;,答案:1 3 1,,How are you?Hel

38、lo!Len1=6,Len2=12,Len3=18,Ch6_23.c,應用舉例,例 輸入一行字符,統(tǒng)計其中有多少個單詞,,,,#include main(){ char string[81]; int i,num=0,word=0; char c; gets(string); for(i=0;(c=string[i])!='\0';i++) if(c=='

39、 ') word=0; else if(word==0) { word=1; num++; } printf("There are %d words \ in the line\n",num);},,,例 有三個字符串,找出其中最大者,#include #include main(){ char string[20],str[3][

40、20]; int i; for(i=0;i0)strcpy(string,str[0]); else strcpy(string,str[1]); if(strcmp(str[2],string)>0)strcpy(string,str[2]); printf("\nThe largest string \ is:\n%s\n",str

41、ing);},#include main(){ int k , a[10]; for(k=0;k<10;k++) scanf(“%d”,&a[k]); for(k=0;k<10;k++) sum+=a[k]; printf(“Average is %d\n”,sum/10);},例 比較 int a[2][3]={

42、{5,6},{7,8}}; 與 int a[2][3]={5,6,7,8};,例 int a[][10]; float f[2][]={1.2 ,2.2};,例 int a[5]; a={2,4,6,8,10};,例 int a[10]; float i=3; a[i]=10;,例 char name[0];

溫馨提示

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

評論

0/150

提交評論