教学内容: 2.1 数据类型 2.2 常量 2.3 变量 2.4 数组 小结...

53
1 教教教教2.1 教教教教 2.2 教教 2.3 教教 2.4 教教 教教 教教教教教教教教教教教教教教 教2教 教教教教教

Upload: reuben

Post on 08-Jan-2016

107 views

Category:

Documents


11 download

DESCRIPTION

第 2 章 常量和变量. 教学内容: 2.1 数据类型 2.2 常量 2.3 变量 2.4 数组 小结 教学重点: 变量和数组的使用方法. 整 型 int. 字符型 char. 基本数据类型. 实 型 float 双精度型 double. 实 型. 逻辑型 bool. C++ 的数据类型. 空值型 void. 数组 指针 结构 struct 联合 union 枚举 enum 类 class. 非基本数据类型. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

1

教学内容: 2.1 数据类型 2.2 常量 2.3 变量 2.4 数组 小结教学重点: 变量和数组的使用方法

第 2 章 常量和变量

Page 2: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

2

2.1 C++ 中的数据类型

图 2-1 C++ 的数据结构

实 型 float双精度型 double

C++ 的数据类型

基本数据类型

非基本数据类型

数组 指针 结构 struct联合 union枚举 enum类 class

整 型 int字符型 char

逻辑型 bool空值型 void

实 型

Page 3: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

3

C++ 对基本数据类型也分别进行了封装,称为内置数据类型,内置数据类型不仅定义了数据类型,还定义了常用操作。本节仅介绍各种基本数据类型的定义,常用操作将在后面介绍。 C++ 为强类型语言,所有数据的使用严格遵从“先说明后使用”的原则,以便编译器进行编译。 整型用来存放整数,整数(有符号的整数)在内存中存放的是它的补码,无符号数没有符号位,存放的就是原码。整数占用的字节数与机型有关, 32位机上占用 4个字节。

Page 4: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

4

字符型用来保存字符,存储的是该字符的 ASCII 码,占用一个字节。如大写字母 A的 ASCII 码为 65 ,在对应的一个字节中存放的就是 65。字符型数据从本质上说也是整数,可以是任何一个 8位二进制整数。

由于汉语系统字符很多,用 ASCII 字符集处理远远不够,因此又创立了双字节字符集( DBCS : double-byte character set ),每个字符用两个字节来编码。为便于软件的国际化,国际上一些知名公司联合制定了新的宽字节字符标准——Unicode 。该标准中所有字符都是双字节的,不同的语言和字符集分别占用其中一段代码。这种用统一编码处理西文、中文及其它语言符号,就是 unicode 码。 C++同时也支持宽字符类型( wchar_t ),或称双字节字符型。

Page 5: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

5

实型和双精度型都用来存放实数,两者表示的实数精度不同。实数在内存中以规范化的浮点数存放,包括尾数、数符和阶码。数的精度取决于尾数的位数, 32 位机上实型为 23 位(因规范化数的数码最高位恒为 1 ,不必存储,实际为 24 位),双精度为 52 位。 逻辑型也称布尔型,其取值为 true (逻辑真)和 false (逻辑假),存储字节数在不同编译系统中可能有所不同, VC++6.0 中为 1 个字节。布尔型在运算中可以和整型相互转化, false 对应为 0 , true 对应为1 或非 0空值型主要用来说明函数的返回值类型,将在函数一章中具体介绍。 基本数据类型还可以加上一些修饰词,包括: signed (有符号)、unsigned (无符号)、 long (长)、 short (短)。参见下表:

Page 6: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

6

类 型 名 称 占用字节数 取 值 范 围char 字符型 1 -128 127

signed char 有符号字符型 1 -128 127

unsiged char 无符号字符型 1 0 255

short [int] 短整型 2 -32768 32767

signed short [int] 有符号短整型 2 -32768 32767

unsigned short [int] 无符号短整型 2 0 65535

int 整型 4-231 ( 231-

1 )signed [int] 有符号整型 4

-231 ( 231-1 )

unsigned [int] 无符号整型 4 0 ( 232-1 )long [int] 长整型 4

