C++数组与应用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

按数组排列的顺序赋值 int b[2][3] = { 1,2,3,4,5,6};
12 3 45 6
将数据依次赋给元素 b[0][0] , b[0][1] ……b[1][2]
注意: 此方法数据没有明显的界限, 当数据较多
时容易出错
←→
若全部都赋初值,第一维长度可省略 int b[][3] = { {1,2,3},{4,5,6}};
一维数组的输入和输出
数组的输入和输出只能逐个对数组元素进行操作 (字符数组例外) 定义:int a[10], i;
输入方法: 输入第i个数组元素: cin>>a[i]; 输入整个数组元素:
for (i=0;i<10;i++) cin>>a[i];
输出方法: 输出第i个数组元素: cout<<a[i]; 输出整个数组元素:
←→
(3) 对数组中部分元素指定初值 ( 这时不能 省略数组长度 ) 如 : int a[5] = { 1 , 3 , 5 };
(4) 使数组中的全部元素初始值都为 0 如: int a[5] = { 0 , 0 , 0 , 0 , 0 } ;
更简单的写法: int a[5]={ 0 } ;
←→
例: 输入50个成绩,求平均分 输出高于平均分的个数
数组的元素在内存中是连续存放的 int a[3][3] ; 的存放形式如下 :
1010 1014
a[0] a[0][0]a[0][1]a[0][2]
1018
a[1] a[1][0]a[1][1]a[1][2] a[2] a[2][0]a[2][1]a[2][2]
1022 1026 1030
授课内容
数组的概念 数组的定义
数组的应用 字符串 常见错误
←→
引入
例:某班有50名学生,求该班成绩的平均分
#include <iostream.h>
v假oid设m现ai在n( 不) 仅要求平均分,还要求高于平均分
{的i人nt数j ,, s那um就,不s ;能只使用一个变量s了,而需要50 个fs变luoma量t=0,a;但ve 这; 样一来输入、输出、计算都会变得
←→
数组的概念
1.数组:由具有相同类型的固定数量的元 素组成的结构
2.数组元素:每一个数组元素都是一个变
量,为了与一般的变量相区别,我们称数组
元素为下标变量
3.下标变量在数组中的位置序号称下标
下标变量的数据类型称为下标类型(或
元素类型)
←→
一维数组
一维数组的定义 一维数组的存储结构 数组元素的引用形式 一维数组的初始化 一维数组的输入和输出 一维数组程序设计举例(算法) ← →
Void main( )
{ int f[20]={1,1}, j;
for(j=2;j<=19; j++) //生成数列
f[j]=f[j-2]+f[j-1];
for( j=19; j>=0; j- -) // 逆序显示
cout<<f[j];
cout<<endl;
}
←→
2 二维数组
二维数组的定义 二维数组的存储结构 二维数组的初始化 二维数组元素的引用形式 二维数组的输入和输出 二维数组程序设计举例
int b[][]; int b[][]={1,2,3,4,5,6}; int b[n][m];
错!
←→
二维数组元素的引用形式
引用形式: 数组名[下标1][下标2]
注意 : (1) 每个下标都要用 [ ] 括起来 如 a [2] [1] 不能写成 a [2,1]
(2) 下标不要超过定义的范围 int a[3][4]; …. a[3][4]=4; 错 !
cout<<“\t”<<f [ i ]; } }
f[0] 1
f[1] 1
f[2] 20 f[3] 30 f[4] 50 f[5] 80
::
f[19] 67065
i=2 f[2]=f[0]+f[1]
i=3 f[3]=f[1]+f[2] i=4 f[4]=f[2]+f[3]
←→ห้องสมุดไป่ตู้
例: 输入一个数据,在已知数组中查找是否有该数据
float ave=0; for ( i=0; i<50 ; i++) { cin>>mark [i];
ave=ave+mark[i]; } ave=ave/50; for(i=0;i<50;i++) if (mark[i]>=ave) overn++; cout<< “平均分:”<<ave<<“ 分的人数有:”<<overn; }
如: int a[5] = { 1 , 3 , 5 , 7 , 9 } ;
2. 说明 (1) 初值用 { } 括起来, 数据之间用逗号分开. (2) 对数组的全体元素指定初值,可以不指明数组
的长度, 系统会根据{ }内数据的个数确定数组 的长度。 如 : int a[ ] = { 1 , 3 , 5 , 7 , 9 } ;
max=a[0][0]; for ( i=0 ; i<3 ; i++ )
for ( j=0 ; j<4 ; j++ ) if ( a[i][j]>max ) { max=a[i][j] ; row=i ; col=j ; }
cout<<“max=”<< max; cout<<“max=a[”<<row<<‘]’
break;
}
if ( i==10 )
cout<< “no find!” <<endl;
}
5 a[0] 8 a[1] 0 a[2] 1 a[3] 9 a[4] 2 a[5] 6 a[6] 3 a[7] 7 a[8] 4 a[9] ← →
练习:把F数列倒序输出
#include <iostream.h>
1034
C++将二维数组看作一维 1038
数组,其每个数组元素又
是一个一维数组
1042
a[0][0]
a[0][1]
a[0][2]
a[1][0]
a[1][1]
a[1][2]
a[2][0]
a[2][1]
a[2][2] ←

