高級語言程序設(shè)計(一)_第1頁
已閱讀1頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第6章 數(shù)組,,主要內(nèi)容,一、一維數(shù)組二、二維數(shù)組三、字符數(shù)組,一、一維數(shù)組,一組編了號的變量。1、定義 格式: 類型名 數(shù)組名[常量表達式]; int a[5]; float b[3*2];,a,一、一維數(shù)組,2、數(shù)組元素的引用 格式: 數(shù)組名[下標] 下標:從0開始 如:a[1],一、一維數(shù)組,3、數(shù)組元素的賦值(1)定義時賦值

2、 int a[3]={1,2,3},b[4]={0},c[]={1,2,3,4}; (2)程序運行中賦值 a[0]=1; for(i=0;i<=2;i++) scanf("%d",&a[i]); //從鍵盤上輸入3個數(shù),一、一維數(shù)組,4、實例例1 從十個數(shù)中查找最大數(shù)。,a,一、一維數(shù)組,max=a[0];if (max&l

3、t;a[1]) max=a[1];if (max<a[2]) max=a[2];if (max<a[3]) max=a[3]; if (max<a[4]) max=a[4];if (max<a[5]) max=a[5]; if (max<a[6]) max=a[6];if (max<a[7]) max=a[7];if (max<a[8]) max=a[

4、8];if (max<a[9]) max=a[9];,a,,max=a[0];for(i=1;i<=9;i++) if (max<a[i]) max=a[i];,一、一維數(shù)組,#include void main(){ int i, max,a[10]; for(i=0;i<=9;i++) scanf(“%d”,&a[i]); max=a[0];

5、 for(i=1;i<=9;i++) if (max<a[i]) max=a[i]; printf(“MAX is %d”,max);},一、一維數(shù)組,例2 對n個數(shù)按從小到大的順序排列。起泡排序法:將相鄰兩個數(shù)比較,將小的數(shù)調(diào)到前頭。,a,,,,,,第一趟:最大的數(shù)調(diào)到了最后,一、一維數(shù)組,例2 對n個數(shù)按從小到大的順序排列。起泡排序法:將相鄰兩個數(shù)比較,將小的數(shù)調(diào)到前頭

6、。,a,if (a[0]>a[1]) a[0]a[1] ;if (a[1]>a[2]) a[1]a[2] ;if (a[2]>a[3]) a[2]a[3] ;if (a[3]>a[4]) a[3]a[4] ;if (a[4]>a[5]) a[4]a[5] ;,,for(j=0;ja[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; },一

7、、一維數(shù)組,,for(j=0;ja[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t;},for(j=0;ja[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t;},for(j=0;ja[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t;},for(j=0;ja[j+1]) { t=a[j]; a[j]=a[j+1];

8、a[j+1]=t;},for(i=0; ia[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t;},一、一維數(shù)組,#include void main(){ int i, max,a[10]; for(i=0;ia[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t;} printf(“the sorted num

9、bers:\n”); for(i=0;i<=9;i++) printf(“%d ”, a[i]);},一、一維數(shù)組,例3 在n個數(shù)中查找是否存在一個數(shù) x 。折半查找法: x=45,a,,,i,j,,mid,x=a[mid]?,一、一維數(shù)組,思路:,給數(shù)組a[15]賦值 ;,讀入x的值;,while (i<j),{,},mid=(i+j)/2;,if ( x==a[mid]

10、 ),{printf("%d在第%d位",a[mid],mid); break;},else if (x>a[mid]) i=mid+1;,else j=mid-1;,if (i>j) printf("無此元素");,i=0; j=14;,一、一維數(shù)組,#include void main() { int a[15]={1,2,3,4,5,6,7,

11、8,9,10,11,12,13,14,15}; int i,j,x,mid; scanf("%d",&x); i=0;j=14; while(ia[mid]) i=mid+1; else j=mid-1; } if(i>j) printf("無此元素"); },二、

12、二維數(shù)組,1、定義格式: 類型 數(shù)組名[常量表達式][常量表達式]; int a[3][3];,二、二維數(shù)組,2、數(shù)組元素的引用 int a[3][2]; a[0][1]=8;,a[0][0],a[0][1],a[1][0],a[1][1],a[2][0],a[2][1],二、二維數(shù)組,3、賦值 int a[2][2]={{1,2},{3,4}}; a[0][0]

