《C語言程序設(shè)計》08 數(shù)組和循環(huán)嵌套寫字字帖_第1頁
《C語言程序設(shè)計》08 數(shù)組和循環(huán)嵌套寫字字帖_第2頁
《C語言程序設(shè)計》08 數(shù)組和循環(huán)嵌套寫字字帖_第3頁
《C語言程序設(shè)計》08 數(shù)組和循環(huán)嵌套寫字字帖_第4頁
《C語言程序設(shè)計》08 數(shù)組和循環(huán)嵌套寫字字帖_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第八章數(shù)組和循環(huán)嵌套12回顧C語言中數(shù)組的概念一維數(shù)組的聲明、使用二維數(shù)組的概念二維數(shù)組的簡單使用3目標(biāo)掌握一維數(shù)組和循環(huán)的嵌套使用掌握二維數(shù)組的簡單應(yīng)用掌握選擇和插入排序了解常用算法4數(shù)組基本操作數(shù)組是一種基本數(shù)據(jù)結(jié)構(gòu),經(jīng)常和循環(huán)結(jié)合使用。對數(shù)組的操作:查找、排序、插入、刪除1625990235查找查找數(shù)組中的最大值。162599023假設(shè)數(shù)組中的第一個數(shù)是最大數(shù),存放在一個變量max中Max然后max和數(shù)組中的所有元素逐個比較2390如果比max大,則將當(dāng)前元素的值覆蓋max如果比max小,則繼續(xù)訪問下一個元素6定義#include<stdio.h>#include<stdlib.h>#include<time.h>voidmain(){ inta[10]; intsum=0; //定義最大值max

printf("一維數(shù)組求和演示:\n"); srand((unsigned)time(NULL)); //用當(dāng)前的時間設(shè)置rand函數(shù)的種子值

for(inti=0;i<10;i++) 7求和{ a[i]=rand()%101; printf("a[%d]=%d\n",i,a[i]);}

for(intj=0;j<10;j++) //數(shù)組元素求和

{ sum+=a[j];

} printf("該一維數(shù)組的最大值是:%d\n",sum);}8排序-選擇法842098281a[0]a[1]a[2]a[3]a[4]a[5]142098288a[0]a[1]a[2]a[3]a[4]a[5]148202898a[0]a[1]a[2]a[3]a[4]a[5]假定有n個元素的數(shù)組,要求按遞增的次序排序第一步:從n個數(shù)中找到最小數(shù)的下標(biāo),退出內(nèi)循環(huán)后,最小數(shù)與第一個數(shù)交換位置,通過這一趟排序,第一個數(shù)位置已經(jīng)確定好。第二步:除已排序的數(shù)外,在剩下的n-1個元素中再按步驟一的方法選出第二小的數(shù),與未排序數(shù)中的第一個數(shù)交換位置。第三步:重復(fù)步驟二,最后構(gòu)成遞增數(shù)列。待排序數(shù)組第一次排序:142098288a[0]a[1]a[2]a[3]a[4]a[5]148982820a[0]a[1]a[2]a[3]a[4]a[5]148202898a[0]a[1]a[2]a[3]a[4]a[5]第二次排序:第五次排序:第三次排序:第四次排序:9#include<stdio.h> voidmain(){intdata[50];inti,j,n,temp,min,k;//min代表數(shù)列中的最小值,k代表目前min的位置

printf("輸入數(shù)值的個數(shù):"); //輸入數(shù)組n的個數(shù)

scanf("%d",&n);printf("\n"); for(i=1;i<=n;i++) //輸入n個數(shù)值

{printf("請輸入數(shù)值:"); printf("data[%d]=",i);scanf("%d",&data[i]);}排序-選擇法10排序-選擇法for(i=1;i<n;i++){ min=data[i]; //記錄min為data[i] k=i; //記錄min的位置為k for(j=i+1;j<=n;j++){ if(data[j]<min) //比較data[j]是否小于min { min=data[j];//將min記錄為data[j] k=j; //將min的位置k改為j } } temp=data[i]; //將min與data[i]互換

data[i]=data[k]; data[k]=temp;}11排序-選擇法 printf("\n排序后的數(shù)組內(nèi)容為:\n"); //輸出排好序的結(jié)果

for(i=1;i<=n;i++)

