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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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++) //數組元素求和

{ sum+=a[j];

} printf("該一維數組的最大值是:%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個元素的數組,要求按遞增的次序排序第一步:從n個數中找到最小數的下標,退出內循環(huán)后,最小數與第一個數交換位置,通過這一趟排序,第一個數位置已經確定好。第二步:除已排序的數外,在剩下的n-1個元素中再按步驟一的方法選出第二小的數,與未排序數中的第一個數交換位置。第三步:重復步驟二,最后構成遞增數列。待排序數組第一次排序: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代表數列中的最小值,k代表目前min的位置

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

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

{printf("請輸入數值:"); 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排序后的數組內容為:\n"); //輸出排好序的結果

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

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

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

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

{printf("請輸入數值:"); 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數據排序后為\n"); for(i=1;i<=n;i++) {printf("%d",data[i]); }}提示冒泡法可以改進以提高效率,減少排序次數。若某趟排序中數組沒有發(fā)生交換,說明數組已有序,不必再繼續(xù)排序。為了判斷其有序性,可以增加一個變量來觀察有無交換。若某趟沒有發(fā)生交換,說明數組已經有序,結束排序。16插入和刪除數據在已排序的數組中插入一個元素第一步:要查找待插入數據在數組中的位置k。第二步:從最后一個元素開始往前直到下標為k的元素依次往后移動下一個位置。第二步:從最后一個元素開始往前直到下標為k的元素依次往后移動下一個位置。75314刪除數據的過程則恰好與插入的過程相反,如果需要從某個數列中刪掉一個值,則先從中找到要刪除的元素位置,假設為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ī)律數組

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論