实验5数组-pC程序设计与数据结构基础_第1页
实验5数组-pC程序设计与数据结构基础_第2页
实验5数组-pC程序设计与数据结构基础_第3页
实验5数组-pC程序设计与数据结构基础_第4页
实验5数组-pC程序设计与数据结构基础_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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];数组与循环配合的编程套路数组常与循环配合使用,使循环变量作数组下标,循环变量的变化是:0

~

元素个数-1。一般编程套路是:for

(i=0;i<元素个数;i++)对a[i]进行操作;int

a[5];a:依次输出数组a中5个元素的值12

347?

3a[0]

a[1]

a[2]

a[3]

a[4]数组的定义和初始化复习、对一维数组以下3种写法等效int

a[5]={

5,10,15,0,0

};int

a[

]={

5,10,15,0,0

};int

a[5]={

5,10,15

};、对二维数组以下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

};、二维数组部分赋值时不足的也自动补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——一维数组交换元素位置练习26——复习选择排序法练习27——冒泡排序法编程套路——数组收纳和多元素删除1)练习28——整除数收纳练习29——素数收纳练习30——成绩收纳练习31——重做删除一个元素二维数组程序举例练习32——二维数组输入输出及求和练习33——求三城市平均气温练习34——求每行的最大元素全部理解并选作一题上机练习全部理解并选作一题上机练习练习25——交换元素位置a:欲将数组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++)

//准备数据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++)

//输出数组cout<<a[i]<<"

";}本讲概要练习25——一维数组交换元素位置练习26——复习选择排序法练习27——冒泡排序法编程套路——数组收纳和多元素删除1)练习28——整除数收纳练习29——素数收纳练习30——成绩收纳练习31——重做删除一个元素二维数组程序举例练习32——二维数组输入输出及求和练习33——求三城市平均气温练习34——求每行的最大元素全部理解并选作一题上机练习全部理解并选作一题上机练习练习26——选择排序法给定一个包含10元素的数组,用选择排序法对数组元素排序。10

12

13

15

19

27

38

51

58

86改为<,重新运行程序,观察从大到小的排序结果从小到大排序,两层循环一起。外层从头减1,内层接力到底。外内两数相比,外大交换完毕。大到小小本讲概要练习25——一维数组交换元素位置练习26——复习选择排序法练习27——冒泡排序法编程套路——数组收纳和多元素删除1)练习28——整除数收纳练习29——素数收纳练习30——成绩收纳练习31——重做删除一个元素二维数组程序举例练习32——二维数组输入输出及求和练习33——求三城市平均气温练习34——求每行的最大元素全部理解并选作一题上机练习全部理解并选作一题上机练习练习27——冒泡排序a[0]a[1]a[2]a[3]a[4]用冒泡排序法对数组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个数开始,和相邻的下一个比:

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内层循环: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——一维数组交换元素位置练习26——复习选择排序法练习27——冒泡排序法编程套路——数组收纳和多元素删除1)练习28——整除数收纳练习29——素数收纳练习30——成绩收纳练习31——重做删除一个元素二维数组程序举例练习32——二维数组输入输出及求和练习33——求三城市平均气温练习34——求每行的最大元素全部理解并选作一题上机练习全部理解并选作一题上机练习数组收纳一个数组可以保存“一组数”。因此可把数组当做“仓库”,将多个数据“收纳”保存到里面。数组收纳问题的编程套路是:j=0;for

(循环所有数据)if

(某个数据符合收纳条件)a[

j++]=该数据;已收纳数据个数为:j(下一可用空间是a[

j])或{a[j]=该数据;j++;}练习28——整除数收纳j=0;for

(n=1;

n<=100;

n++)if

(n%3==0

&&

n%5==0)

a[

j++

]=n;}//输出数组

a[]中的数据,数据个数为

jfor

(i=0;

i<j;

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

";cout<<endl;将100以内能同时被3与5整除的数存放到数组a中。#include

<iostream.h>main()//定义为足够大,实际用不了100个空间{

int

a[100];int

n,

i,

j;j=0;for

(循环所有数据)if

(某个数据符合收纳条件)a[

j++]=该数据;已收纳数据个数为:j(下一可用空间是a[

j])15

30

45

60

75

90练习29——素数收纳将50~100的所有素数(质数)存放到数组b中。}for

