




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第6章數(shù)組主講教師:賀愛香理論知識數(shù)組概述1一維數(shù)組
2二維數(shù)組3
字符數(shù)組與字符串4例初始關(guān)鍵字3849761397n=665第一趟384965977613第二趟384965971376第三趟384913976576第四趟381349976576第五趟133849976576【例1】用冒泡法對10個數(shù)排序(從小到大)【例1】用冒泡法對10個數(shù)排序(從小到大)a[0]不用,數(shù)組下標(biāo)從1開始(1)比較第一個數(shù)與第二個數(shù),若為逆序a[1]>a[2],則交換;然后比較第二個數(shù)與第三個數(shù);依次兩兩比較,直至第n-1個數(shù)和第n個數(shù)比較為止——第一趟起泡排序,比較n-1次,結(jié)果最大的數(shù)被安置在最后一個元素位置上(2)對前n-1個數(shù)進(jìn)行第二趟起泡排序,比較n-2次,結(jié)果使次大的數(shù)被安置在第n-1個元素位置(3)重復(fù)上述過程,共經(jīng)過n-1趟起泡排序后,排序結(jié)束(4)結(jié)論:需要n-1趟起泡排序,第j趟需要n-j次比較排序過程總結(jié):兩兩比較,大者下沉,小者上浮#include<stdio.h>voidmain(){inta[11],i,n,t;//i表示數(shù)組下標(biāo),n表示遍歷次數(shù),t用來交換數(shù)據(jù)
printf(“Input10numbers:\n”);for(i=1;i<11;i++) scanf(“%d”,&a[i]);printf(“\n”);for(n=1;n<=9;n++)//控制趟數(shù) for(i=1;i<=10-n;i++)
//控制比較的次數(shù) if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("Thesortednumbers:\n");for(i=1;i<11;i++) printf("%d",a[i]);printf(“\n”);}起泡排序的核心程序段分析for(n=1;n<=9;n++)for(i=1;i<=10-n;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}外層循環(huán)的變量n表示總的起泡的趟數(shù)內(nèi)層循環(huán)實(shí)現(xiàn)一趟起泡操作交換相鄰數(shù)組元素的值思考:對于N個數(shù),采用起泡排序,總共要比較多少次?
對于本來有序的序列,要比較多少次?根據(jù)起泡排序的思想,寫出數(shù)列
127683945一趟起泡排序后的序列?(N-1)+(N-2)+….+1=N(N-1)/2(N-1)+(N-2)+….+1=N(N-1)/2根據(jù)起泡排序的思想,寫出數(shù)列(小到大)
127683945一趟起泡排序后的序列?127683945126738459126738945126739854ABCD提交單選題1分【例2】用簡單選擇法對10個數(shù)排序(1)首先通過n-1次比較,從n個數(shù)中找出最小的,將它與第一個數(shù)交換—第一趟選擇排序,結(jié)果最小的數(shù)被安置在第一個元素位置上(2)再通過n-2次比較,從剩余的n-1個數(shù)中找出關(guān)鍵字次小的記錄,將它與第二個數(shù)交換—第二趟選擇排序(3)重復(fù)上述過程,共經(jīng)過n-1趟排序后,排序結(jié)束排序過程例初始:[49386597761327]kji=11349一趟:13[386597764927]i=22738二趟:1327[6597764938]三趟:132738[97764965]四趟:13273849[769765]五趟:1327384965[9776]六趟:132738496576[97]kkkkjjjjjjjjjj輸入n個數(shù)給a[1]到a[n]fori=1ton-1forj=i+1tona[j]<a[k]真假k=j輸出a[1]到a[n]k=ia[i]
a[k]i!=k真假#include<stdio.h>voidmain(){inta[11],i,j,k,x;printf("Input10numbers:\n");for(i=1;i<11;i++)scanf("%d",&a[i]);printf("\n");for(i=1;i<10;i++){k=i;for(j=i+1;j<=10;j++)if(a[j]<a[k])k=j;if(i!=k){x=a[i];a[i]=a[k];a[k]=x;}}printf("Thesortednumbers:\n");for(i=1;i<11;i++) printf("%d",a[i]);}簡單選擇排序的核心程序段分析for(i=1;i<10;i++){k=i;for(j=i+1;j<=10;j++)if(a[j]<a[k])k=j;if(i!=k){x=a[i];a[i]=a[k];a[k]=x;}}外層循環(huán)的變量i表示總的排序的趟數(shù)K記錄第i趟排序中最小值的位置查找第i趟排序中最小值的位置,記錄在k中交換a[i]和a[k]的值
二維數(shù)組二維數(shù)組的聲明二維數(shù)組的初始化二維數(shù)組元素的引用二維數(shù)組的應(yīng)用
二維數(shù)組定義格式:數(shù)據(jù)類型數(shù)組名[常量表達(dá)式1][常量表達(dá)式2]={元素初值列表};說明:
常量表達(dá)式1表示行值,常量表達(dá)式2表示列值
inta[4][5];floatf[5][2*4];存放方式:按行存放(存放時,最右邊的下標(biāo)變化最快)intd[3][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};d[0]d[0][0]d[0][1]d[0][2]d[0][3]d[0][4]
d[1][0]d[1][1]d[1][2]d[1][3]d[1][4]
d[2][0]d[2][1]d[2][2]d[2][3]d[2][4]d[1]d[2]123456789101112131415123456789101112131415d[0]d[1]d[2]由逗號分割,前幾行的元素必須連續(xù)填滿inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};intb[3][4]={1,2,3,4,5,6,7,8};234567891011122345678
0000用{}將每行元素括起來inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};intb[3][4]={{1,2,3,4},{5,6,7,8}};用{}將每行元素括起來,對部分元素賦初值inta[3][4]={{1,2},{3},{8}};inta[3][4]={1,2,3,8};≠注意:和一維數(shù)組一樣,當(dāng)初值的個數(shù)超過數(shù)組元素個數(shù)時,編譯時會產(chǎn)生錯誤。
eg:intn[2][3]={1,2,3,4,5,6,7};//編譯錯誤二維數(shù)組的初始化二維數(shù)組的初始化可以省略第一維的長度,即省略行數(shù)。
eg:intn[3][3]={1,2,3,4,5,6,7,8,9};
可以寫成intn[][3]={1,2,3,4,5,6,7,8,9};
intn[][3]={1,2,3,4,5};等價(jià)于intn[2][3]={{1,2,3},{4,5,0}};
因?yàn)槎S數(shù)組各元素是“按行存放”的,所以系統(tǒng)能根據(jù)初值總數(shù)和每行元素個數(shù)計(jì)算出行數(shù)。
注意:二維數(shù)組初始化必須要指定第二維長度,因?yàn)椴淮_定每行元素的個數(shù)將無法“按行存放”。
eg:intn[2][]={1,2,3,4,5};//錯誤二維數(shù)組元素的引用
二維數(shù)組元素要用兩個下標(biāo)確定,引用形式為:
數(shù)組名[行下標(biāo)][列下標(biāo)]
若有以下聲明:
intnum[3][4],i=0,j=0;
則num[1][3]、num[i][j]、num[i+1][j+2]都是正確的引用形式。
注意:下標(biāo)不能越界,0~行、列下標(biāo)減1除函數(shù)調(diào)用語句外,其他語句都只能逐個引用數(shù)組元素,不能單獨(dú)用數(shù)組引用整個數(shù)組,不能給數(shù)組整體賦值。數(shù)組先定義,后引用二維數(shù)組元素的引用intnum[3][4],i,j;printf("請輸入12個整數(shù):\n");for(i=0;i<3;i++)//外層循環(huán)變量i控制數(shù)組的行下標(biāo)
{for(j=0;j<4;j++)//內(nèi)層循環(huán)變量j控制數(shù)組的列下標(biāo)
{scanf("%d",&num[i][j]);printf("num[%d][%d]=%-4d",i,j,num[i][j]);}printf("\n");//每輸出一行后換行
}二維數(shù)組操作通常和二重循環(huán)結(jié)合使用。可以通過以下程序段實(shí)現(xiàn)對二維數(shù)組元素的輸入和輸出:二維數(shù)組應(yīng)用舉例23456A456BB[j][i]=A[i][j]例:將一個二維數(shù)組行和列元素互換,存到另一個二維數(shù)組中(轉(zhuǎn)置矩陣)。#defineM3#defineN2voidmain(){inta[N][M]/*={{1,2,3},{4,5,6}}*/;intb[M][N],i,j;printf("arraya:\n");for(i=0;i<N;i++){for(j=0;j<M;j++)
{scanf(("%d",&a[i][j]);printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}printf("\n");}printf("arrayb:\n");for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%5d",b[i][j]);printf("\n");}}
輸出楊輝三角形
11112113311464115101051
………………特點(diǎn):0列和對角線元素都是1
其他元素均為上一行的同列元素與前一列元素之和11112113311464115101051
………………#include<stdio.h>#defineN10main(){inti,j,y[N][N];for(i=0;i<N;i++){y[i][0]=1;y[i][i]=1;}for(i=2;i<N;i++)for(j
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 班級運(yùn)動健康活動的安排計(jì)劃
- 2025年01月2024湖南岳陽市君山區(qū)部分事業(yè)單位公開選調(diào)工作人員3人(第二批)筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解-1
- 電影行業(yè)綠色發(fā)展環(huán)保技術(shù)與市場分析
- 寧夏二級沉淀池施工方案
- 2025年幼兒園中班語言活動標(biāo)準(zhǔn)教案《逃家小兔》
- 夯土墻加構(gòu)造柱施工方案
- 宜賓學(xué)院《外國文學(xué)三》2023-2024學(xué)年第二學(xué)期期末試卷
- 六安職業(yè)技術(shù)學(xué)院《醫(yī)學(xué)科研方法與循證醫(yī)學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖北鐵道運(yùn)輸職業(yè)學(xué)院《普通生物化學(xué)A》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣州應(yīng)用科技學(xué)院《企業(yè)協(xié)同經(jīng)營模擬實(shí)訓(xùn)課》2023-2024學(xué)年第二學(xué)期期末試卷
- 3.1產(chǎn)業(yè)轉(zhuǎn)移對區(qū)域發(fā)展的影響(第1課時) 【知識精研】高二地理課件(湘教版2019選擇性必修2)
- 2025年醫(yī)院實(shí)習(xí)協(xié)議書樣本
- 2025年湖南工程職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 2024年云南中煙工業(yè)有限責(zé)任公司招聘筆試真題
- 2024年山東輕工職業(yè)學(xué)院高職單招語文歷年參考題庫含答案解析
- 2024年哈爾濱電力職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 三一重工全面預(yù)算管理
- 小公司財(cái)務(wù)報(bào)銷制度及報(bào)銷流程
- 《環(huán)境感知技術(shù)》2024年課程標(biāo)準(zhǔn)(含課程思政設(shè)計(jì))
- 2022新教材蘇教版科學(xué)5五年級下冊全冊教學(xué)設(shè)計(jì)
- 2024-2025學(xué)年全國中學(xué)生天文知識競賽考試題庫(含答案)
評論
0/150
提交評論