{printf("%d",data[i]); } printf("\n");}12排序-冒泡法假定有n個元素的數(shù)組,要求按遞增的次序排序第一步:從第一個元素開始,對數(shù)組中兩兩相鄰的元素比較,即a[0]與a[1]比較,若為逆序,則a[0]與a[1]交換,然后a[1]與a[2]比較……直到最后a[n-2]與a[n-1]比較,這時最大數(shù)沉底成為數(shù)組中的最后一個元素,一些較小的元素如同氣泡一樣上浮一個位置,這是第一次排序。第二步:然后對a[0]到a[n-2]的n-1個元素進行第一步的操作,次最大數(shù)放入a[n-2]元素內(nèi),完成第二次排序,依次類推,進行n-1次排序后,所有數(shù)均有序。待排序數(shù)組324979743213排序-冒泡法

#include<stdio.h> voidmain(void){ intdata[50]; inti,j,n,temp; printf("輸入數(shù)值的個數(shù):"); //輸入n

scanf("%d",&n); printf("\n"); for(i=1;i<=n;i++) //輸入n個數(shù)值

{printf("請輸入數(shù)值:"); printf("data[%d]=",i); scanf("%d",&data[i]);

}14排序-冒泡法

for(i=1;i<=n;i++){ for(j=n;j>i;j--) {if(data[j-1]>data[j])//若data[j-1]>data[j],則兩個值交換

{ temp=data[j-1]; data[j-1]=data[j];

data[j]=temp; } }}15排序-冒泡法 printf("\n數(shù)據(jù)排序后為\n"); for(i=1;i<=n;i++) {printf("%d",data[i]); }}提示冒泡法可以改進以提高效率,減少排序次數(shù)。若某趟排序中數(shù)組沒有發(fā)生交換,說明數(shù)組已有序,不必再繼續(xù)排序。為了判斷其有序性,可以增加一個變量來觀察有無交換。若某趟沒有發(fā)生交換,說明數(shù)組已經(jīng)有序,結(jié)束排序。16插入和刪除數(shù)據(jù)在已排序的數(shù)組中插入一個元素第一步:要查找待插入數(shù)據(jù)在數(shù)組中的位置k。第二步:從最后一個元素開始往前直到下標(biāo)為k的元素依次往后移動下一個位置。第二步:從最后一個元素開始往前直到下標(biāo)為k的元素依次往后移動下一個位置。75314刪除數(shù)據(jù)的過程則恰好與插入的過程相反,如果需要從某個數(shù)列中刪掉一個值,則先從中找到要刪除的元素位置,假設(shè)為k,然后依次將該元素后面的元素向前移動一個單元(a[k]=a[k+1],a[k+1]=a[k+2]……,a[n-1]=a[n]),就可以完成刪除操作。17#include<stdio.h> voidmain(void){ inta[10],i,k,x=15; for(i=0;i<9;i++) //通過程序自動形成9個元素的有規(guī)律數(shù)組

a[i]=i*3+2; for(k=0;k<9;k++) //查找欲插入數(shù)在數(shù)組中的位置

{if(x<a[k]) //找到插入的位置k break;} for(i=8;i>=k;i--) //從最后的元素開始往后移,騰出位置

{a[i+1]=a[i];} a[k]=x; //把數(shù)值插入數(shù)組

for(i=0;i<=9;i++) //輸出數(shù)組內(nèi)容

printf("%d",a[i]);}18二維數(shù)組程序事例輸入兩個矩陣A、B的值,求C=A+B,并顯示結(jié)果。+=數(shù)學(xué)意義上的矩陣在計算機世界中可以用二維數(shù)組來代表。則對于矩陣C=A+B有:A、B矩陣相加,其實質(zhì)就是將兩矩陣對應(yīng)元素相加(c[0][0]=a[0][0]+b[0][0]),兩個矩陣能相加的條件是有相同的行、列數(shù)。19插入和刪除數(shù)據(jù)#include<stdio.h> voidmain(){ intA[4][4],B[4][4],C[4][4]; inti,j; printf("請輸入數(shù)組A(3x3):\n"); for(i=1;i<=3;i++) { for(j=1;j<=3;j++)

{ printf("a[%d][%d]=",i,j); scanf("%d",&A[i][j]); } }20插入和刪除數(shù)據(jù)printf("請輸入數(shù)組B(3x3):\n"); for(i=1;i<=3;i++) { for(j=1;j<=3;j++) { printf("a[%d][%d]=",i,j);

scanf("%d",&B[i][j]); } }21插入和刪除數(shù)據(jù)for(i=1;i<=3;i++)

溫馨提示

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

評論

0/150

提交評論