版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第9講一維數(shù)組,二維數(shù)組數(shù)組數(shù)組:一組有序數(shù)據(jù)的集合。數(shù)組中的每一個元素都屬于同一個數(shù)據(jù)類型。用一個統(tǒng)一的數(shù)組名和下標來唯一地確定數(shù)組中的元素。一維數(shù)組的定義和引用1.一維數(shù)組的定義類型說明符數(shù)組名[常量表達式];說明:1)數(shù)組名命名規(guī)則與變量名相同;
2)常量表達式不能含變量,不能用圓括??;
3)下標從0開始計算。2.一維數(shù)組元素的引用
數(shù)組必須先定義后引用,并且只能引用數(shù)組元素而不能一次引用整個數(shù)組。數(shù)組元素的表示形式為:
數(shù)組名[下標]下標可以是整型常量或整型表達式。如:
a[0]=a[5]+a[2*3]main(){inti,a[10];for(i=0;i<=9;i++)a[i]=i;/*數(shù)組元素賦值*/for(i=9;i>=0;i--)
printf(“%d”,a[i]);/*逆序輸出各數(shù)組元素*/
printf("\n");}例題:輸出數(shù)組元素運行結(jié)果:98765432103.一維數(shù)組的初始化1).定義數(shù)組時初始化數(shù)組元素。如:
staticinta[10]={0,1,2,…,9};2).可以只給部分元素賦初值。如:
staticinta[10]={0,1,2,3,4};對static數(shù)組,未賦初值則系統(tǒng)默認為0。3).對全部數(shù)組元素賦初值時,可以不指定數(shù)組長度。如:
staticinta[]={1,2,3,4,5};自動定義長度為5。注意:數(shù)組長度與提供的初值個數(shù)不相等時,不能省略數(shù)組長度。4.一維數(shù)組程序舉例main(){inti;static
intf[20]={1,1};for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];
例題1:數(shù)組處理Fibonacci數(shù)列
for(i=0;i<20;i++){if(i%5==0)printf(“\n”);printf("%12d",f[i]);}
printf("\n");}起泡法思路:
將相鄰兩個數(shù)比較,將小的調(diào)到前頭。經(jīng)過1輪比較后,最大的數(shù)已調(diào)到最后一個位置。所以n個數(shù)要比較n-1趟,在第j趟中要進行n-j次比較。例題2:起泡法對10個整數(shù)按由小到大排序
第1次第2次第3次第4次第5次結(jié)果main(){inta[11];
inti,j,t;
printf("input10numbers:\n");for(i=1;i<11;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=1;j<=9;j++)/*10個數(shù)比較9趟*/for(i=1;i<=10-j;i++)/*每趟比較10-j次*/ 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");}輸入:10481265–76100–45123輸出:-76–4501481265100123main(){inta[11]={21,14,63,19,3,16,7,28,34,100};
inttemp1,i,j;
printf("初始數(shù)組如下:\n");for(i=0;i<10;i++) printf("%5d",a[i]);
printf("\n");
例題3:將一組十個數(shù)按由小到大順序排列.(交換法)
for(i=0;i<10;i++)for(j=i+1;j<11;j++)
if(a[j]>a[i]){temp1=a[j];a[j]=a[i];
a[i]=temp1;}for(i=0;i<11;i++) printf("%6d",a[i]);}二維數(shù)組的定義和引用1二維數(shù)組的定義類型說明符數(shù)組名[常量表達式][常量表達式]
floata[3][4],b[5][10];注意:不能寫成floata[3,4],b[5,10];
C語言這種定義二維數(shù)組的方式,使得可以把二維數(shù)組看成一種特殊的一維數(shù)組。如:
a[0]---------a00a01a02a03a a[1]---------a10a11a12a13 a[2]---------a20a21a22a23
即把a看成包含3個元素的一維數(shù)組,而每個元素又是一個包含4個元素的一維數(shù)組。
a[0]---------a00a01a02a03a a[1]---------a10a11a12a13 a[2]---------a20a21a22a23
即把a看成包含3個元素的一維數(shù)組,而每個元素又是一個包含4個元素的一維數(shù)組。二維數(shù)組中元素的排列順序為:按行存放。存放順序:1,2,3行。
a[3][4]C語言允許使用多維數(shù)組,其基礎(chǔ)為二維數(shù)組。如:語句inta[2][3][2];定義一個12個元素的3維數(shù)組。下標變化順序:3,2,1。
1)對二維數(shù)組a[m][n],元素a[i][j]在數(shù)組中的排列位置計算公式為:
i*n+j+1對數(shù)組a[3][4],a[2][1]的位置為:
2*4+1+1=10表示它是第10個元素。
2)對二維數(shù)組a[m][n],元素a[i][j]在數(shù)組中的順序號計算公式為:
i*n+j對數(shù)組a[3][4],a[2][1]的順序號為:
2*4+1=9表示它前面有9個元素。2二維數(shù)組的引用
數(shù)組必須“先定義,后引用”。二維數(shù)組元素的表示形式:數(shù)組名[下標][下標]下標可以是整型表達式。
數(shù)組元素可以出現(xiàn)在表達式中,也可以被賦值。如:
b[1][2]=a[2][3]/2;注意:下標值的范圍。常見錯誤:
inta[3][4];
| a[3][4]=3;a[3][4]指數(shù)組以外的某一存儲單元。main(){inti,j,k,a[2][3][2];for(i=0;i<2;i++) for(j=0;j<3;j++) for(k=0;k<2;k++)
scanf("%d",&a[i][j][k]);for(i=0;i<2;i++)for(j=0;j<3;j++) for(k=0;k<2;k++)printf("a[%d][%d][%d]=%d",i,j,k,a[i][j][k]);}向3維數(shù)組賦值并輸出其全部元素。3二維數(shù)組的初始化1).分行初始化。如:staticinta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};2).也可將數(shù)據(jù)寫在一個花括號內(nèi),系統(tǒng)按排列順序?qū)υ刭x初值。如:staticinta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
3).也可對部分元素賦初值。如staticinta[3][4]={{1},{5},{9}};其結(jié)果為:
100050009000staticinta[3][4]={{1},{0,6},{0,0,11}};
其結(jié)果為:
1000060000110
staticinta[3][4]={{1},{5,6}};其結(jié)果為:
100056000000也可以對第二行不賦初值:如staticinta[3][4]={{1},{},{9}};
4).若對全部元素都賦初值,則定義數(shù)組時對第一維的長度可以不指定,但第二維的長度不能省略。staticinta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};等價于staticinta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
若定義時省略第一維的長度并部分賦初值,則應采用分行賦初值的方法。如:staticinta[][4]={{0,0,3},{},{0,10}};結(jié)果為
0030000001000例題3:把由鍵盤輸入的數(shù)列按相反的順序輸出。#include“stdio.h”main(){
intj,i=0,a[100];
printf("inputsomeintergers(<=100):\n");
printf("endmark--Ctrl+z\n");while(scanf("%d",&a[i])!=EOF)i++;for(j=0,i=i-1;i>=0;j++,i--){if(j%3==0)printf("\n");
printf("%d\t",a[i]);}}輸入:357輸出:753例題4:將下列數(shù)列(楊輝三角形)延長到55個。1,1,1,1,2,1,1,3,3,1,1,4,6,4,1……main(){inta[
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年物業(yè)服務企業(yè)風險管理與控制服務合同3篇
- 二零二五版武漢市小微企業(yè)融資擔保合同實施細則3篇
- 2025年行政單位聘用合同范本:行政單位合同制員工合同模板6篇
- 2025年洗車場租賃合同書(含汽車維修保養(yǎng)培訓合作)3篇
- 2025年借殼上市上市協(xié)議書
- 2025年住宅保險全保障服務協(xié)議
- 2025年借殼上市股權(quán)轉(zhuǎn)讓協(xié)議樣本
- 2025年住宅小區(qū)物管協(xié)議
- 二零二五版房地產(chǎn)抵押借款股權(quán)投資合作協(xié)議范本2篇
- 二零二五年影視制作項目分期投資協(xié)議3篇
- 建筑保溫隔熱構(gòu)造
- 智慧財務綜合實訓
- 安徽省合肥市2021-2022學年七年級上學期期末數(shù)學試題(含答案)3
- 教育專家報告合集:年度得到:沈祖蕓全球教育報告(2023-2024)
- 肝臟腫瘤護理查房
- 護士工作壓力管理護理工作中的壓力應對策略
- 2023年日語考試:大學日語六級真題模擬匯編(共479題)
- 皮帶拆除安全技術(shù)措施
- ISO9001(2015版)質(zhì)量體系標準講解
- 《培訓資料緊固》課件
- 黑龍江省政府采購評標專家考試題
評論
0/150
提交評論