C++数组与应用
#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;
繁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], i;
输入方法: 输入第i个数组元素: cin>>a[i]; 输入整个数组元素:
for (i=0;i<10;i++) cin>>a[i];
输出方法: 输出第i个数组元素: cout<<a[i]; 输出整个数组元素:
名[常量表达式][常量表达式]
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
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] ← →
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’;
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
←→
(3) 对数组中部分元素指定初值 ( 这时不能 省略数组长度 ) 如 : int a[5] = { 1 , 3 , 5 };
(4) 使数组中的全部元素初始值都为 0 如: int a[5] = { 0 , 0 , 0 , 0 , 0 } ;
更简单的写法: int a[5]={ 0 } ;
←→
例: 输入50个成绩,求平均分 输出高于平均分的个数
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}};
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>
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; }
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} };
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; 错 !
#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;
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]
←→
例: 输入一个数据,在已知数组中查找是否有该数据
授课内容
数组的概念 数组的定义
数组的应用 字符串 常见错误
←→
引入
例:某班有50名学生,求该班成绩的平均分
#include <iostream.h>
v假oid设m现ai在n( 不) 仅要求平均分,还要求高于平均分
{的i人nt数j ,, s那um就,不s ;能只使用一个变量s了,而需要50 个fs变luoma量t=0,a;但ve 这; 样一来输入、输出、计算都会变得
数组元素可以出现在表达式中,也可以被赋值
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;
下标
而下标在0 ---- 4之内, 即a[0] ---- a[4]
注意: 如果出现 a[5] = 72 ; 编译时不会指出错误, 系统会
将a[4]后下一个存储单元 赋值为72, 但这样可能会破坏数
组以外其他变量的值。
←→
一维数组的初始化
1. 概念 : 在定义一维数组时对各元素指定初始 值称为数组的初始化