-231 ( 231-1 )

signed long [int] 有符号长整型 4-231 ( 231-1 )

unsigned long [int] 无符号长整型 4 0 ( 232-1 )float 单精度浮点型 4 -1038 1038

VC++ 中所有基本数据类型

Page 7: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

7

类型 名称 占用字节数 取值范围

double双精度浮点型 8 -10308 10308

 

long double

长双精度浮点型 16 -104932104932

 

bool 布尔型 1 true,false

void 空值型 0 无值

Page 8: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

8

2.2 常量

1. 整型常量

4. 字符串常量3. 字符型常量2. 实型(浮点型)常量

•常量,指程序中直接给出的量;•常量的值在程序执行过程中保持不变;并且存储在程序区,而非数据区;

•2.2.1 常量的种类•根据取值和表示方法的不同,可分为以下几种:

5. 枚举常量

Page 9: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

9

1. 整型常量

十进制表示法八进制表示法十六进制表示法其他表示法

•即整数,可以有多种表示方法 :

Page 10: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

10

整数的十进制表示方法十进制表示与我们熟悉的书写方式相同。

15 -24

Page 11: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

11

整数的八进制表示 八进制表示以 0 开始,由数字 07 组成,用来表示一个八进制数。

如:

012 // 八进制数 12 ,即十进制数 10

-0655 // 八进制数 -655 ,即十进制数 -429

Page 12: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

12

整数的十六进制表示 十六进制以 0X ( X 大小写均可)开始,由数字 09 和字母 AF (大小写均可)组成,用来表示一个十六进制数。

以下是一些常整数的例子:

0x32A // 十六进制数 32A ,即十进制数 810

-0x2fe0 // 十六进制数 -2fe0 ,

// 即十进制数 -12256

Page 13: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

13

整数的其他表示方法 整型常量还可以表示长整数和无符号整数。长整型常数以 L 或 l 结尾,无符号常整数以 U 或 u 结尾,以 U L 或 L U (大小写均可)结尾则可表示无符号长整型常数。

例如:

-84L // 十进制长整数 -84

026U // 八进制表示的无符号整数 26

0X32LU // 十六进制表示的无符号长整型数 32 。

Page 14: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

14

2. 实型常量

(1) 一般形式与平时书写形式相同,由数字 0 9和小数点组成。例如:0.23 -125.76 0.0 .46 -35.(2) 指数形式(也称为科学表示法)表示为尾数乘以 10 的次方形式,由尾数、 E 或 e 和阶数组成。指数形式要求在 E或 e 前面的尾数部分必须有数字,后面的指数部分必须为整数。

实型常量的末尾加后缀 f 或 F 表示单精度实型,否则表示双精度实型。 例 : 判断下列表示是否合法

123E12 -.34e-2 E4

1.43E3.5

•包含小数点和 10的幂的数为实型常量,有两种表示方法:

3.14159D3.14159f

Page 15: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

15

3. 字符型常量 字符常量是用单引号引起来的单个字符。在内存中保存的是字符的 ASCII 码值。在所有字符中,有些是可显示字符,通常就用单引号引起来表示: ’ a′ // 字符 a ’@’ // 字符 @

’4’ // 字符 4’ ’ // 空格字符

有些是特殊情况字符,如不可显示的字符等, c++ 使用转义序列表示方法,如(详见表 2-3 ,此处略):

’\n’ // 换行 ’\\’ // 字符 \

Page 16: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

16

4. 字符串常量

字符串常量与字符型常量的区别字符串常量” a”占两个字节,存放’ a′ 和’ \0’ ,值为 0x6100

字符型常量’ a’ 占一个字节,存放’ a’ ,值为 0x61

•用双引号引起来的若干个字符称为字符串常量。

例如 :″I am a Chinese.″,″123″, ″a″ ,

″ ″

a

\0

a

Page 17: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

17

5. 枚举常量 枚举型是对一些命名 int 常量的列举,列举表中的每一个标识符称为枚

举符,枚举常量就是这些枚举符。使用枚举量需要定义枚举模式(枚举类型),使用模式定义枚举量。

