C++课件数组
合集下载
C语言-数组PPT课件
12
34
56
78
9
a[0]
a[1]
a[2]
a[3]
a[4]
×
2020/5/27
6
一维数组的赋值
数组赋值和普通变量赋值一样 – 只能逐个对数组元素进行操作! – 不能整体赋值! – 切忌下标越界!
int a[4];
√
a[0]=1; a[1]=3;
a[2]=5; a[3]=7;
int a[4];
√
for (i=0; i<4; i++)
int f[YEAR_MONTH+1] = {0,1,1}; int month;
兔子问题 (数组版)
for (month=3; month<=YEAR_MONTH; month++) {
f[month] = f[month-1] + f[month-2]; }
for (month=1; month<=YEAR_MONTH; month++) {
反转并打印数组
for (i = 0; i < N/2; {
temp = a[i]; a[i] = a[N-1-i]; a[N-1-i] = temp; }
++i)
for (i = 0; i < N; ++i)
printf(“%3d ", a[i] ) ;
2020r/5e/2t7 urn 0;
16
求数组最小元素及其所在下标
2020/5/27
× //长度n不可以是变量
5
一维数组的初始化
√ int a[5] = {12, 34, 56, 78, 9};
C语言数组PPT课件
一、一维数组的初始化
除了在定义数组变量时用初值列表为数组做整体赋值之外, C语言无法用C语句对数组变量做整体赋值。也就是说, 下面的做法是错误的:
int a[5]; a={1,2,3,4,5};//错误 a[]={1,2,3,4,5};//错误 首先,a是数组名,表示数组在内存中的地址,不能被赋 值,其次{1,2,3,4,5}不是合法表达式,=右边必须是 合法表达式,再次,a[ ]也不是合法的表达式。下面的做 法也是错误的:
5、C程序为数组a在内存中开辟8个连续的存储单元,如图可见 每个存储单元的名字,可以用这样名字来引用各存储单元。
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]
一、一维数组的定义
例如:int a[20];定义了一个20个单元的int型数组。变量 名是a,数组的每个数据单元都是int型,表达式sizeof(a) 的值是20*2=40。
int a[10],k; for(k=0;k<10;k++) a[k]=k*2+1;
想输入数组中各单元的数据,必须利用循环语句调用 scanf等函数逐个输入各数组单元的数据,而不能做到所 谓的“整体输入”。下面的程序是错误的:
int a[3];scanf("%d%d%d",a);
scanf函数的第一个参数中有3个%d,因此,后面必须跟 着3个其他参数,不能只有一个a。上面的程序必须改成:
其中j 和i+k是下标表达式 其值>=0&&<8 注意: 1、一个数组元素实质上就是一个变量名,代表内存中的一
个存储单元。一个数组占有一串连续的存储单元。 2、在C语言中,一个数组不能整体引用,不能用x代表x[0]到
C 数组ppt课件
一维数组元素的使用
数组是由数组元素组成的。一个数组元素实际上就 是一个变量,那如何来使用这些变量呢? int a[10]; 使用格式: 数组名[下标] scanf(“%d”,a); int i; for(i=0;i<10;i++) 下标从0 开始。如int a[5]表示该数组有5个元素, scanf(“%d”,&a[i]); 分别为a[0],a[1],a[2],a[3],a[4] 。 for(i=9;i>=0;i--) printf(“%d”,a); 下标表示了元素在数组中的顺序号。只能为整型常 printf(“%d”,a[i]); 量或整型表达式。如为小数时,将自动取整。 数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量(先定义后使用)。只能逐个地使用 下标变量,而不能一次使用整个数组。
从键盘输入10个整数,求出这 10个数的最大值并输出。
例:求等差数列2 6 10 14 18的和。 main() main() { { int a[5],i,sum=0; int a[5],i,sum=0; a[0]=2; a[0]=2; a[1]=6; for(i=1;i<5;i++) a[2]=10; a[3]=14; a[i]=a[i-1]+4; a[4]=18; for(i=0;i<5;i++) for(i=0;i<5;i++) 对数组的赋值: sum=sum+a[i]; sum=sum+a[i]; (1)对元素逐个赋值。 printf(“sum=%d\n",sum); printf(“sum=%d\n",sum); (2)与循环语句结合。 } } 数组的输出: (1)逐个输出。 (2)与循环语句结合。
C语言数组教程ppt课件
a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]
输入理想的程序,输出快乐的人生
二维数组元素的引用
• 二维数组元素的引用形式:
数组名[行下标] [列下标];
• 例如:
int a[3][4]; a[0][0]=3; a[0][1]=a[0][0]+10;
a[3][4]=5; /*下标越界*/
数据类型数组名数组大小一维数组可用一个循环动态赋值而二维数组可用二重嵌套循环动态赋值c把数组名解释为该数组第1个元素a0的首地址并且c编译器不检查所引用的数组元素下标是否越界地址传递1值传递方式实参与形参占用不同的内存单元includestdiohvoidswapinttemp
输入理想的程序,输出快乐的人生
for (i=0; i<3; i++) for( j=0; j<4; j++) printf(“%d”, a[i][ j] );
输入理想的程序,输出快乐的人生
二维数组的输入和输出
为一个3行4列的二维数组输入/输出数据
int main() { int a[3][4], i, j; for (i=0; i<3; i++) for (j=0; j<4; j++) scanf(“%d”,&a[i][j]); for (i=0; i<3; i++) { for (j=0; j<4; j++) printf(“%5d”, a[i][j]); printf(“\n”); } return 0;
输入理想的程序,输出快乐的人生
下标越界是大忌!
• int a[10]; scanf("%d",&a[10]); /*下标越界*/ – 编译程序不检查是否越界 – 下标越界,将访问数组以外的空间,可能带来严重后果
C语言 数组ppt
imin = i; for (j=i+1; j<10; j++) {
if (a[j] < a[imin]) imin = j;
} if (imin != i) {
temp = a[i]; a[i] = a[imin]; a[imin] = temp; } }
for (i=0; i<10; i++) printf("%3d",a[i]);
第6章 数组
内容提要
数组定义和基本操作; 常用算法:求最大最小值、排序、查找等; 用字符数组存取字符串; 使用字符串处理函数处理字符串
2023/10/17
2
一维数组(Array)的定义
类型 数组名[长度]; – 长度为常量表达式,不可以是变量(但C99提供了动态数组)
例:int a[10]; – 定义一个有10个元素的数组,每个元素的类型均为int – 系统会在内存分配连续的10个int空间给此数组 – a 是数组名,同时也代表着此数组的首地址
31
int a[10]={1,3,5,7,9,12,14,16,18,20}, number; int low = 0, high= 9 ,mid,pos = -1, find = 0
printf("请输入要查找的数:"); scanf("%d",&number);
while (low <= high) {
9
20
#include <stdio.h> int main() {
Bubble sort
int a[10]={93,84,52,46,25,0,66,18,39,70}, i, j, temp;
if (a[j] < a[imin]) imin = j;
} if (imin != i) {
temp = a[i]; a[i] = a[imin]; a[imin] = temp; } }
for (i=0; i<10; i++) printf("%3d",a[i]);
第6章 数组
内容提要
数组定义和基本操作; 常用算法:求最大最小值、排序、查找等; 用字符数组存取字符串; 使用字符串处理函数处理字符串
2023/10/17
2
一维数组(Array)的定义
类型 数组名[长度]; – 长度为常量表达式,不可以是变量(但C99提供了动态数组)
例:int a[10]; – 定义一个有10个元素的数组,每个元素的类型均为int – 系统会在内存分配连续的10个int空间给此数组 – a 是数组名,同时也代表着此数组的首地址
31
int a[10]={1,3,5,7,9,12,14,16,18,20}, number; int low = 0, high= 9 ,mid,pos = -1, find = 0
printf("请输入要查找的数:"); scanf("%d",&number);
while (low <= high) {
9
20
#include <stdio.h> int main() {
Bubble sort
int a[10]={93,84,52,46,25,0,66,18,39,70}, i, j, temp;
C语言课件 数组
❖说明: 数组不初始化,其元素值为随机数 对static数组元素不赋初值,系统会自动赋以0值 只给部分数组元素赋初值
当全部数组元素赋初值时,可不指定数组长度
s如tatic iinntt aa[[55]]=; {6,2,3}; 等如等价价于编iin于n:译tta:aa[系[][3=0统]{a]==[1{0根0,62];=,,据236a,,[;34初1,a,55][值=,,1160]}}个=;;;2a数[;a2[](确2=]0)=定;3a数;[a3组[]3=]0维=;0数a;[a4[]4=]0=;0;
60
aa[[00]1]例[[00]] aian[[0t0]0a][[[11]][]3aa][=[00{0]]1[[2,22]],3aa,[[4114,]]5[[0}0;]] aa[[115]][[11]] aa[[110]][[22]]
a[01]1[0] a[02]2[1] a[30]4[2] a[41]0[0] a[510][1] a[610][2]
kk
k
例 i=1 初始: [ 4193 38 65 97 76 1439 27 ] j jj jj j
k
k
i=2 一趟: 13 [3287 65 97 76 49 3287 ]
j j j jj 二趟: 13 27 [65 97 76 49 38 ]
三趟: 13 27 38 [97 76 49 65 ] 四趟: 13 27 38 49 [76 97 65 ] 五趟: 13 27 38 49 65 [97 76 ] 六趟: 13 27 38 49 65 76 [97 ]
”Grape”,”Pear”,”Peach”};
diamond[0] .
.
*
\0
\0
C语言第六章数组PPT课件
=====1414141041252005205236000043036 45 0
第16页/共52页
程序举例
例 将二维数组行列元素互换,存到另一个数组中
#include <stdio.h> main() { int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j; printf("array a:\n"); for(i=0;i<=1;i++) { for(j=0;j<=2;j++)
在C语言中表示数组和矩阵的方法是:
数组:a[0]、a[1]、a[2]、a[3]、a[4]、a[5]
其中 a :称为数组名。 方括号中的数:称为下标 下标是一个数时,也就是数列,
称为一维数组。 下标是两个数时,也就是矩阵,
称为二维数组。还有三维、四维数组等
第1页/共52页
例如:有五名学生的一组学号: 2004035012、2004035013、 2004035014、2004035015、 2004035016。
1、把数组定义时方括号中的数和元素下标值区别开, 数组定义时方括号中的数表示数组含有的元素个数 元素下标值是标识具体的数组元素的。 方括号中的数不能是变量,只能是常量。 2、数组元素的下标可以是常量, 也可以是变量, 其值必须是非负数, 如果是小数,系统自动取整。 3、数组必须先定义后使用。 4、系统不检查数组元素下标的越界问题。
即先存第一行,接着存第二行, 以此类推。例如:
5
c[0][1][1]
6
c[0][1][2]
7
c[0][1][3]
c[0][2][0]
c[0][2][1]
c 第七章数组PPT课件
C语言程序设计
第七章 数组
7.1 数组定义
数组是一个由若干同类型变量组成的集合。一维数组的 说明方法为数据类型加数组名,再加方括号,里面含有元素 个数。即:
类型说明符 数组名[常量表达式] 例如,下面得代码说明一个字符数组:
void main() {
char buffer[5]; //… } 主函数中定义了一个字符数组,存储该数组占5个字节。
函数funcA()中定义了一个静态局部数组,它没有显示初 始化,所以默认初始值为0。
下面的代码不能通过编译:
void main() {
int size=50; int array[size]; //… }
下面的代码用常量来规定数组元素个数:
const int size=50; const int n=size*sizeof(int); void main() {
char array[10]={‘h’,’e’,’l’,’l’,’o’,’\0’}; 第一种方法用途较广,初始化时,系统自动在数组没有 填值的位置用’\0’补上。另外,这种方法用的花括号可以省略 ,即能表示成:
char array[10]=“hello”; 第二种方法一次一个元素地初始化数组,如同初始化整
下图表示一个名为a的3行×4列的整型二维数组。可以 看到,第一个下标范围是0~2,第二个下标范围是0~3。 二维数组是按先行后列的顺序在内存中线性排列的。它的 定义如下:
int a[3][4];
通常把有m行和n列的数组称为m×n数组。
数组a中的每个元素用元素名a[i][j]识别,其中,a是数组名 ,i和j是唯一标识数组a中每个元素的下标。
例如,下面的代码对数组进行初始化是错误的:
int array1[5]={1,2,3,4,5,6} int array2[5]={1,,2,3,4}; int array3[5]={1,2,3,};
第七章 数组
7.1 数组定义
数组是一个由若干同类型变量组成的集合。一维数组的 说明方法为数据类型加数组名,再加方括号,里面含有元素 个数。即:
类型说明符 数组名[常量表达式] 例如,下面得代码说明一个字符数组:
void main() {
char buffer[5]; //… } 主函数中定义了一个字符数组,存储该数组占5个字节。
函数funcA()中定义了一个静态局部数组,它没有显示初 始化,所以默认初始值为0。
下面的代码不能通过编译:
void main() {
int size=50; int array[size]; //… }
下面的代码用常量来规定数组元素个数:
const int size=50; const int n=size*sizeof(int); void main() {
char array[10]={‘h’,’e’,’l’,’l’,’o’,’\0’}; 第一种方法用途较广,初始化时,系统自动在数组没有 填值的位置用’\0’补上。另外,这种方法用的花括号可以省略 ,即能表示成:
char array[10]=“hello”; 第二种方法一次一个元素地初始化数组,如同初始化整
下图表示一个名为a的3行×4列的整型二维数组。可以 看到,第一个下标范围是0~2,第二个下标范围是0~3。 二维数组是按先行后列的顺序在内存中线性排列的。它的 定义如下:
int a[3][4];
通常把有m行和n列的数组称为m×n数组。
数组a中的每个元素用元素名a[i][j]识别,其中,a是数组名 ,i和j是唯一标识数组a中每个元素的下标。
例如,下面的代码对数组进行初始化是错误的:
int array1[5]={1,2,3,4,5,6} int array2[5]={1,,2,3,4}; int array3[5]={1,2,3,};
C语言数组PPT课件
}
第18页/共52页
例5-8 将一维数组中的n(n<=50)个数按逆序存放。
3 45 2 -6 -17 66 50
50 66 -17 -6 2 45 3
for(i=0;i<=(n-1)/2;i++) { t=a[i];
a[i]=a[n-1-i]; a[n-1-i]=t; 第19页/}共52页
#include "stdio.h" main( ) { int a[50],t,n,i;
等价
第6页/共52页
三、 随机函数random和rand
2. rand函数的用法: 格式: rand ( ) 说明: (1) 该函数包含在头文件"stdlib.h"中。 (2) 该函数产生0到整型最大值之间的一个随机整数。
产生[a,b]区间上任意整数的方法: rand( )%(b-a+1)+a
srand函数 (头文件time.h) srand(time(0))
for(j=2;j<10;j++) if(a[j]<a[1]) {t=a[1]; a[1]=a[j]; a[j]=t;} 执行9次
……
for(i=0;i<9;i++) for(j=i+1;j<10;j++) if(a[j]<a[i]){t=a[i]; a[i]=a[j]; a[j]=t;}
第13页/共52页
第4页/共52页
2. 一维数组的引用
只能逐个引用数组元素,而不能一次引用整个数组。 引用形式: 数组名[ 下标 ]
例5-1 数组元素的引开始。
{int i, b[10];
C语言数组总结课件
b则r循ea环k结; 束
if(i<10)
提前结束
p则r输in出tfi(的"s值[%d]=%d\n",i,s[i]);
e;数该据数不据存不在存!在”!\n");
}
P81
【实例3-6】某班学号从1至10的 10名学生大学英语的考试成绩分别 是67、84、79、 71、85、60、 93、75、96和81分。编程找出 考分最高的学生。
输出ch数组的字符 若有char a[8]={'1', '2', '3', '4'};
0 1234 5 6 7 a 1 2 3 4 \0 \0 \0 \0
操作步骤
#include <stdio.h> main() { 定ch义a并r c初h始[2化0c]h=字{'符I'数,' 组','a','m',' ','a',
for(i=0; i<20; i++)
将a[i]元素值赋给b[i]元素
操作步骤
#include <stdio.h> #include <time.h> #include <stdlib.h> main() { 定in义t 存a[放2200],个b[数2据0]的,i数; 组加as、rabn及d循(t环im变e量(0i ));
for(i=0; i<20; i++) 将a[i]元素值赋给b[i]元素
操作步骤
#include <stdio.h>
如产生1至6: k=rand()%6+1;
C程序设计数组课件
71
{t=a[0];a[0]=a[j];a[j]=t;}
92
59
a[j] 50
条件不成立!
27
79
41
j
4
5.2 一维数组及应用
代码段如下:
a[0] 93
for(j=1;j<8;j++) if(a[0]<a[j])
71
{t=a[0];a[0]=a[j];a[j]=t;}
92
59
50
a[j] 27
79
92
{t=a[0];a[0]=a[j];a[j]=t;}
93
59
50
27
79
41
j
1
5.2 一维数组及应用
代码段如下:
a[0] 71
for(j=1;j<8;j++) if(a[0]<a[j])
a[j] 92
{t=a[0];a[0]=a[j];a[j]=t;}
93
59
50
条件成立!
27
交换!
79
41
5.2 一维数组及应用
5.2.3 一维数组应用举例 1. 从键盘输入10个学生成绩,求平均分并统计高于平 均分的人数
(1)定义有10个元素的数组,求平均分就需要累加, 所以还需要一个累加器,要统计人数还需要一个计 数器,要循环遍历数组各元素还需要循环变量;
(2)通过遍历为数组各元素赋值 (3)累加各数组元素值,需要遍历各数组元素 (4)求出平均分后还要统计高于平均分的人数,需要拿
int a[4] a[0]=2 2 a[3]=5 a[2]=3
5.1 数组的概念
C语言中定义数组就是按数组 a
C语言数组的定义PPT课件
Page 3
1.为什么要引入数组
前面各章所使用的数据都属于 基本数据类型(整型、实型、字符型) C语言除了提供基本数据类型外,还提供了 构造类型的数据(数组类型、结构体类型、共 同体类型)。 构造数据类型是由基本数据类型的数据按照一 定的规则组成,所以也称为“导出类型”。
Page 4
1.为什么要引入数组
• 下列是不正确的 • Int a=5; • Int b[a];
Page 12
举例: int n;
scanf(“%d”,&n);
int a[n];
/*在程序中临时输入数 组的大小 */
数组说明中其他常见的错误
① float a[0]; /* 数组大小为0没有意义 */
② int b(2)(3); /* 不能使用圆括号 */ ③ int k, a[k]; /* 不能用变量说明数组大小*/
成员 a[0]
a1]
a[2]
a[3]
a[4]
地址 #2000 #2002 #2004 #2006 #2008
Page 15
2、一维数组
4)类型说明:指的是数据元素的类型,可以是 基本数据类型,也可以是构造数据类型。类型 说明确定了每个数据占用的内存字节数。
2 Int a[5]//表示向系统申请了( 5 )x 字节大小的内存空间,共
Page 7
1.为什么要引入数组
下面简单介绍一下数组概念: 1、数组:一组具有相同数据类型的数据的有序的 集合。 2、数组元素:构成数组的数据。数组中的每一个 数组元素具有相同的名称,不同的下标,可以作为 单个变量使用,所以也称为下标变量。 3、数组的下标:是数组元素的位置的一个索引或 指示。 4、数组的维数:数组元素下标的个数。根据数组 的维数可以将数组分为一维、二维、三维、多维数 组。
1.为什么要引入数组
前面各章所使用的数据都属于 基本数据类型(整型、实型、字符型) C语言除了提供基本数据类型外,还提供了 构造类型的数据(数组类型、结构体类型、共 同体类型)。 构造数据类型是由基本数据类型的数据按照一 定的规则组成,所以也称为“导出类型”。
Page 4
1.为什么要引入数组
• 下列是不正确的 • Int a=5; • Int b[a];
Page 12
举例: int n;
scanf(“%d”,&n);
int a[n];
/*在程序中临时输入数 组的大小 */
数组说明中其他常见的错误
① float a[0]; /* 数组大小为0没有意义 */
② int b(2)(3); /* 不能使用圆括号 */ ③ int k, a[k]; /* 不能用变量说明数组大小*/
成员 a[0]
a1]
a[2]
a[3]
a[4]
地址 #2000 #2002 #2004 #2006 #2008
Page 15
2、一维数组
4)类型说明:指的是数据元素的类型,可以是 基本数据类型,也可以是构造数据类型。类型 说明确定了每个数据占用的内存字节数。
2 Int a[5]//表示向系统申请了( 5 )x 字节大小的内存空间,共
Page 7
1.为什么要引入数组
下面简单介绍一下数组概念: 1、数组:一组具有相同数据类型的数据的有序的 集合。 2、数组元素:构成数组的数据。数组中的每一个 数组元素具有相同的名称,不同的下标,可以作为 单个变量使用,所以也称为下标变量。 3、数组的下标:是数组元素的位置的一个索引或 指示。 4、数组的维数:数组元素下标的个数。根据数组 的维数可以将数组分为一维、二维、三维、多维数 组。
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
b[j][i]=a[i][j];
} cout<<endl; } cout<<″array b:″<<endl; for (i=0;i<=2;i++) { for(j=0;j<=1;j++) cout<<b[i][j]<<″ ″; cout<<endl; } return 0; }
例:有一个3×4的矩阵,要求编程序求出其中值最 大的那个元素的值,以及其所在的行号和列号。 程序如下: #include <iostream> using namespace std; int main( ) { int i,j,row=0,colum=0,max; int a[3][4]={{5,12,23,56},{19,28,37,46},{12,-34,6,8}}; max=a[0][0];
这些数据在内存中连续存放。如图:
2013年12月6日11时31分
图5.1
2013年12月6日11时31分
5.2 一维数组的定义和引用
5.2.1 定义一维数组
定义一维数组的一般格式为 类型标识符 数组名[常量表达式]; 例如 int a[10];int a[2*10]; 数组名命名遵循标识符定名规则。 常量表达式的值表示元素的个数,即数组长 度。 常量表达式中可以包括常量、常变量和符号常量, 但不能包含变量。
(2) 可以将所有数据写在一个花括号内,按数组排列的 顺序对各元素赋初值。如
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
(3) 可以对部分元素赋初值。如
int a[3][4]={{1},{5},{9}}; int a[3][4]={{1},{0,6},{0,0,11}};
冒泡法
– 从头至尾,将相邻两个数比较,将大的调到后头。 – 核心操作是比较和交换。
1
42
2
35
3
4
5 101
6
5
12交换 12 77 77
冒泡法
– 从头至尾,将相邻两个数比较,将大的调到后头。 – 核心操作是比较和交换。
1
42
2
35
3
12
4
77
5 101
6
5
不需要交换
冒泡法
– 从头至尾,将相邻两个数比较,将大的调到后头。 – 核心操作是比较和交换。
程序如下:
2 5
3 6
b=
1 2 3
4 5 6
#include <iostream> using namespace std; int main( ) { int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j;
cout<<″array a:″<<endl; for (i=0;i<=1;i++) { for (j=0;j<=2;j++) { cout<<a[i][j]<<″ ″;
2013年12月6日11时31分
易犯的错误: int n; cin>>n; int a[n];
//输入a数组的长度 //企图根据n的值决定数组的长度
2013年12月6日11时31分
5.2.2 引用一维数组的元素
数组必须先定义,然后使用。 引用形式:数组名[下标] 下标可以是整型常量或整型表达式。例如: int a[10];
cout<<″the sorted numbers :″<<endl; for(i=1;i<11;i++) //输出10个数 cout<<a[i]<<″ ″; cout<<endl; return 0; }
运行情况如下: input 10 numbers: 3 5 9 11 33 6 -9 -76 100 123↙ the sorted numbers: -76 -9 3 5 6 9 11 33 100 123
int f[20]={1,1}; //f[0]=1,f[1]=1 for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<20;i++) { if(i%5==0) cout<<endl; cout<<setw(8)<<f[i]; } cout<<endl; return 0; }
1
42
2
35
3
12
4
77
5
6
5 交换 101 101 5
冒泡法
– 从头至尾,将相邻两个数比较,将大的调到后头。 – 核心操作是比较和交换。
1
42
2
35
3
12
4
77
5 5
6
101
最大值正确地放置到了最后
想一想: – 如果有n个数,则要进行多少趟比较(和交换)。 – 每趟中进行多少次比较?
#include <iostream> using namespace std; int main( ) { int a[11]; int i,j,t; cout<<″input 10 numbers :″<<endl; for (i=1;i<11;i++) //输入a[1]~a[10] cin>>a[i]; cout<<endl; for (j=1;j<=9;j++) //共进行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;} //交换
a[0]= a[5]+ a[7]- a[2*3]
注意:引用时下标取值范围:[0,数组长度-1]
10个元素:a[0]、a[1]、…… a[9]
2013年12月6日11时31分
例:数组元素的引用。 #include <iostream> using namespace std; int main( ) { int i,a[10]; for (i=0;i<=9;i++) a[i]=i; for (i=9;i>=0;i--) cout<<a[i]<<″ ″; cout<<endl; return 0; } 输出什么结果?
3
4
5
这时,a[index]>a[2],index=2;
index
求最小值及下标
2
9
1
8 -2
45
0
1
2
3
4
5
这时,a[index]>a[4],index=4;
…… 求最小值及下标 int main(void) { int i, index, n; Enter n: 6 Enter 6 integers: 2 9 -1 8 1 6 int a[10]; min is -1 sub is 2 cout>>"Enter n: "; cin>>n; for(i = 0; i < n; i++) cin>>a[i]; index = 0; for(i = 1; i < n; i++) if(a[i] < a[index]) index = i; cout<<"min is"<< a[index]<<"sub is "<<index; return 0; }
2013年12月6日11时31分
5.2.4 一维数组程序举例
例: 用数组来处理求Fibonacci数列问题。 可以用20个元素代表数列中的20个数,从第3个数 开始,可以直接用表达式f[i]=f[i-2]+f[i-1] 求出各数。
2013年12月6日11时31分
#include <iostream> #include <iomanip> using namespace std; int main( ) { int i;
程序输出什么结果?
int main( )
{ int i, k, a[10], p[3];
k=5;
for(i=0;i<10;i++) a[i]=i;
for(i=0;i<3;i++)
for(i=0;i<3;i++) cout<< k; return 0; }
p[i]=a[i*(i+1)];
k+=p[i]*2;
for (i=0;i<=2;i++) //从第0行~第2行 for (j=0;j<=3;j++) //从第0列~第3列 if (a[i][j]>max) //如果某元素大于max { max=a[i][j]; //max将取该元素的值 row=i; //记下该元素的行号i colum=j; //记下该元素的列号j }
第5章 数组
想一想以下的问题: 计算fibonacci数列 求出矩阵中的最大数
2013年12月6日11时31分
5.1 数组的概念
0 1 2 9 1 1 2 3 5 8 13 2134 55 a[0] a[1] a[9]