二维数组的初始化
分行赋值
int b[2][3] = { {1,2,3},{4,5,6}};
1010 95 a[0]
1014 80 a[1]
1018 66 a[2]
:
::
1046 84 a[9]
←→
数组元素的引用形式
数组元素的引用: 数组名[下标]
int a[10];
a[0]=2;
a[0] = a[2]+a[4]*2
• 说明
(1) 下标可以是整型常量或整型表达式 0
24
如: a[1] , a[2*3] (2) 数组定义为 int a[5] , 数组长度为5
#include <iostream.h> void main( ) { int i , overn=0 , mark[50] ;
float ave=0; for ( i=0; i<50 ; i++) { cin>>mark [i];
ave=ave+mark[i]; } ave=ave/50; for(i=0;i<50;i++) if (mark[i]>=ave) overn++; cout<< “平均分:”<<ave<<“ 高 ← → 于平均分的人数有:”<<overn;
繁f琐or.( j在=1这; j<种=5情0 况; j+下+,)我们可以使用数组类型,
说{明一cin个>>含s;有50个元素的数组,每个数组元素存
sum=sum+s;
放}一个成绩,成绩的输入、输出、计算都可通过
循a环ve来=s实um现/50.0;
cout<< “ave=”<<ave;
←→
}
#include <iostream.h> void main( ) { int i , overn=0 , mark[50] ;
一维数组的定义
数组: 是一组具有相同数据类型的变量 的有序集合。
格式 : 类型标识符 数组名[常量表达式];
例如: int a[10];
类型说明 数组名
常量表达式
←→
int a[10];
数组名:用户定义的标识符;数组名表示了一 个存储区的首地址 (即第一个数组元素的地址)
常量表达式的值为元素的个数 下标从0开始, a[0] , a[1] … a[9],没有a[10];
#include <iostream.h> void main()
9
{ int i , x ;
int a[10]={ 5, 8, 0, 1, 9, 2, 6, 3, 7, 4 };
cin>>x;
for ( i=0 ; i<10 ; i++)
if ( x==a[i] )
{ cout<<“find!”<<endl;
←→
二维数组的定义
格式: 类型标识符 数组名[常量表达式][常量表达式]
int b[2][3]; b为2×3(2行3列)的数组 b[0] ----b[0][0] b[0][1] b[0][2]
b b[1] ----b[1][0] b[1][1] b[1][2]
b[0][0] b[0] 10 b[1] 40
for ( j=0; j<3; j++) cout<<a[i][j]; ← →
例: 有一个3*4的矩阵, 编程求 出其中的最大值及其所在的行 号和列号。
←→
#include <iostream.h> void main( ) { int i , j, row=0, col=0 , max ;
int a[3][4]={ {5, 2, 0, 9}, {3, 7, 12, 6},{10, 4, 1, 8} };
b[0][1] 20
50
b[0][2] 30
60
←→
二维数组的存储结构
存放顺序:按行存放,先顺序存放第 一行的元素,再存放第二行的元素
int b[2][3];
b[0][2]
b[0][1] b[0][0]
b[0] 、b[1]可以 b[0] 作为数组名
b[1]
b[1][2]
b[1][1] b[1][0] ← →
高于平均
←→
1 数组的概念
在科学计算和数据处理中,要用到成批数据,这些 数据类型相同,且彼此间存在一定的顺序关系,为了 便于处理,引入了数组类型。
数组是一组有序数据的集合;数组中的每一个元 素都属于同一个数据类型。用一个统一的数组名和 下标来唯一的确定数组中的元素。
数列
5
8
3
2
9
6
一维数组
a[0] a[1] a[2] a[3] a[4] a[5]
下标
而下标在0 ---- 4之内, 即a[0] ---- a[4]
注意: 如果出现 a[5] = 72 ; 编译时不会指出错误, 系统会
将a[4]后下一个存储单元 赋值为72, 但这样可能会破坏数
组以外其他变量的值。
←→
一维数组的初始化
1. 概念 : 在定义一维数组时对各元素指定初始 值称为数组的初始化
常量表达式中不能有变量 常量表达式的值不能是实数
int n; cin>>n; int a[n]; …..
错误
←→
一维数组的存储结构
一个数组的所有元素都是连续存储的
int a[10]; 数组元素为: a[0],a[1],a[2]…..a[9]
所占空间为: 类型长度*元素个数
a
数组首地址
输入方法: 输入第i行第j列元素: cin>>a[i][j]; 输入整个数组的元素: for ( i=0; i<2; i++ )
for ( j=0; j<3; j++ ) cin>>a[i][j];
输出方法: 输出第i行第j列元素: cout<<a[i][j]; 输出整个数组的元素: for ( i=0; i<2; i++)
数组元素可以出现在表达式中,也可以被赋值
b[0][2] = b[1][0]+b[0][0]-b[0][2]; int b[][3] = { {1,2,3},{4,5,6}};
2
4
13
←→
二维数组的输入和输出
数组的输入和输出只能逐个对数组元素进行操 (字符数组例外)定义:int a[2][3], i, j;
for (i=0;i<10;i++) cout<<a[i];← →
例:用一维数组求Fibonacci 数列
#include<iostream.h> void main() { int i;
int f [ 20 ] = {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<<‘\n’;
<<‘[’<<col<<‘]’; }
5209 3 7 12 6 10 4 1 8
max 12
row 1
col 2
输出:
max=12
max=a[1][2] ←

例: 将一个矩阵进行转置(即原来的行变为列)
#include<iostream.h> void main( ) { int a[3][4], b[4][3] , i , j ;
相关文档
最新文档