(1) 枚举模式定义格式: enum < 枚举名 > {< 枚举表 >}; 例如: enum color {red,blue,yellow,black,white}; 定义了枚举模式 color ,其中共有 5 个标识符, red 的值默认为 0,blue

的值默认为 1,…… , white 的值默认为 4 。各个枚举量的值也可显式定义,如 P37 定义的枚举模式 day1.

(2) 枚举量的定义(说明)格式: enum < 枚举名 > < 枚举量名表 >; 其中的关键字 enum 可以省略。 例如: color c1,c2,c3; 就定义了三个 color 型枚举量,每一个的值都可

以是 red 、 blue 、…、 white 之一。

Page 18: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

18

(3) 枚举模式与枚举量的定义合二而一定义方式: enum < 枚举名 > {< 枚举表 >} < 枚举量名表 > ; 如前述定义的模式 color 及枚举量 c1 、 c2 、 c3 可如下定

义: enum color {red,blue,yellow,black,white}c1,c2,c3; (4) 枚举量的值

枚举量可以被赋以所定义的枚举列表中的任意值,如: c1=red;c2=yellow;c3=white; 等, c1 、 c2 、 c3 的值实际是 0 、2 、 4 ;

枚举量不能直接赋以数值值,如 c3=4; 是错误的,如确需赋数值值,可用强制类型转换(后面介绍): c3=(color)4;

使用枚举量可以增加程序的可读性。

Page 19: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

19

2.2.2 常量的定义•1. 使用 const 定义格式为: const < 类型说明符 > < 常量名 >=< 初始值 >;•例如:const float PI=3.14159;const int Number_of_Student=100;•常量必须也只能在定义时进行初始化;•常量初始化之后,不允许再被赋值;•常量必须先定义后使用;•常量存储在数据区,并且可以按地址访问,编译时系统对常量进行类型检查。

Page 20: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

20

2. 使用宏定义命令 define 定义常量 格式为: #define < 常量名 > < 常量值 > 例 2.1, 分析下述程序输出结果,注意常量定义的方式。 #include<iostream.h> int add(int x,int y) { return x+y; } void main() { const float f=6.9876f; cout<<f<<endl; int a=89; int b=1; const int c=add(a,b); cout<<c<<endl; #define D a+b cout<<D<<endl; }

Page 21: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

21

2.3 变 量•变量,在程序中是指可以改变值的量。•2.3.1 变量四要素1. 变量名:变量的逻辑标识,是一个标识符,由用户定义与管理,是用户眼中的变量。2. 变量的内存地址:变量的物理标识,是一个无符号整数,由编译系统和操作系统进行分配和管理,是计算机眼中的变量。3. 变量的类型:在用户眼中是变量的值的范围,在计算机的眼中是变量分配内存单元的多少及存储方式。

4. 变量的值:变量的内容,是用户处理的数据,注意区分变量的值与变量的地址,严格来说,都是数字,但含义大不一样。

Page 22: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

22

2.3.2 变量的存储类型 1. 4 种不同的存储类型变量 ① 自动变量(动态变量)存储在动态区,格式为: auto 变量类型 变量名列表; 关键字 auto 可以省略。 例如: auto int a=1; 就定义了动态整型变量 a, 其初值为 1 。 ② 外部变量(又叫全局变量),定义在函数体外,在函数

体中使用前要说明。 定义格式为:变量类型 变量名表; 说明格式为: extern 变量类型 变量名表; ③ 寄存器变量,存储在寄存器中,定义格式为: register 变量类型 变量名列表; ④ 静态存储变量,存放在静态区,分内部、外部两种,定

义格式为: static 变量类型 变量名列表; 定义在函数体内或分程序内的静态存储变量为内部的,否则

为外部的。

Page 23: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

23

自动类 (auto)寄存器类 (register)内部静态存储类 (static)

外部静态存储类 (static)

外部存储类 (extern)

局部变量:在函数体内或分程序内定义的变量。

全局变量:在函数体外定义的变量。

Page 24: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

24

(1) 、自动类 (auto)#include <iostream.h>

void main()