(n=50;

n<=100;

n++){//判断n是否为素数for

(i=2;

i<n;

i++)if

(n%i

==

0)

break;if

(i>=n)

b[

j++

]=n;

//若n为素,就将之收纳到数组b中}//输出数组b中所收纳的数(共收纳了

j

个数)cout<<"共有"<<j

<<"个素数,它们是:\n";for

(i=0;

i<j;

i++)cout<<

b[i]

<<

"

";j=0;for

(循环所有数据)if

(某个数据符合收纳条件)a[

j++]=该数据;已收纳数据个数为:j(下一可用空间是a[

j])共有10个素数,它们是:53

59

61

67

71

7379

83

89

97#include

<iostream.h>main(){

int

b[50],

n,

i,

j;j=0;练习30——成绩收纳10名学生的成绩已存入数组s,请编程将其中60~70分(含60,不含70)的成绩挑出存入数组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

(循环所有数据)if

(某个数据符合收纳条件)a[

j++]=该数据;已收纳数据个数为:j(下一可用空间是a[

j])本题是挑出后,将结果存入另一数组d,如果是挑出后将结果仍存回原来的数组s,该如何做呢?后者也可看做是删除s中60以下或70以上的元素。只要把d改为s即可!练习30——成绩收纳(2)10名学生的成绩已存入数组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];//输出数组sd中的数据(数组sd中剩收余纳有j个数据)for

(i=0;

i<j;

i++)

cout<<sd[i]<<"

";cout<<endl;69.5

60

64}数组多元素删除从数组收纳编程套路,推出:

数组多元素删除编程套路。数组收纳问题的编程套路是:j=0;for

(循环所有数据)if

(某个数据符合收纳条件)a[

j++]=该数据;已收纳数据个数为:j(下一可用空间是a[

j])数组多元素删除问题的编程套路是(设删除数组a中的一些元素,数组a中原有N个元素):j=0;for

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

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

j++;}多元素删除与数组收纳实质属同一问题;多元素删除,就是将保留元素收纳到同一数组。if

(要保留a[i])a[j++]=a[i];删除后数组a中剩余数据个数为:j(下一可用空间是a[

j])#include

<iostream.h>main()for

(i=0;

i<n;

i++)

//输出删除元素后的数组cout<<b[i]<<"

";}练习31——重做删除一个元素删除数组的一个元素,可看做删除多个元素的特例。你能用上面数组多元素删除的编程套路,重做【第3章(数组).ppt

P18

】的程序吗?即删除数组b中下标为2的元素75。数组多元素删除问题的编程套路是:j=0;for

(i=0;

i<N;

i++)if

(要保留a[i])

a[j++]=a[i];删除后数组a中剩余数据个数为:j99

60

86

92

70{

int

i,

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

n=6;

//目前数组元素个数int

j=0;for

(i=0;

i<n;

i++)if

(i!=2

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

n=j;

//新元素个数保存到n中本讲概要练习25——一维数组交换元素位置练习26——复习选择排序法练习27——冒泡排序法编程套路——数组收纳和多元素删除1)练习28——整除数收纳练习29——素数收纳练习30——成绩收纳练习31——重做删除一个元素二维数组程序举例练习32——二维数组输入输出及求和练习33——求三城市平均气温练习34——求每行的最大元素全部理解并选作一题上机练习全部理解并选作一题上机练习练习32——二维数组输入输出和求和向二维数组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;按行输出数组4

5

6cout<<"按和=21cout<<array[0][0]<<"";维数组,并求array数组中所有元素和cout<<array[0][1]<<"

";cout<<array[0][2]<<"";cout<<"按行输出数组\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将数据看作3行4列的二维数组则为求数组每行元素的平均值。先求每行元素的和,再分别除以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——求每行的最大元素求二维数组b中每行的最大元素及其位置#include

<iostream.h>main(){

i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论