C++大学基础教程
第5章 数组
北京邮电大学电信工程学院
计算机技术中心
第5章 数 组
5.1 数组基本概念
5.2 数组元素的下标
5.3 数组初始化
5.4 数组的大小和越界数组
5.5 字符数组
5.6 向函数传递数组
5.7 多维数组
5.1 数组基本概念
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-4-
5.1数组基本概念
数组是具有一定顺序关系的若干相同类型元素
的集合。
组成数组的变量称为该数组的元素。
数组元素都有相同的变量名(数组名),但是
有不同的下标。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-5-
一维数组
一维数组的说明方法为数据类型加数组名,再
加方括号,里面含有元素个数。即:
类型说明符 数 组名[常量表达式];
数组名的命名规则和变量名相同。
常量表达式表示数组元素的个数,即数组长
度。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-6-
一个字符数组例子
下面的代码说明一个字符数组:
? char a [5];
即:字符数组 “char a[5]”,存储该数组占5个字
节。每个元素的类型是字符型。数组下标从0开
始,分别是a[0],a[1],a[2],a[3],a[4]。
请注意:数组元素的下标从0开始。并且,a[5]
不属于该数组的空间范围。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-7-
数组在内存中的存放
数组元素都是存放在一片连续的内存单元中的。
下图显示 char name[]=”Ray Krebbs”的内存情况
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-8-
5.1.2数组的定义
和简单变量相同,数组也必须先定义,然后才可以
引用。定义数组的一般格式是:
类型说明符 数 组名[常量表达式1] [常量表达式2] ….
[常量表达式n];
下面的语句定义了一个有五个整数的数组:
intages[5];
数组ages此时的内容是不确定的,编程中不能想
当然地认为它全为0。或其他什么值。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-9-
定义数组应包括的几个方面
?确定数组元素的类型
? 可以是如整型、浮点型等简单类型,也可以是结构体、
类等用户自定义类型。
?确定数组的名称
? 由 “标识符 ”指定,数组名是一个常量,代表着数组元素
在内存中的起始地址。
?确定数组的结构
? 包括数组的维数(有几个常量表达式),维的大小等,
也就是常量表达式的具体形式。常量表达式的值必须是
正整数。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-10-
错误的数组定义语句
void VoidArray[10];
//void不可以做数组类型
inta=9; float floatArray[8];
//下标表达式不可以是变量
char charArray[1.5+1.5];
//3.0不是整数
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-11-
例5.1 定义一个含10整数的数组
解:以ARRAY命名的数组,用100至109对数组元素赋
值,并对其求和。需要在一个循环中使用数组。这是使用
数组最经常的方式。
void main()
{ intARRAY [10];
intsum=0;
for (inti=0;i<10;i++)
{ ARRAY[i]=100+i;
sum+= ARRAY[i];
}
}
5.2 数组元素的下标
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-13-
5.2数组元素的下标
数组的元素是由下标来区分的。使用数组时,只
能分别对数组的各个元素操作。
对于一个已经声明过的数组,其元素的使用形式
为:
数组名[下标表达式]
例如
? salaries [6];
? inta=5; salaries[a];
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-14-
注意
在使用数组元素时需要注意:
?数组元素的下标表达式其结果必须为正整
数。
?数组元素的下标值不得超过声明时所定义的
上下界。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-15-
数组的下标
数组元素的下标是数组元素到数组开始地址的
偏移量。
第1个元素的偏移量是0个数组元素大小,第2
个元素的偏移量是1个数组元素大小,依次类
推。
因此,数组元素是一系列大小相同的连续项,
每项到公共基点(数组起始地址)的偏移量是
固定的。
5.3 数组初始化
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-17-
5.3数组初始化
数组的初始化就是在定义数组时给部分或全部
元素赋初值。
对于简单数据类型的数组,就是给数组元素赋
值;
对于对象数组,每个元素都是某个类的一个对
象,初始化就是调用该对象的构造函数。我们
会在后面单独详细介绍。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-18-
初始化数组的方法
在使用数组元素之前,必须先对它们赋值。
有以下两种初始化数组的方法:
?在定义数组时初始化
?在程序中对数组进行初始化
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-19-
全局数组初始化
C++自动将全局数组变量中的所有元素初始化为
0或null。
? 如果未赋初值,那么一个全局的字符数组中的所有元
素将为null(空),一个全局的数字数组中的所有元素将
为0。
程序中应尽量限制全局数组变量的使用。如果要
用,也最好在程序中用语句将其显式初始化为
0,以明确表示编程者的意图。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-20-
5.3.1数组成员的初始化
数组初始化时,用作初始化的数组元素值放在一
个大括号{}中
例如:
inta[3]={ 1, 1, l };
//含三个元素的整型数组,元素的值都是1
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-21-
注意
初始化值的个数可少于数组元素个数。没有被
初始化的元素将赋值为0。
初始化数组的值的个数不能多于数组元素个
数,也不能使用逗号来省略对部分元素的初始
化,这种做法在C中是允许的,但在C++中不
允许。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-22-
错误例子
例如下面的代码对数组进行初始化是错误的:
intarray1[5]={0,1,2,3,4,5};
//error初始化值个数多于数组元素个数
intarray2[5]={, , 1, 2, 3 };
//error不能加入 “,”来跳过不赋值的元素。
intarray2[5]={0,,2,3,4};
//error不能加入 “,”来跳过不赋值的元素。
intarray3[5]={ };
//error语法格式错误
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-23-
例5.2 初始化全局和局部数组
#include <iostream>
using namespace std;
int array1[5]={1,2,3};
static int array2[5]={1};
void main()
{ int arr1[5]={2};
static int arr2[5]={1,2};
int n;
cout <<"global:\n";
for(n=0; n<5; n++)
cout <<" " <<array1[n];
运行结果为:
global: 1 2 3 0 0 //全局数组初始化的结果
global static: 1 0 0 0 0 //全局静态数组初始化的结果
local: 2 0 0 0 0 //局部数组初始化的结果
local static: 1 2 0 0 0 ////局部静态数组初始化的结果
? cout <<"\nglobal static:\n";
? for(n=0; n<5; n++)
? cout <<" " <<array2[n];
? cout <<"\nlocal:\n";
? for(n=0; n<5; n++)
? cout <<" " <<arr1[n];
? cout <<"\nlocal static:\n";
? for(n=0; n<5; n++)
? cout <<" " <<arr2[n];
? cout <<endl;
?}
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-24-
5.3.2在程序中进行初始化
大多数情况下,在定义数组时并不知道它的内
容,需要在程序中,由用户输入或读磁盘文件
数据对数组进行初始化。这时,for循环语句是
一个强有力的工具。
在数组使用中,数组名不能出现在赋值语句中
等号的左边。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-25-
注意
不能直接把一个数组赋给另一个数组。假设要将
数组total_sales的值拷贝到数组saved_sales中,
使用下面的赋值方法就是错误的:
saved_sales =total_sales; //error
应使用一个循环语句将total_sales中的元素的值
逐个赋给数组saved_sales中的每个元素。如下面
的代码所示:
? for (inti=0;i<ARRAY_SIZE;i++)
saved_sales[i] =total_sales[i];
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-26-
例5.3 将5个温度值赋给数组
#include "stdafx.h"
#include<iostream.h>
void main()
{ float temp[5];
temp[0]=31.3;
temp[1]=28.7;
temp[2]=32.2;
temp[3]=34.5;
temp[4]=19.7;
cout<<"Daily temperature for 5 days\n";
for (int i=0;i<10;i++)
cout<<temp[i]<<"\n";
}
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-27-
5.3.3数组省略初始化方法
有初始化的数组定义可以省略方括号中的数组
大小。
例如,下面的代码中数组定义为5个元素:
intarray[]={0,1,2,3,4};
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-28-
数组的大小
编译时必须知道数组的大小。通常,声明数组时
方括号内的数字决定了数组的大小。
有初始化的数组定义又省略方括号中的数组大小
时,编译器统计花括号之间的元素个数,以求出
数组的大小。
例如,下面的代码产生相同的结果:
intarray1[5]={0,1,2,3,4};
intarray2[]={0,1,2,3,4};
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-29-
大括号的使用
通过使用大括号,可初始化任何一种类型的数组。
例如如,要记录前三年的销售总额,则可以如下定
义并初始化一个数组:
? double sales[]= {4323.43,122355.32,343324.96}
注意:上面这种使用大括号来初始化数组的方法
只能在定义数组时使用。在数组定义之后,就不能
用这种方法了,而只能逐个元素地赋值。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-30-
元素赋0
如果在数组定义时,只对其中部分元素赋了初
值,C++会自动将其余的元素赋0。
如果希望将一个大数组中的所有元素同时初始化
为0,则可以在定义这个数组时,只将数组的第
一个元素赋初值0。
这样,系统会自动把其余的元素都赋为0。
5.4 数组的大小和越界数组
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-32-
5.4数组的大小和数组越界
定义数组时,编译器必须知道数组的大小。
如果数组定义时省略了大小,只是由初始化的值
来决定其大小。在程序中怎么知道数组的大小
呢?
sizeof操作解决了该问题。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-33-
sizeof
sizeof()能够返回传递给它的数据类型所占用内存的
字节数。
如果将一个数组变量传给sizeof(),则它将返回系统
为此数组在内存中预留的字节数。
因此,数组的大小可用用以下公式来计算:
数组大小 = sizeof(数组名) / sizeof(数组类型)
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-34-
例5.7 用sizeof确定数组的大小
#include <iostream>
using namespace std;
void main()
{ int a[]={1,2,4,8,16};
for(int i=0; i<(sizeof(a)/sizeof(int)); i++)
cout <<a[i] <<" ";
cout <<endl;
}
运行结果为:
1 2 4 8 16
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-35-
数组和字符串
对于字符串的初始化,要注意数组实际分配的
空间大小是字符串中字符个数加上末尾的 ’\0’
结束符。
例5.8 比较字符串数组大小和字符串长度的差
别。
解:用sizeof计算数组大小,用strlen函数计算
字符串长度。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-36-
例5.8中 exemptions和 sal_codes
两个数组在内存中的存放
5.5 字符数组
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-38-
5.5字符数组
我们知道,字符串常量是用一对双引号括起来的
字符序列,每个字符占一个字节,并在末尾添
加 ’\0’作为结尾标记。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-39-
5.5.1字符数组定义
C++的基本数据类型变量中,却没有字符串变
量,而是使用字符型数组来存放字符串。
如果我们对数组进行初始化赋值时,在末尾放
置一个 ’\0’,便构成了C++字符串。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-40-
例5.9 字符数组的初始化和使用。
#include <iostream.h>
void main()
{ char str1[8]={112,114,111,103,114,97,109,0 };
char str2[8]={'P','r','o','g','r','a','m','\0' };
char str3[8]="program";
char str4[]="program";
for (int i=0;i<8;i++)
cout<<str1[i];
cout<<endl;
cout<<str2<<endl;
cout<<str3<<endl;
cout<<str4<<endl;
}
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-41-
注意
字符串整体输入/输出时,要注意:
◆输出字符不包括 ’\0’。
◆输出字符串时,输出项是字符数组名,输出
时遇到 ’\0’结束。
◆输入多个字符串时,以空格分隔;输入单个
字符串时其中不能有空格。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-42-
5.5.2初始化字符数组
初始化字符数组有两种方法,
一种是:
? char array[10]={“hello”};
另一种是:
? char array[10]={ ’h’, ’e’, ’l’, ’l’, ’o’, ’\0’};
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-43-
比较
第一种方法用途较广,初始化时,系统自动在数组没有填
值的位置用 ’\0’补上。另外,这种方法中的花括号可以省
略,即能表示成:
? char array[10]=“hello”;
第二种方法一次一个元素地初始化数组,如同初始化整型
数组。这种方法通常用于输入不容易在键盘上生成的那些
不可见字符。
例如,下面的代码中初始化值为若干制表符:
? char array[10]={ ’\t’, ’\t’, ’\t’, ’\t’, ’\0’};
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-44-
注意
这里不要忘记为最后的 ’\0’分配空间。如果要初
始化一个字符串 “hello”,那为它定义的数组至少
有6个数组元素。
例如,下面的代码给数组初始化,但会引起不可
预料的错误:
? char array[5]=“hello”;
该代码不会引起编译错误,但由于改写了数组空
间以外的内存单元,所以是危险的。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-45-
5.5.3 for循环用于字符数组
字符数组,也称为字符串,实际上是1字节的
整数数组。
处理字符数组的方法与处理其他数组相同,但
若考虑到了字符串末尾的 ’\0’结束符,是很有
益的。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-46-
例5.10字符串的输入和输出
输入一个字符串,输出这个字符串及字符数目。
#include <iostream>
using namespace std;
void main()
{ int a=0;
char chArray[30];
cin>>chArray;
for(int i=0; chArray[i]!='\0'; i++)
{cout <<chArray[i];
a++;
}
cout <<endl;
cout<<"输入的字符数是: "<<a<<endl;
}
5.6 向函数传递数组
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-48-
5.6 向函数传递数组
无论何时,将数组作为参数传给函数,实际上只是
把数组的地址传给函数。
物理上,把整个数组放在栈中是不合理的,因为栈
大小是一定且有限的。
如果把传送给函数的整个数组都放在栈中(内存的
大块复制),则很快会把栈空间用光。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-49-
5.6.1传递给标准库函数
C++中有一个memset()的函数,它可以一字节一字节
地把整个数组设置为一个指定的值。
memset()函数在 mem.h头文件中声明,它把数组的
起始地址作为其第一个参数,第二个参数是设置数组
每个字节的值,第三个参数是数组的长度(字节数,不
是元素个数)。
其函数原型为:
void * memset(void*,int,unsigned);
其中void*表示地址。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-50-
例5.11 传递数组名给memset函数
下面的代码用数组做参数传递给标准函数memset(),以让
其将数组设置成全0。
void main()
{ intarray1[5];
intarray2[50];
memset(array1,0 ,5*sizeof(int));
memset(array2,0 ,50*sizeof(int));
}
memset()的第一个实参是数组名,数组名作参数即数组
作参数,它仅仅只是一个数组的起始地址而已。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-51-
5.6.2传递给自定义函数
若要让一个函数求数组元素的和,需传递一个
数组参数和数组大小参数。因为从传递的数组
参数(地址)中,没有数组大小的信息。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-52-
例5.12 数组名作为函数的形参
using namespace std;
int sum(int [], int);
void main()
{ static int ia[5]={2,3,6,8,10};
int sumOfArray;
sumOfArray=sum(ia, 5);
cout <<“数组元素的和等于 : ”
<<sumOfArray <<endl;
}
运行结果为;
数组元素的和等于 : 29
? int sum(int array[], int len)
?{ intiSum=0;
? for(int i=0; i<len; i++)
? iSum+=array[i];
? return iSum;
?}
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-53-
注意
sum()函数以整数数组作为第一个参数,以整
数作为第二个参数。
由于传递数组名实际上传递的是地址,所以函
数原型中,数组参数的书写形式无须在方括号
中写明数组大小。
如果写明了数组大小,编译器将忽略之。数组
形参的全方括号只是告诉函数,该参数是个数
组的起始地址。
5.7 多维数组
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-55-
5.7.1理解多维数组
一维数组是多个数值的单列表示,而多维数组
则是数值的表格,甚至多表格表示,它具有多
个下标值,最常用的表格是二维表格(具有两个
下标)。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-56-
例子
假定要记录一个垒球队中每个队员的击球数。队中有6个队
员,进行了3场比赛。表中所示为击球记录。
队员姓名 1 1 1
张大明 2 2 2
李方春 3 3 3
林志松 2 2 2
崔明东 1 1 1
刘屈武 0 0 0
安度璧 1 1 1
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-57-
三维表的图示
C++提供存储多
维数据的能力,
尽管现实世界很
少碰到三维以上
的情况。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-58-
5.7.2多维数组的表示方式
表示多维数组时,你必须让C++明白数组具有
多维。数组名后应具有多个下标,每个下标代表
一个维、并用中括号括起。
例如,可使用下面的多维数组声明一个6行3列的
整型数组teams:
? intteams[6][3]; //二维数组
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-59-
表5.2球队数组的下标
team表具有18个元素,元素下标值如下表
[0][0] [0][0] [0][0]
[0][1] [0][1] [0][1]
[0][2] [0][2] [0][2]
[1][0] [1][0] [1][0]
[1][1] [1][1] [1][1]
[1][2] [1][2] [1][2]
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-60-
总元素个数
多维数组的总的元素个数可以通过下标相乘获得。
假如你要记录年度使用的账单,如下数组声明所
示,
? float utilities[12][4];
记录12个月中四项开支的账单,数组元素为浮点类
型。12乘以4得48,于是这个数组有48个元素。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-61-
5.7.3数组在内存的映象
C++存储多维数组的方式与绝大多数其他的编
程语言略有不同。
通过使用下标,不了解多维数组的内存映象也
可以对其进行操作。
但是,大多数C++程序员认为有必要深入理解
数组在内存中的形式,这对编制高级应用程序
很有用处。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-62-
传递和接收多维数组
二维数组实际上是 “数组的数组 ”,它以行和列
的形式出现,实际上还是一个一维数组,只不
过数组的每个元素的类型不是整型,浮点型或
字符型,而是另外一个数组。
传递和接收多维数组关键在于应明白多维数
组是数组的数组。C++通过地址参数传递数
组,多维数组也不例外。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-63-
例子
假定你定义了一个称为 scores的5×6的整型数组,把
scores传给一个称为print_it()的函数:
print_it (scores); //pass table to a function
函数print_it()必须知道所接收参数的类型以及该参数是
一个数组,如果传递的参数x一维数组,可以如下编写语
句:
print_it (intscores[]);
//Works only If scores is 1 dimensional
或
print_it (intscores[10]);
//Assuming scores have 10 elements
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-64-
C++按行存储多维数组
通常,你无需过多考虑表格的物理存储方式,
多维表即是元素为数组的数组,编程时只要用下
标表示它们的行、列位置就行了。
多维数组按行存储。考虑一个4×4的表格,图
5.4所示为这个表的直观映象,二维表内存映象
依然是顺序的存储。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-65-
二维表的内存映象
C++按行把多维数组映
射到线性内存
图示一个4×4的数组
? inttable[3][3]
的内存映象
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-66-
5.7.4定义多维数组
C++是宽松的,它允许在说明部分,初始化并
定义多维数组。和一维数组一样,在初始化多
维数组时要使用大括号。因为多维数组是数组
的数组,所以在初始化时要使用嵌套的括号。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-67-
例子
初始化三个数组:aral,ara2 和 ara3。
intaral[5]={8, 5, 3, 25, 41};
? //一维数组
intara2[2][4]={{4, 3, 2, 1}, {1,2,3,4}};
? //二维数组
intara3[3][4]={{l,2,3,4}, {5,6,7,8}, {9,10,11,12}};
? //二维数组
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-68-
以一维数组的形式进行初始化
C++亦允许多维数组以一维数组的形式进行初始
化,但必须注意要按行排列
下面是ara 2和ara 3的另一种初始他形式:
intara2[2][4]={4, 3, 2, 1,1,2,3,4};
intara3[3][4]={ l,2,3,4,5,6,7,8,9,10,11,12};
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-69-
二维数组看作是
一维数组的一维数组
一维数组的4个元素是ara_name[0] ̄
ara_name[3]。每一个元素则是其对应的一维
数组的首地址。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-70-
5.7.5表格与for循环
嵌套循环适用于多维数组
注意到for循环的循环次数与数组的下标数目相
同,外层循环代表第一个下标(行下标);内层循
环代表第二个下标(列下标)。
嵌套for循环将遍历表中的每一个元素。
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-71-
例5.13嵌套for循环处理多维表
intmain()
{for (row=0;row<2;row++)
{for (col=0;col<4;col++)
cout<<row<<””<<col<<"\n";
}
}
将产生如下输出结果
00
01
02
10
11
12
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-72-
注意
表格的数据输入可以使用cin(),get()或其他函
数,也可以在说明表格时为元素赋值。
通常使用来自磁盘上的数据文件。不管使用什么
方法存储多维数组的数值,都可以使用嵌套for
循环遍历每个元素
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-73-
例5.15 输出带标题的二维表格
void main()
{ float disk[2][4]; //存放磁盘价格表
int row,col;
disk[0][0]=2.30; //第一行第一列
disk[0][1]=2.75;
disk[0][2]=3.20;
disk[0][3]=3.50;
disk[1][0]=1.75;
disk[1][1]=2.10;
disk[1][2]=2.60;
disk[1][3]=2.95;
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-74-
cout<<"\tSingle-Side,\tDouble-Side"
<<"\tSingle-Side,\tDouble-Side\n";
cout<<"\tDouble-density,\tDouble-density"
<<"\tHigh-density,\tHigh-density\n";
for (row=0;row<2;row++) //打印表格
{ if (row==0)
cout<<"3 inch\t";
else
cout<<"5 inch\t";
for (col=0;col<4;col++)
cout<<"$"<<setprecision(2)
<<disk[row][col]<<"\t\t";
cout<<"\n";
}
}
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-75-
程序运行结果
输出带标题的二维表格
Single-Side
Double-density,
Double-Side
Double-
density
Single-Side
High-density
Double-Side
High-density
3 inch $2.30 $2.75 $3.20 $3.50
5 inch $1.75 $2.10 $2.60 $2.95
2005-4-28
北京邮电大学电信工程学院计算机技术中心
-76-
本章小结
本章介绍了如何定义和初始化一个数组。数组的初始化可
以在声明部分进行,也可以在程序体中进行。
现在我们已经学习过了如何定义,初始化及处理多维数
组,尽管并非所有数据适用于表格的紧缩格式,但它确实
在很多时候非常有用。使用嵌套for循环可以遍历多维数
组。
通过本章的学习,我们知道,通过引入数组,处理数组元
素比处理相同个数的单个变量要简单得多