{

auto int a; //auto 可以省略

cout<<a<<endl;

}

输出结果:

一个不确定的值

Page 25: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

25

#include <iostream.h>

void main()

{

register int a;

cout<<a<<endl;

}

(2) 、寄存器类 (register)

输出结果:

一个不确定的值

Page 26: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

26

#include <iostream.h>

void main()

{

static int a;

cout<<a<<endl;

}

(3) 、内部静态存储类 (static)

输出结果:

0

Page 27: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

27

#include <iostream.h>

static int a;

void main()

{

cout<<a<<endl;

}

(4) 、外部静态存储类 (static)

输出结果:

0

Page 28: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

28

#include <iostream.h>

int a;

void main()

{

cout<<a<<endl;

}

(5) 、外部存储类 (extern)

输出结果:

0

Page 29: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

29

2. 变量的作用域

变量的作用域是指变量的可使用的范围。范围之外,这些变量不可使用。

① 自动、寄存器、内部静态的变量的作用域是定义它的函数体或分程序内部;

② 外部静态变量的作用域是定义它的文件内从定义处至文件未 ③ 外部存储变量的作用域是整个程序内部及包含该程序的所有文件。 3. 变量的寿命(生存期) 指的是从系统给该变量分配存储空间开始,到系统收回该变量占有的

存储空间为止的时间。 外部变量、静态变量均存储在静态区,其寿命最长,与整个程序同在;

寄存器变量、动态变量寿命较短,与其作用域相同。 静态变量得生存期一般比其作用域大,在其作用域内,变量可用,在

其作用域外的生存期内,变量存在而不可用,称之为“冬眠”。

Page 30: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

30

2.3.3 变量的定义(说明)格式和输入输出操作

1. 定义格式 在 C++ 中,变量说明的一般格式为: 存储类 数据类型 变量名 1,变量名 2, , 变量名n; 下面是变量说明的几个例子:

int i, j, k; // 说明三个整型变量 i, j, kfloat x, y, z; // 说明三个实型变量 x, y, zchar c1, c2; // 说明两个字符型变量 c1, c2double dx; // 说明一个双精度型变量 dx static int a=10; // 定义变量 a 为静态整型,初值为 10① 存储类型 auto 可以省略。② 外部变量不用存储类型说明③ 数据类型不能省略④ 省略存储类型时,函数体内定义的为自动类,函数体外定义的为外部类。

Page 31: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

31

2. 变量赋初值和赋值

例如: int a=3,b=4,c=5; 也可写成: int a(3), b(4), c(5);

float x=3.0; 也可写成: float x(3.0);

( 2)变量赋值 用赋值语句赋值。例如: float x, e;

x=3.5;

e=2.71828;未给变量赋初值,也未赋值的,外部类、静态类有默认值 0 ;自动类、寄存器类无默认值,不能使用。

( 1 )变量在定义时获取值称为赋初值,或称初始化。

Page 32: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

32

3. 变量的输入输出

变量的输入输出依靠提取符 (>>) 、插入符 (<<) 实现,也可使用专用函数。

【例 2.2】 观察程序运行情况,注意变量输入输出方式。 #include<iostream.h> void main() { char c1=‘a’,c2=‘b’; int i1,i2; i1=i2=5; double d1,d2; cout<<“输入 d1 、 d2 :” ; cin>>d1>>d2; cout<<c1-c2<<‘,’<<c1+c2<<endl; cout<<i1-i2<<‘,’<<i1+i2<<endl; cout<<d1-d2<<‘,’<<d1+d2<<endl; }

Page 33: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

33

例 2.3 观察下述程序输入结果,注意静态变量的特点。

#include<iostream.h> void fun(); //声明主函数中调用的函数 fun 在后面定义 void main() { fun();fun(); } void fun() { int a=5; //a 为整型自动变量 a=2*a; static int b=10; //b 为内部整型静态变量 b=2*b; cout<<a+b<<endl; } 主函数中第一次调用 fun, 输出结果为 30 ,调用结束后变量 a 被撤销,变

量 b开始“冬眠” ; 第二次调用 fun,a 是重新生成的 , 初值为 5,b 是“冬眠”后被“唤醒”的 ,

