版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年商業(yè)合作延續(xù)協(xié)議樣本
- 2024年短期資金借貸協(xié)議
- 2024年房產(chǎn)居間代理銷售協(xié)議模板
- 2024年高品質(zhì)外墻保溫施工服務(wù)協(xié)議
- 危險廢棄物處理行業(yè)市場前景分析及發(fā)展趨勢
- 2024年適用大型貨車租賃協(xié)議格式
- 教師教育轉(zhuǎn)型的必要性
- 2024款斷橋鋁門窗銷售協(xié)議模板
- 2024常用關(guān)聯(lián)企業(yè)資金借用協(xié)議樣本
- 2024年金礦開采合作協(xié)議
- 閥門安裝使用說明書【精選文檔】
- 2022電子政務(wù)內(nèi)網(wǎng)使用管理人員安全保密承諾書
- 土地增值稅清算底稿(中稅協(xié)版)
- 外貿(mào)報關(guān)用發(fā)票、裝箱單、合同、報關(guān)單模板
- 管理線性規(guī)劃入門形考答案
- 人教版小學(xué)五年級英語上冊第一、二、三單元復(fù)習(xí)Recycle教案
- 高大墻體混凝土澆筑技術(shù)交底(非常詳細(xì))
- 建設(shè)項目全過程工程咨詢管理實施規(guī)劃
- 地方應(yīng)用型高校新工科專業(yè)建設(shè)面臨的問題與對策
- 水平定向鉆施工方案
- 雷諾現(xiàn)象及雷諾氏病PPT課件
評論
0/150
提交評論