版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第八章數(shù)組和循環(huán)嵌套12回顧C(jī)語(yǔ)言中數(shù)組的概念一維數(shù)組的聲明、使用二維數(shù)組的概念二維數(shù)組的簡(jiǎn)單使用3目標(biāo)掌握一維數(shù)組和循環(huán)的嵌套使用掌握二維數(shù)組的簡(jiǎn)單應(yīng)用掌握選擇和插入排序了解常用算法4數(shù)組基本操作數(shù)組是一種基本數(shù)據(jù)結(jié)構(gòu),經(jīng)常和循環(huán)結(jié)合使用。對(duì)數(shù)組的操作:查找、排序、插入、刪除1625990235查找查找數(shù)組中的最大值。162599023假設(shè)數(shù)組中的第一個(gè)數(shù)是最大數(shù),存放在一個(gè)變量max中Max然后max和數(shù)組中的所有元素逐個(gè)比較2390如果比max大,則將當(dāng)前元素的值覆蓋max如果比max小,則繼續(xù)訪問(wèn)下一個(gè)元素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í)間設(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個(gè)元素的數(shù)組,要求按遞增的次序排序第一步:從n個(gè)數(shù)中找到最小數(shù)的下標(biāo),退出內(nèi)循環(huán)后,最小數(shù)與第一個(gè)數(shù)交換位置,通過(guò)這一趟排序,第一個(gè)數(shù)位置已經(jīng)確定好。第二步:除已排序的數(shù)外,在剩下的n-1個(gè)元素中再按步驟一的方法選出第二小的數(shù),與未排序數(shù)中的第一個(gè)數(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ù)值的個(gè)數(shù):"); //輸入數(shù)組n的個(gè)數(shù)
scanf("%d",&n);printf("\n"); for(i=1;i<=n;i++) //輸入n個(gè)數(shù)值
{printf("請(qǐng)輸入數(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個(gè)元素的數(shù)組,要求按遞增的次序排序第一步:從第一個(gè)元素開(kāi)始,對(duì)數(shù)組中兩兩相鄰的元素比較,即a[0]與a[1]比較,若為逆序,則a[0]與a[1]交換,然后a[1]與a[2]比較……直到最后a[n-2]與a[n-1]比較,這時(shí)最大數(shù)沉底成為數(shù)組中的最后一個(gè)元素,一些較小的元素如同氣泡一樣上浮一個(gè)位置,這是第一次排序。第二步:然后對(duì)a[0]到a[n-2]的n-1個(gè)元素進(jìn)行第一步的操作,次最大數(shù)放入a[n-2]元素內(nèi),完成第二次排序,依次類(lèi)推,進(jìn)行n-1次排序后,所有數(shù)均有序。待排序數(shù)組324979743213排序-冒泡法
#include<stdio.h> voidmain(void){ intdata[50]; inti,j,n,temp; printf("輸入數(shù)值的個(gè)數(shù):"); //輸入n
scanf("%d",&n); printf("\n"); for(i=1;i<=n;i++) //輸入n個(gè)數(shù)值
{printf("請(qǐng)輸入數(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],則兩個(gè)值交換
{ 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]); }}提示冒泡法可以改進(jìn)以提高效率,減少排序次數(shù)。若某趟排序中數(shù)組沒(méi)有發(fā)生交換,說(shuō)明數(shù)組已有序,不必再繼續(xù)排序。為了判斷其有序性,可以增加一個(gè)變量來(lái)觀察有無(wú)交換。若某趟沒(méi)有發(fā)生交換,說(shuō)明數(shù)組已經(jīng)有序,結(jié)束排序。16插入和刪除數(shù)據(jù)在已排序的數(shù)組中插入一個(gè)元素第一步:要查找待插入數(shù)據(jù)在數(shù)組中的位置k。第二步:從最后一個(gè)元素開(kāi)始往前直到下標(biāo)為k的元素依次往后移動(dòng)下一個(gè)位置。第二步:從最后一個(gè)元素開(kāi)始往前直到下標(biāo)為k的元素依次往后移動(dòng)下一個(gè)位置。75314刪除數(shù)據(jù)的過(guò)程則恰好與插入的過(guò)程相反,如果需要從某個(gè)數(shù)列中刪掉一個(gè)值,則先從中找到要?jiǎng)h除的元素位置,假設(shè)為k,然后依次將該元素后面的元素向前移動(dòng)一個(gè)單元(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++) //通過(guò)程序自動(dòng)形成9個(gè)元素的有規(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--) //從最后的元素開(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ù)組程序事例輸入兩個(gè)矩陣A、B的值,求C=A+B,并顯示結(jié)果。+=數(shù)學(xué)意義上的矩陣在計(jì)算機(jī)世界中可以用二維數(shù)組來(lái)代表。則對(duì)于矩陣C=A+B有:A、B矩陣相加,其實(shí)質(zhì)就是將兩矩陣對(duì)應(yīng)元素相加(c[0][0]=a[0][0]+b[0][0]),兩個(gè)矩陣能相加的條件是有相同的行、列數(shù)。19插入和刪除數(shù)據(jù)#include<stdio.h> voidmain(){ intA[4][4],B[4][4],C[4][4]; inti,j; printf("請(qǐng)輸入數(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("請(qǐng)輸入數(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《習(xí)題及答案》課件
- 藥物治療頸外動(dòng)脈閉塞長(zhǎng)期效果-洞察分析
- 線下體驗(yàn)式營(yíng)銷(xiāo)升級(jí)-洞察分析
- 水污染生物降解機(jī)制-洞察分析
- 虛擬農(nóng)場(chǎng)規(guī)劃與管理-洞察分析
- 心臟擴(kuò)大康復(fù)訓(xùn)練策略-洞察分析
- 先進(jìn)制造技術(shù)在航空應(yīng)用-洞察分析
- 脫硫自動(dòng)化控制-洞察分析
- 《v消費(fèi)者市場(chǎng)分析》課件
- 糖果巧克力市場(chǎng)趨勢(shì)分析-洞察分析
- 專(zhuān)題01:基礎(chǔ)知識(shí)綜合(解析版)-2022-2023學(xué)年七年級(jí)語(yǔ)文下學(xué)期期中專(zhuān)題復(fù)習(xí)(江蘇專(zhuān)用)
- 日結(jié)工協(xié)議書(shū)日結(jié)工用工協(xié)議
- 行政管理能力提升培訓(xùn)
- 全新聘用項(xiàng)目經(jīng)理勞務(wù)協(xié)議
- 浙江省金華市東陽(yáng)市 2024 年初中學(xué)業(yè)水平考試模擬試卷 科學(xué)試題
- 【人教版】九年級(jí)化學(xué)上冊(cè)期末試卷(匯編)
- 中國(guó)歷史地理智慧樹(shù)知到期末考試答案章節(jié)答案2024年泰山學(xué)院
- 2023年檢驗(yàn)檢測(cè)機(jī)構(gòu)質(zhì)量手冊(cè)(依據(jù)2023年版評(píng)審準(zhǔn)則編制)
- 眼視光學(xué)理論和方法智慧樹(shù)知到期末考試答案2024年
- 2023年玻璃廠年終工作總結(jié)
- 專(zhuān)題06 習(xí)作-2023-2024學(xué)年統(tǒng)部編版語(yǔ)文六年級(jí)上冊(cè)期末備考真題分類(lèi)匯編
評(píng)論
0/150
提交評(píng)論