實驗5數(shù)組-pC程序設計與數(shù)據(jù)結(jié)構(gòu)基礎_第1頁
實驗5數(shù)組-pC程序設計與數(shù)據(jù)結(jié)構(gòu)基礎_第2頁
實驗5數(shù)組-pC程序設計與數(shù)據(jù)結(jié)構(gòu)基礎_第3頁
實驗5數(shù)組-pC程序設計與數(shù)據(jù)結(jié)構(gòu)基礎_第4頁
實驗5數(shù)組-pC程序設計與數(shù)據(jù)結(jié)構(gòu)基礎_第5頁
免費預覽已結(jié)束,剩余21頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

cout<<a[i]<<endl;for

(i=0;

i<5;

i++)通過鍵盤依次輸入5個元素的值for

(i=0;

i<5;

i++)cin>>a[i];求5個元素的和(設s=0)for

(i=0;

i<5;

i++)s

=

s

+a[i];數(shù)組與循環(huán)配合的編程套路數(shù)組常與循環(huán)配合使用,使循環(huán)變量作數(shù)組下標,循環(huán)變量的變化是:0

~

元素個數(shù)-1。一般編程套路是:for

(i=0;i<元素個數(shù);i++)對a[i]進行操作;int

a[5];a:依次輸出數(shù)組a中5個元素的值12

347?

3a[0]

a[1]

a[2]

a[3]

a[4]數(shù)組的定義和初始化復習、對一維數(shù)組以下3種寫法等效int

a[5]={

5,10,15,0,0

};int

a[

]={

5,10,15,0,0

};int

a[5]={

5,10,15

};、對二維數(shù)組以下4種寫法等效int

b[2][3]={{1,

3,

5},

{2,

4,

6}

};int

b[2][3]={1,

3,

5,

2,

4,

6

};int

b[][3]={{1,

3,

5},

{2,

4,

6}

};int

b[][3]={1,

3,

5,

2,

4,

6

};、二維數(shù)組部分賦值時不足的也自動補0,以下2種寫法等效int

x[3][3]={{1,0,

0},

{2,

3,

0},

{4,

5,

6}

};int

x[3][3]={

{1},{2,

3},{4,

5,

6}

};a:510a[0]

a[1]

a[2]

a[3]

a[4]2461b:100230456012x:012本講概要練習25——一維數(shù)組交換元素位置練習26——復習選擇排序法練習27——冒泡排序法編程套路——數(shù)組收納和多元素刪除1)練習28——整除數(shù)收納練習29——素數(shù)收納練習30——成績收納練習31——重做刪除一個元素二維數(shù)組程序舉例練習32——二維數(shù)組輸入輸出及求和練習33——求三城市平均氣溫練習34——求每行的最大元素全部理解并選作一題上機練習全部理解并選作一題上機練習練習25——交換元素位置a:欲將數(shù)組a的元素按下圖所示的要求兩兩交換位置:a[0]

a[1]

a[2]

a[3]

a[4]

a[5]

a[6]

a[7]

a[8]

a[9]12345678910a:a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]10987654321a[0]a[1]a[4]a[9]a[8]……a[5]#include

<iostream.h>main(){

int

a[10],

i,

t;for

(i=0;

i<10;

i++)

//準備數(shù)據(jù)a[i]=i+1;for

(i=0;

i<10/2;

i++){at=[ia][i];a[ia]=[9a-[i9]-i];a[9-i]=t;}for

(i=0;

i<10;

i++)

//輸出數(shù)組cout<<a[i]<<"

";}本講概要練習25——一維數(shù)組交換元素位置練習26——復習選擇排序法練習27——冒泡排序法編程套路——數(shù)組收納和多元素刪除1)練習28——整除數(shù)收納練習29——素數(shù)收納練習30——成績收納練習31——重做刪除一個元素二維數(shù)組程序舉例練習32——二維數(shù)組輸入輸出及求和練習33——求三城市平均氣溫練習34——求每行的最大元素全部理解并選作一題上機練習全部理解并選作一題上機練習練習26——選擇排序法給定一個包含10元素的數(shù)組,用選擇排序法對數(shù)組元素排序。10

12

13

15

19

27

38

51

58

86改為<,重新運行程序,觀察從大到小的排序結(jié)果從小到大排序,兩層循環(huán)一起。外層從頭減1,內(nèi)層接力到底。外內(nèi)兩數(shù)相比,外大交換完畢。大到小小本講概要練習25——一維數(shù)組交換元素位置練習26——復習選擇排序法練習27——冒泡排序法編程套路——數(shù)組收納和多元素刪除1)練習28——整除數(shù)收納練習29——素數(shù)收納練習30——成績收納練習31——重做刪除一個元素二維數(shù)組程序舉例練習32——二維數(shù)組輸入輸出及求和練習33——求三城市平均氣溫練習34——求每行的最大元素全部理解并選作一題上機練習全部理解并選作一題上機練習練習27——冒泡排序a[0]a[1]a[2]a[3]a[4]用冒泡排序法對數(shù)組a中的5個元素從大到小排序。a[0]a[1]a[2]a[3]a[4]