13、=1; for(i=0;i<=1;i++) for(j=0;j<=1;j++) a[i][j]=i+j;,二、二維數(shù)組,4、實例例4 查找矩陣中的最大數(shù)。,max=-1,r=0,c=0,if (max<a[0][0]) max=a[0][0];,if (max<a[0][1]) max=a[0][1];,if (max

14、<a[0][2]) max=a[0][2];,if (max<a[2][2]) max=a[2][2];,for(j=0;j<=2;j++) if (max<a[0][j]) {max=a[0][j]; r=0; c=j; },..........,for(i=0;i<=2;i++),for(j=0;j

15、<=2;j++) if (max<a[i][j]) {max=a[i][j]; r=i; c=j; },二、二維數(shù)組,例5 矩陣的加法。,for(i=0;i<=2;i++) for(j=0;j<=2;j++) a[i][j]+=b[i][j];,二、二維數(shù)組,練習: 矩陣的各元素之和。,for(i=

16、0;i<=2;i++) for(j=0;j<=2;j++) ?,三、字符數(shù)組,1、定義 char c1[5]; int c2[5]; c1[0]='a'; c2[0]='a';,三、字符數(shù)組,2、字符數(shù)組的初始化 char c[10]={'I','a&#

17、39;,'m','a','b','o','y'}; for(i=0;i<=9;i++) scanf("%c",&c[i]);,三、字符數(shù)組,3、字符串和字符串結(jié)束標志 字符串用字符數(shù)組來表示,字符串標志為'\0',char c[10]="I am a bo

18、y";,等價于,char c[10]={'I','a','m','a','b','o','y','\0'};,三、字符數(shù)組,4、字符數(shù)組的輸入和輸出 char c[10]; scanf("%s",c); printf("%s",

19、c);,三、字符數(shù)組,5、字符串處理函數(shù)(1) puts(str) :輸出字符串(2) gets(str) : 輸入字符串(3) strcat(str1,str2) : 連接字符串(4) strcpy(str1,str2)、strncpy(str1,str2) : 字符串復(fù)制(5) strcmp(str1,str2) : 比較字符串(6) strlen(str) : 測字符串長度(7) strlwr(str)

20、: 轉(zhuǎn)換為小寫(8) strupr(str) : 轉(zhuǎn)換為大寫,三、字符數(shù)組,6、實例例6 輸入一行字符,統(tǒng)計其中有多少個單詞,單詞間用空格相隔。,,word: 0--未出現(xiàn)新詞,1--新詞開始,word=0,word=1num++;,word=0,直到遇到'\0'結(jié)束,三、字符數(shù)組,#include void main() { char string[81],c; int i,num,wo

21、rd=0; gets(string); for(i=0;(c=string[i])!='\0';i++) if (c==' ') word=0; else if (word==0) {word=1; num++;} printf("單詞總數(shù)為%d",num);

22、},三、字符數(shù)組,例7 從鍵盤上輸入身份證號,截取出生年月并輸出。,,三、字符數(shù)組,#include void main() { char string[25]; int i; gets(string); for(i=6;i<=13;i++) c[i-6]=string[i]; c[8]='\0'; printf("出生年月為%s

23、",c); },四、綜合實例,習題1 有一個已排好序的數(shù)組,要求輸入一個數(shù)后,按原來排序的規(guī)律將它插入數(shù)組中。,,x=87,95,98,90,89,a[10]=a[9],a,a[9]=a[8],a[8]=a[7],a[7]=a[6],a[6]=x,,a[i+1]=a[i],i: 6~9,,a[6]=x,習題2 找出一個二維數(shù)組中的鞍點,即該位置上的元素在該行上最大、在該列上最小。也可能沒有鞍點。 a[3][3]:

24、 8 1 6 3 5 7 4 9 2,四、綜合實例,對第一行:k=0,h=0,if a[k][h]<a[0][1] h=1;,if a[k][h]<a[0][2] h=2;,k=0,h=0,for(j=1;j<3;j++) if (a[k][h]<a[0][j]) h=j;,if a[k][h]>a[0][h]

25、 break;,if a[k][h]>a[1][h] break;,if a[k][h]>a[2][h] break;,j=0;while (a[k][h]<a[j][h] && j<3) j++;,if (j>3) a[k][h]是鞍點;,for(i=0;i<3;i++),{for(j=1;j<3;j++)

26、 if (a[k][h]<a[i][j]) h=j;,if (i>3 && j>3) 沒有鞍點;,},四、綜合實例,習題3 有一篇文章,共有3行文字,每行有80個字符。要求分別統(tǒng)計出其中英文大寫字母、小寫字母、數(shù)字、空格以及其它字符的個數(shù)。,lsff UYIJ n IUJ ;k;sdf,ABCFD fgthhy uh8ghj* 9,dffd56678 768 ,;.k,a[3][80]:,

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論