好文档 - 专业文书写作范文服务资料分享网站

6 第6章 数组、指针与字符串(一) 

天下 分享 时间: 加入收藏 我要投稿 点赞

第6章 数组、指针与字符串(一) 6.1 数组的定义与初始化 6.1.1 数组的定义与使用

● 数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素。 数组的定义

● 例如:int a[10];

表示a为整型数组,有10个元素:a[0]...a[9] ● 例如: int a[5][3];

表示a为整型二维数组,其中第一维有5个下标(0~4),第二维有3个下标(0~2),数组的元素个数为15,可以用于存放5行3列的整型数据表格。 数组的使用 ● 使用数组元素 必须先声明,后使用。

只能逐个引用数组元素,而不能一次引用整个数组 例如:a[0]=a[5]+a[7]-a[2*3] 例如:b[1][2]=a[2][3]/2 例6-1 数组的声明与使用 //例6_1 数组的声明与使用.cpp #include using namespace std; int main() {

int a[10], b[10];

for(int i = 0; i < 10; i++) { a[i] = i * 2 - 1;

b[10 - i - 1] = a[i]; }

}

for(int i = 0; i <10; i++) {//如果i=1;i<=10;i++会造成数组越界 cout << \ << i << \ << a[i] << \; cout << \ << i << \ << b[i] << endl; }

return 0;

运行结果:

6.1.2 数组的存储与初始化 一维数组的存储

数组元素在内存中顺次存放,它们的地址是连续的。元素间物理地址上的相邻,对应着逻辑次序上的相邻。 例如:

一维数组的初始化

在定义数组时给出数组元素的初始值。

● 列出全部元素的初始值

例如:static int a[10]={0,1,2,3,4,5,6,7,8,9};

● 可以只给一部分元素赋初值

例如:static int a[10]={0,1,2,3,4};

● 在对全部数组元素赋初值时,可以不指定数组长度

例如:static int a[]={0,1,2,3,4,5,6,7,8,9} 二维数组的存储

● 按行存放

例如: float a[3][4]; 可以理解为:

其中数组a的存储顺序为:

a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23 二维数组的初始化

● 将所有初值写在一个{}内,按顺序初始化

例如:static int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12

● 分行列出二维数组元素的初值

例如:static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

● 可以只对部分元素初始化

例如:static int a[3][4]={{1},{0,6},{0,0,11}};

● 列出全部初始值时,第1维下标个数可以省略

例如:static int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 或:static int a[][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

注意:

● 如果不作任何初始化,内部auto型数组中会存在垃圾数据,static数组中的数据默认初始

化为0;

● 如果只对部分元素初始化,剩下的未显式初始化的元素,将自动被初始化为零; ● 现在我们来看一个用数组存放Fibonacci数列的例子。

例: 求Fibonacci数列的前20项 //例6_1_2 求Fibonacci数列的前20项.cpp #include using namespace std;

int main() {

int f[20] = {1,1}; //初始化第0、1个数

for (int i = 2; i < 20; i++) //求第2~19个数 f[i] = f[i - 2] + f[i - 1];

for (int i=0;i<20;i++) { //输出,每行5个数

if (i % 5 == 0) cout << endl; cout.width(12); //设置输出宽度为12

cout << f[i]; }

return 0; }

运行结果:

一维数组应用举例

循环从键盘读入若干组选择题答案,计算并输出每组答案的正确率,直到输入ctrl+z为止。 每组连续输入5个答案,每个答案可以是'a'..'d'。 例6-1-3: 一维数组应用举例 //例6_1_3 一维数组应用举例.cpp #include

using namespace std;

int main() {

const char key[ ] = {'a','c','b','a','d'}; const int NUM_QUES = 5; char c;

int ques = 0, numCorrect = 0;

cout << \ << NUM_QUES << \ << endl; while(cin.get(c)) { if(c != '\\n') {

if(c == key[ques]) {

numCorrect++; cout << \; } else

cout<<\; ques++; } else {

cout << \ << static_cast(numCorrect)/NUM_QUES*100 << \;

ques = 0; numCorrect = 0; cout << endl; } }

return 0; }

运行结果:

6.1.3 数组作为函数参数

● 数组元素作实参,与单个变量一样。

● 数组名作参数,形、实参数都应是数组名(实质上是地址.关于地址详见6.2)。类型要—样,传送的是数组首地址,对形参数组的改变会直接影响到实参数组。 例6-2 使用数组名作为函数参数

6 第6章 数组、指针与字符串(一) 

第6章数组、指针与字符串(一)6.1数组的定义与初始化6.1.1数组的定义与使用●数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素。数组的定义●例如:inta[10];表示a为整型数组,有10个元素:a[0]...a[9]●例如:inta[5][3];表示a为整型二维数
推荐度:
点击下载文档文档为doc格式
99u461vpas6x2111f20r4n7xz5ee5l00biq
领取福利

微信扫码领取福利

微信扫码分享