12992a[0]a[1]a[2]a[3]

2a[4]

15459494a[0]a[1]a[2]

4a[3]

2a[4]

19559#include

<iostream.h>main(){

const

int

n=5;int

a[n]={1,5,4,2,9};int

i,j;int

t;for

(i=0;i<n-1;i++)i=0,

1,

2,

3練習27——冒泡排序(2)15429for

(i=0;i<n-1;i++)

每一步該如何做呢?

a[0]都是先從第0個數(shù)開始,和相鄰的下一個比:

const

int

n=5;

a[1]if

(a[0]<a[1])

{

交換a[0]和a[1]

}

if

(a[j]<a[j+1])

a[2]if

(a[1]<a[2])

{

交換a[1]和a[2]

}

{交換a[j]和a[j+1]}

a[3]……

a[4]i

所進行的比較(

j

為藍字下標;a[j]

a[j+1]

)

j范圍i=0

if

(a[0]>a[1])、if

(a[1]>a[2])、

if

(a[2]>a[3])

、if

(a[3]>a[4])

0~n-2

(0,1i=1

if

(a[0]>a[1])、if

(a[1]>a[2])、if

(a[2]>a[3])

0~n-3

(0,1i=2

if

(a[0]>a[1])、if

(a[1]>a[2])

0~n-4

(0,1i=3

if

(a[0]>a[1])

0~n-5

(0)i

if

(a[0]>a[1])、if

(a[1]>a[2])、...、if

(a[n-i-2]>a[n-i-2+1])

0~n-i-2內(nèi)層循環(huán):for

(j=0;

j<=n-i-2

(或j<n-i-1);j++),2,3),2))練習27——冒泡排序(3)#include

<iostream.h>main(){const

int

n=5;int

a[n]={1,5,4,2,9};int

i,j;int

t;for

(i=0;i<n-1;i++)for(j=0;

j<n-i-1;j++)if

(a[

j

]<a[

j+1

]){

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}for

(i=0;i<n;i++)cout<<a[i]<<"

";}if

(a[j

]>a[

j+1

])則從小到大排序for

(j=0;

j<=n-i-2

(或j<n-i-1);j++)for

(i=0;i<n-1;i++)for

(j=0;

j<=n-i-2

(或j<n-i-1);j++)for

(i=0;i<n-1;i++)9

5

4

2

1if

(a[j]<a[j+1]){交換a[j]和a[j+1]}if

(a[j]<a[j+1]){交換a[j]和a[j+1]}本講概要練習25——一維數(shù)組交換元素位置練習26——復習選擇排序法練習27——冒泡排序法編程套路——數(shù)組收納和多元素刪除1)練習28——整除數(shù)收納練習29——素數(shù)收納練習30——成績收納練習31——重做刪除一個元素二維數(shù)組程序舉例練習32——二維數(shù)組輸入輸出及求和練習33——求三城市平均氣溫練習34——求每行的最大元素全部理解并選作一題上機練習全部理解并選作一題上機練習數(shù)組收納一個數(shù)組可以保存“一組數(shù)”。因此可把數(shù)組當做“倉庫”,將多個數(shù)據(jù)“收納”保存到里面。數(shù)組收納問題的編程套路是:j=0;for

(循環(huán)所有數(shù)據(jù))if

(某個數(shù)據(jù)符合收納條件)a[

j++]=該數(shù)據(jù);已收納數(shù)據(jù)個數(shù)為:j(下一可用空間是a[

j])或{a[j]=該數(shù)據(jù);j++;}練習28——整除數(shù)收納j=0;for

(n=1;

n<=100;

n++)if

(n%3==0

&&

n%5==0)

a[

j++

]=n;}//輸出數(shù)組

a[]中的數(shù)據(jù),數(shù)據(jù)個數(shù)為

jfor

(i=0;

i<j;

i++)cout<<a[i]<<"

";cout<<endl;將100以內(nèi)能同時被3與5整除的數(shù)存放到數(shù)組a中。#include

<iostream.h>main()//定義為足夠大,實際用不了100個空間{

int

a[100];int

n,

i,

j;j=0;for

(循環(huán)所有數(shù)據(jù))if