初值是上次结束时的值 20 ,第二次调用的输出结果为 50 。

Page 34: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

34

2.4 数组•数组是有限个同类型元素的有序集合,这些元素有一个共同的名字,每个元素以其在数组中的位置区分,位置用下标表示。• 例如数列或向量就可以看作一个数组,其中的元素用一个下标即可确定。• 矩阵也可看作一个数组,其中的元素需要用“行”、“列”两个下标确定。• 数组下标的个数称作维数,上述代表数列的数组和代表矩阵的数组分别称为一维数组和二维数组。

Page 35: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

35

2.4.1 数组的定义格式和数组元素的表示方法

1 、数组的定义格式: < 类型 > < 数组名 > [< 大小 1>] [< 大小 2>]

… 2 、数组元素的表示方法 < 数组名 > [< 下标表达式 1>] [< 下标表达式 2>]…

Page 36: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

36

一维数组 int a[3];

X Xa[3]=4; a=-10

a[0]a[1]

a[2]

a[0]=-2;

a[1]=7;

a[2]=5;

-2

75

内存

下标越界 不能给数组名赋值

4 Byte

Page 37: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

37

一维数组

数组定义中的元素个数只能是一个非负整数。

例如: int m[5]; // 定义数组 m, 其中有 5 个整数

const int N=3; float x[N];// 数组 x 中有 3 个实数

Page 38: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

38

一维数组 数组在存储单元中是按下标的顺序连续存放的,任何一个元素都可以单独访问,其标识方法是用数组名和下标联合进行的: <数组名 >[<下标值 >]

下标值可以是由整型表达式计算的值。 C++ 中规定数组第一个元素的下标为 0 。

m[0]

m[1]

m[2]

m[3]

m[4]

x[0]

x[1]

x[2]

Page 39: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

39

一维数组 C++ 中数组大小在编译时确定,编译系统按照定义,为数组分配一段连续的存储单元,这段单元的大小也是不能改变的,因此数组大小不能用变量定义,而只能是一个正整数常量。 下列定义是非法的:int count;float s[count]; // 数组个数不能是变量,且必

//须在定义时指明 ;const float Num=3;int n[Num]; // 数组个数不能是实数 ;对数组的访问指的是对数组元素的访问,不能直接将数组名作为访问对象,对数组赋值也必须对每一个元素逐个赋值。

Page 40: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

40

int a[2][3];

a[0][0]=1;a[0][1]=2; a[0][2]=3;

a[1][0]=4;a[1][1]=5;a[1][2]=6;

1

2

3

4

5

6

a[0][0]a[0][1]

a[0][2]

a[1][0]

a[1][1]

a[1][2]

二维数组

Page 41: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

41

三维数组

int a[2][3][4]; 见书上第 48页

Page 42: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

42

2.4.2 数组的赋值 1 、数组的赋初值 int a[5]={1,2,3,4,5};

1

2

3

4

5

a[0]a[1]a[2]a[3]a[4]

Page 43: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

43

int b[6]={7,8,9};

7

8

9

0

0

0

b[0]b[1]b[2]b[3]b[4]b[5]

Page 44: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

44

int a[2][3]={{1,2,3},{4,5,6}}; 相当于: a[0][0]=1;b1[0][1]=2; a[0][2]=3; a[1][0]=4;a[1][1]=5;a[1][2]=6;

1

2

3

4

5

6

a[0][0]

a[0][1]

a[0][2]a[1][0]

a[1][1]

a[1][2]

Page 45: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

45

int b[3][3]={{1,2},{3}}; 相当于: b[0][0]=1;b[0][1]=2;b[0][2]=0; b[1][0]=3;b[1][1]=0;b[1][2]=0; b[2][0]=0;b[2][1]=0;b[2][2]=0;

1

2

0

3

0

0

0

0

0

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]

Page 46: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

46

int c[2][3][4]={{{1},{2}},{{3,4},{5,6}}}; 数组 c 有 24 个元素,其中 c[0][0][0]=1,c[0][1][0]=2,c[1][0][0]=3, c[1][0][1]=4,c[1][1][0]=5,c[1][1][1]=6, 其余的 18 个元素值都为 0 。

