版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第9講一維數(shù)組,二維數(shù)組數(shù)組數(shù)組:一組有序數(shù)據(jù)的集合。數(shù)組中的每一個(gè)元素都屬于同一個(gè)數(shù)據(jù)類型。用一個(gè)統(tǒng)一的數(shù)組名和下標(biāo)來唯一地確定數(shù)組中的元素。一維數(shù)組的定義和引用1.一維數(shù)組的定義類型說明符數(shù)組名[常量表達(dá)式];說明:1)數(shù)組名命名規(guī)則與變量名相同;
2)常量表達(dá)式不能含變量,不能用圓括弧;
3)下標(biāo)從0開始計(jì)算。2.一維數(shù)組元素的引用
數(shù)組必須先定義后引用,并且只能引用數(shù)組元素而不能一次引用整個(gè)數(shù)組。數(shù)組元素的表示形式為:
數(shù)組名[下標(biāo)]下標(biāo)可以是整型常量或整型表達(dá)式。如:
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ù)組元素運(yùn)行結(jié)果:98765432103.一維數(shù)組的初始化1).定義數(shù)組時(shí)初始化數(shù)組元素。如:
staticinta[10]={0,1,2,…,9};2).可以只給部分元素賦初值。如:
staticinta[10]={0,1,2,3,4};對(duì)static數(shù)組,未賦初值則系統(tǒng)默認(rèn)為0。3).對(duì)全部數(shù)組元素賦初值時(shí),可以不指定數(shù)組長度。如:
staticinta[]={1,2,3,4,5};自動(dòng)定義長度為5。注意:數(shù)組長度與提供的初值個(gè)數(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");}起泡法思路:
將相鄰兩個(gè)數(shù)比較,將小的調(diào)到前頭。經(jīng)過1輪比較后,最大的數(shù)已調(diào)到最后一個(gè)位置。所以n個(gè)數(shù)要比較n-1趟,在第j趟中要進(jìn)行n-j次比較。例題2:起泡法對(duì)10個(gè)整數(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個(gè)數(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:將一組十個(gè)數(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ù)組名[常量表達(dá)式][常量表達(dá)式]
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(bǔ)看成包含3個(gè)元素的一維數(shù)組,而每個(gè)元素又是一個(gè)包含4個(gè)元素的一維數(shù)組。
a[0]---------a00a01a02a03a a[1]---------a10a11a12a13 a[2]---------a20a21a22a23
即把a(bǔ)看成包含3個(gè)元素的一維數(shù)組,而每個(gè)元素又是一個(gè)包含4個(gè)元素的一維數(shù)組。二維數(shù)組中元素的排列順序?yàn)椋喊葱写娣?。存放順序?,2,3行。
a[3][4]C語言允許使用多維數(shù)組,其基礎(chǔ)為二維數(shù)組。如:語句inta[2][3][2];定義一個(gè)12個(gè)元素的3維數(shù)組。下標(biāo)變化順序:3,2,1。
1)對(duì)二維數(shù)組a[m][n],元素a[i][j]在數(shù)組中的排列位置計(jì)算公式為:
i*n+j+1對(duì)數(shù)組a[3][4],a[2][1]的位置為:
2*4+1+1=10表示它是第10個(gè)元素。
2)對(duì)二維數(shù)組a[m][n],元素a[i][j]在數(shù)組中的順序號(hào)計(jì)算公式為:
i*n+j對(duì)數(shù)組a[3][4],a[2][1]的順序號(hào)為:
2*4+1=9表示它前面有9個(gè)元素。2二維數(shù)組的引用
數(shù)組必須“先定義,后引用”。二維數(shù)組元素的表示形式:數(shù)組名[下標(biāo)][下標(biāo)]下標(biāo)可以是整型表達(dá)式。
數(shù)組元素可以出現(xiàn)在表達(dá)式中,也可以被賦值。如:
b[1][2]=a[2][3]/2;注意:下標(biāo)值的范圍。常見錯(cuò)誤:
inta[3][4];
| a[3][4]=3;a[3][4]指數(shù)組以外的某一存儲(chǔ)單元。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ù)寫在一個(gè)花括號(hào)內(nèi),系統(tǒng)按排列順序?qū)υ刭x初值。如:staticinta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
3).也可對(duì)部分元素賦初值。如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也可以對(duì)第二行不賦初值:如staticinta[3][4]={{1},{},{9}};
4).若對(duì)全部元素都賦初值,則定義數(shù)組時(shí)對(duì)第一維的長度可以不指定,但第二維的長度不能省略。staticinta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};等價(jià)于staticinta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
若定義時(shí)省略第一維的長度并部分賦初值,則應(yīng)采用分行賦初值的方法。如: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個(gè)。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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年中國木柄奶頭錘市場(chǎng)調(diào)查研究報(bào)告
- 貨運(yùn)代理述職報(bào)告
- 2024年多譜勒天氣雷達(dá)項(xiàng)目提案報(bào)告模板
- 2024年檔案館管理服務(wù)項(xiàng)目申請(qǐng)報(bào)告
- 威海海洋職業(yè)學(xué)院《認(rèn)知心理學(xué)基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 冷鏈倉庫儲(chǔ)存合同范例
- 2025煤炭海上運(yùn)輸買賣合同范本
- 廢棄油脂收購合同范例
- 瓷買賣合同范例
- 定金合同過戶合同范例
- Unit 2 Different families(教學(xué)設(shè)計(jì))-2024-2025學(xué)年人教PEP版英語三年級(jí)上冊(cè)
- 西師大版五年級(jí)上冊(cè)小數(shù)混合運(yùn)算題100道及答案
- 2022年7月國家開放大學(xué)本科《中國法律史》期末紙質(zhì)考試試題及答案
- 行政文秘筆試題
- 2024年部門年終工作總結(jié)參考(四篇)
- 主題四 第1課 節(jié)氣與我們的生活(教學(xué)設(shè)計(jì))教科版五年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)
- 二年級(jí)數(shù)學(xué)上冊(cè)口算天天練
- 肯耐珂薩題庫
- 2024國家開放大學(xué)電大本科《液壓氣動(dòng)技術(shù)》期末試題及答案
- 冷凝集素綜合征治療與護(hù)理研究進(jìn)展
- 商務(wù)服務(wù)機(jī)器人技術(shù)現(xiàn)狀與未來發(fā)展趨勢(shì)研究
評(píng)論
0/150
提交評(píng)論