(某個數(shù)據(jù)符合收納條件)a[

j++]=該數(shù)據(jù);已收納數(shù)據(jù)個數(shù)為:j(下一可用空間是a[

j])15

30

45

60

75

90練習29——素數(shù)收納將50~100的所有素數(shù)(質(zhì)數(shù))存放到數(shù)組b中。}for

(n=50;

n<=100;

n++){//判斷n是否為素數(shù)for

(i=2;

i<n;

i++)if

(n%i

==

0)

break;if

(i>=n)

b[

j++

]=n;

//若n為素,就將之收納到數(shù)組b中}//輸出數(shù)組b中所收納的數(shù)(共收納了

j

個數(shù))cout<<"共有"<<j

<<"個素數(shù),它們是:\n";for

(i=0;

i<j;

i++)cout<<

b[i]

<<

"

";j=0;for

(循環(huán)所有數(shù)據(jù))if

(某個數(shù)據(jù)符合收納條件)a[

j++]=該數(shù)據(jù);已收納數(shù)據(jù)個數(shù)為:j(下一可用空間是a[

j])共有10個素數(shù),它們是:53

59

61

67

71

7379

83

89

97#include

<iostream.h>main(){

int

b[50],

n,

i,

j;j=0;練習30——成績收納10名學生的成績已存入數(shù)組s,請編程將其中60~70分(含60,不含70)的成績挑出存入數(shù)組d中,以便對這些學生做加強訓練。#include

<iostream.h>#define

N

10main(){

int

i,

j;float

s[N]={

58.5,69.5,60.0,42.0,75.0,64.0,86,

d[N];}j=0;for

(i=0;

i<N;

i++)dif

(

s[i]>=60

&&

s[i]<70

) [

j++

]=s[i];//focj=0;for

(循環(huán)所有數(shù)據(jù))if

(某個數(shù)據(jù)符合收納條件)a[

j++]=該數(shù)據(jù);已收納數(shù)據(jù)個數(shù)為:j(下一可用空間是a[

j])本題是挑出后,將結(jié)果存入另一數(shù)組d,如果是挑出后將結(jié)果仍存回原來的數(shù)組s,該如何做呢?后者也可看做是刪除s中60以下或70以上的元素。只要把d改為s即可!練習30——成績收納(2)10名學生的成績已存入數(shù)組s,請編程只保留其中60~70分(含60,不含70)的成績,刪除其他成績。#include

<iostream.h>#define

N

10main(){

int

i,

j;float

s[N]={

58.5,69.5,60.0,42.0,75.0,64.0,86.5,92.5,100.0,70.0}

;j=0;for

(i=0;

i<N;

i++)if

(

s[i]>=60

&&

s[i]<70

)

s[

j++

]=s[i];//輸出數(shù)組sd中的數(shù)據(jù)(數(shù)組sd中剩收余納有j個數(shù)據(jù))for

(i=0;

i<j;

i++)

cout<<sd[i]<<"

";cout<<endl;69.5

60

64}數(shù)組多元素刪除從數(shù)組收納編程套路,推出:

數(shù)組多元素刪除編程套路。數(shù)組收納問題的編程套路是:j=0;for

(循環(huán)所有數(shù)據(jù))if

(某個數(shù)據(jù)符合收納條件)a[

j++]=該數(shù)據(jù);已收納數(shù)據(jù)個數(shù)為:j(下一可用空間是a[

j])數(shù)組多元素刪除問題的編程套路是(設刪除數(shù)組a中的一些元素,數(shù)組a中原有N個元素):j=0;for

(i=0;i<N;i++)

或{a[j]=a[i];

j++;}多元素刪除與數(shù)組收納實質(zhì)屬同一問題;多元素刪除,就是將保留元素收納到同一數(shù)組。if

(要保留a[i])a[j++]=a[i];刪除后數(shù)組a中剩余數(shù)據(jù)個數(shù)為:j(下一可用空間是a[

j])#include

<iostream.h>main()for

(i=0;

i<n;

i++)

//輸出刪除元素后的數(shù)組cout<<b[i]<<"

";}練習31——重做刪除一個元素刪除數(shù)組的一個元素,可看做刪除多個元素的特例。你能用上面數(shù)組多元素刪除的編程套路,重做【第3章(數(shù)組).ppt

P18

】的程序嗎?即刪除數(shù)組b中下標為2的元素75。數(shù)組多元素刪除問題的編程套路是:j=0;for

(i=0;

i<N;

i++)if

(要保留a[i])

a[j++]=a[i];刪除后數(shù)組a中剩余數(shù)據(jù)個數(shù)為:j99

60

86

92

70{

int

i,

b[6]={99,60,75,86,92,70};int

n=6;

//目前數(shù)組元素個數(shù)int

j=0;for

(i=0;

i<n;

i++)if

(i!=2

)b[j++]=b[i];

n=j;

//新元素個數(shù)保存到n中本講概要練習25——一維數(shù)組交換元素位置練習26——復習選擇排序法練習27——冒泡排序法編程套路——數(shù)組收納和多元素刪除1)練習28——整除數(shù)收納練習29——素數(shù)收納練習30——成績收納練習31——重做刪除一個元素二維數(shù)組程序舉例練習32——二維數(shù)組輸入輸出及求和練習33——求三城市平均氣溫練習34——求每行的最大元素全部理解并選作一題上機練習全部理解并選作一題上機練習練習32——二維數(shù)組輸入輸出和求和向二維數(shù)組array書P57

例3.5main(){int

array[2int

i,j;for

(i=0;

i<2;

i++)for

(j=0;

j<3;

j++)for

(i=0;

i<2;

i++)for

(j=0;

j<3;

j++)cout<<array[i][j]<<"

";cout<<endl;

//輸}=sum+=array[i][j];輸出一行(第i出每行后換行行array:001int

sum=0;按行輸出數(shù)組4

5

6cout<<"按和=21cout<<array[0][0]<<"";維數(shù)組,并求array數(shù)組中所有元素和cout<<array[0][1]<<"

";cout<<array[0][2]<<"";cout<<"按行輸出數(shù)組\n";cout<<endl;//換行cout<<array[1][0]<<"

";

{#include

<iost

按cout<<array[1][1]<<"";cout<<array[1][2]<<"

";cout<<endl;//換行sum+=array[0][0];sum+=array[0][1];sum+=array[0][2];sum+=array[1][0];sum+=array[1][1];sum+=array[1][2];cin>>array[0][0];

0;cin>>array[0][1];i=0;

i<2;

i++)cin>>array[0][2];r

(j=0;

j<3;

j++)cin>>array[1][0];cin>>array[i][j];

cin>>array[1][1];<<"和="<<sum<<endl;cin>>array[1][2];練習33——求三城市平均氣溫已知

、

、

3個城市一年四季的平均氣溫如下表,分別求每個城市一年四季的平均氣溫。春夏秋冬11.328.216.5-7.112.427.117.6-5.723.233.525.8-1.3將數(shù)據(jù)看作3行4列的二維數(shù)組則為求數(shù)組每行元素的平均值。先求每行元素的和,再分別除以4。11.328.216.5-7.112.427.117.6-5.723.233.525.8-1.30123012練習33——求三城市平均氣溫(2)#include

<iostream.h>main(){float

temp[3][4]={{11.3,

28.2,

16.5,

-7.1},{12.4,

27.1,

17.6,

-5.7},{23.2,

33.5,

25.8,

-1.3}};int

i,j;float

sum=0.0,ave=0.0;sum=00;for

(j=0;j<4;j++)sum+=temp[0][j];ave=sum/4;cout<<"城市"<<i<<"的平均氣溫為:";cout<<ave<<endl;求第

行的平均sum=0.0;for

(j=0;j<4;j++)sum+=temp[1][j];ave=sum/4;cout<<"城市"<<i<<"的平均氣溫為:";cout<<ave<<endl;求第1行的平均sum=0.0;for

(j=0;j<4;j++)sum+=temp[2][j];ave=sum/4;cout<<"城市"<<i<<"的平均氣溫為:";cout<<ave<<endl;求第2行的平均11.328.216.5-7.112.427.117.6-5.723.233.525.8-1.30

1

2

3012}練習33——求三城市平均氣溫(3)城市0的平均氣溫為:12.225城市1的平均氣溫為:12.85城市2的平均氣溫為:20.30

11.3

28.2

16.5 -7.11

12.4

27.1

17.6 -5.72

23.2

33.5

25.8 -1.3#include

<iostream.h>main(){float

temp[3][4]={{11.3,

28.2,

16.5,

-7.1},{12.4,

27.1,

17.6,

-5.7},{23.2,

33.5,

25.8,

-1.3}};int

i,j;float

sum=0.0,ave=0.0;0

1

2

3sum=0.0;for

(j=0;j<4;j++)sum+=temp[i][j];ave=sum/4;cout<<"城市"<<i<<"的平均氣溫為:";cout<<ave<<endl;求第i

行的平均for

(i=0;

i<3;

i++)

i=0,1,2{}練習34——求每行的最大元素求二維數(shù)組b中每行的最大元素及其位置#include

<iostream.h>main(){

i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論