Page 47: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

47

2 、数组的赋值 int a[5]; a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5; double b[3]; b[0]=1.2;b[1]=-5.4;b[2]=3.6;

Page 48: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

48

2.4.2 数组元素的赋值

int_arr[0]=int_arr[1]=int_arr[2]=int_arr[3]= 3

211

1输出123

1+2=3例:数组元素赋值的简单程序。# include <iostream.h>

void main()

{ int int_arr[4];

int_arr[0]=1; int_arr[1]=1;

int_arr[2]=2;

int_arr[3]=int_arr[1]+int_arr[2];

cout<<int_arr[0]<<‘\n’;

cout <<int_arr[1]<<‘\n’;

cout<<int_arr[2]<<‘\n’;

cout<<int_arr[3]<< ‘\n’;

}

Page 49: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

49

2.4.3 字符数组如果数组中的元素为字符,就称为字符数组。例如:char string1[10]; // 可用来保存 10个字符的字符数组 ;char city_name1[]={’ L’,’u’,’o’,’y’,’a’,’n’,’g’}; // 可用来保存 7个字符的字符数组 ;C++ 中字符数组用来保存字符串。允许直接用字符串常量给字符数组初始化。例如:char city_name2[]=”Luoyang”;用字符串初始化,字符数组会自动加上一个串结束符‘ \0’ 。串结束符在字符串操作中具有十分重要的意义,因此在定义字符数组大小时,要注意留出足够的空间保存串结束符。

Page 50: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

50

数组的输入输出

【例 2.4】分析下述程序的输入输出。#include<iostream.h>void main(){ int a[3]={7,8,9}; double b[2]; b[0]=1.2;b[1]=3.4; char c[4]; cout<<“ 输入 4 个字符:” ; cin>>c[0]>>c[1]>>c[2]>>c[3]; cout<<a[0]<<‘,’<<a[1]<<‘,’<<a[2]<<endl; cout<<b[0]<<‘,’<<b[1]<<endl; cout<<c[0]<<‘,’<<c[2]<<endl;}

在 VC++6.0环境下,演示该程序,注意输入输出。

Page 51: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

51

【例 2.5】 字符数组的应用。

# include <iostream.h>void main(){ char ch1[]=“12345”; // 定义一维字符数组 , 实际是 1 个字符串 char ch2[3][5]; // 定义二维字符数组 , 实际是 3 个字符串 cout<<“ 输入 3 个字符串 (每个字符串后回车 , 或用空格隔开 ):”; cin>>ch2[0]>>ch2[1]>>ch2[2]; cout<<ch1<<endl; cout<<ch2[0]<<endl<<ch2[1]<<endl<<ch2[2]<<endl;}程序执行后,输入数据为:输入 3 个字符串 (每个字符串后回车 , 或用空格隔开 ):int if char↙

程序输出为: 12345 int if char

Page 52: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

52

【例 2.6】分析程序,回答问题。 # include <iostream.h> void main() { const int M=5; int a1[M]={0}; static int a2[M+2]; int a3[M-1]={a1[0]+1,a1[1]+2,a1[2]+3}; cout<<a1[4]<<endl; cout<<a2[0]<<endl; cout<<a3[1]+a3[2]<<endl; } 执行该程序 , 观察输出结果 ,研究以下问题: ①定义数组时,数组大小是否可用变量表达式 ?(试一试 ) ②数组初始化时 , 初始值的个数、形式 ( 个数不够,未给初始值的

有值吗 ?) ③将 int a1[M]={0}; 改为 int a1[M]; 会怎样 ?(没有初始化 , 没值吗? )

Page 53: 教学内容:              2.1   数据类型 2.2   常量 2.3   变量 2.4   数组 小结 教学重点:              变量和数组的使用方法

53

小结 C++中的基本数据类型 常量 变量,定义(说明)、初始化、使用 数组,定义、初始化、使用 变量、数组元素的输入、输出 作业: P54 作业题 2 上机题: P58 上机题 2