第5讲C数组及自定义数据类型-1.5

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

2019年5月30日8时59分
15
2.二维数组的定义和引用
具有两个下标的数组称为二维数组。
(1)定义二维数组 定义二维数组的一般形式为:
类型标识符 数组名[常量表达式][常量表达式]
例如:
float a[3][4],b[5][10]; 定义a为3×4(3行4列)的单精度数组,b为5×10(5行
10列)的单精度数组。 注意:不能写成“float a[3,4],b[5,10];”。
效果与前相同。但以第1种方法为好,一行对一行,界限清楚。
2019年5月30日8时59分
21
2.二维数组的定义和引用
C.可以对部分元素赋初值,其余元素值自动置为0。 如:int a[3][4]={{1},{0,6},{0,0,11}}; 初始化后的数组元素如下:
1000
0600
0 0 11 0 也可以只对某几行元素赋初值:
结构体与指针的关系; 7.掌握共用体和枚举类型。
2019年5月30日8时59分
3
第5讲 C++数组及自定义数据类型
5.3授课重点 1.一维数组和二维数组的定义及使用; 2.结构的定义和使用。
5.4授课难点 1.数组名作函数的参数; 2.结构体与指针的结合。
2019年5月30日8时59分
4
1.一维数组的定义和引用
面的写法是合法的:
int a[10];
int a[2*5];
int a[n*2];
//假设前面已定义了n为常变量
2019年5月30日8时59分
6
1.一维数组的定义和引用
C.常量表达式的值表示元素的个数,即数组长度。 例如:在“int a[3];”非中法,定3义表数示组a:数组有3个元素,下
标从0开始,这3个元素in是t n:; a[0],a[1],a[2]。 注意最后一个元素是ac//[i输n>2入>]an数;而组不的是长a度[3]。
2019年5月30日8时59分
2
第5讲 C++数组及自定义数据类型
5.2授课要求 1.掌握数组的基本概念; 2.掌握一维数组和二维数组的使用; 3.掌握字符数组与字符串的关系以及字符串变量的
表示; 4.掌握结构体的概念和结构类型的定义; 5.掌握结构体变量的定义和初始化; 6.掌握结构体成员的访问、结构体赋值的含义以及
for(i=0;i<10;i++)
//输入10个数for(i=0;i<n-1;i++)
cin>>a[i];
{ k=i;
cout<<endl;
for(j=i+1;j<n;j++)
select_sort(a,10); //函数调用if(a,rra数y[组j]名<作ar实ray参[k])
2019年5月30日8时59分
23
2.二维数组的定义和引用
(4)二维数组程序举例
例2 将一个二维数组行和列元素互换,存到另一个二 维数组中。
例如:
a= 1 2 3
b=1 4
4 56
25
36
2019年5月30日8时59分
24
2.二维数组的定义和引用
程序如下:
#include <iostream> using namespace std; int main( ) { int a[2][3] ={{1,2,3},{4,5,6}}; int b[3][2],i,j; cout<<″array a:″<<endl; for (i=0;i<=1;i++) {
例如: int a[10]={0,1,2,3,4}; //剩余的元素值为0
2019年5月30日8时59分
10
1.一维数组的定义和引用
C.如果想使一个数组中全部元素值为1,可以写成 int a[10]={1,1,1,1,1,1,1,1,1,1}; 不能写成 int a[10]={1*10};
D.在对全部数组元素赋初值时,可以不指定数组长 度。
2.二维数组的定义和引用
C++中,二维数组中元素排列的顺序是:按行存放
图2表示对a[3][4]数组存放的顺序。
图2
2019年5月30日8时59分
18
2.二维数组的定义和引用
C++允许使用多维数组。
例如,定义三维数组的方法是: float a[2][3][4];
定义float型三维数组a,它有2×3×4=24个元素。
运行结果如下:
9876543210 程序使a[0]~a[9] 的值为0~9,然后按逆 序输出。
2019年5月30日8时59分
9
1.一维数组的定义和引用
(3)一维数组的初始化
A.在定义数组时分别对数组元素赋予初值。
例如 int a[10]={0,1,2,3,4,5,6,7,8,9};
B.可以只给一部分元素赋值。
2019年5月30日8时59分
19
2.二维数组的定义和引用
(2)二维数组的引用 二维数组的元素的表示形式为 数组名 [下标][下标]
例如: B[1][2]=a[2][3] / 2;
在使用数组元素时,应该注意下标值应在已定义的数 组大小的范围内。
2019年5月30日8时59分
20
2.二维数组的定义和引用

int a[3][4]={1,2,3,4,5,6,7,数8组,各9,元10素,为11,: 可int以1a2[写};]成[4]={1,2,3,4,5,6,7,0008,00190,30010000,11,12};
在定义时也可以只对部分元素赋初值而省略第一维的长度, 但应分行赋初值。如 int a[][4]={{0,0,3},{},{0,10}};
strcpy(数组名1,数组名2);
//将数组2中的字符串赋值到数组1中
例如: strcyp(str1,str2);
注意,上例不能写为:str1=str2;
//不合法
2019年5月30日8时59分
13
数组越界
在给数组元素赋值或对数组元素进行引用时, 一定要注意下标的值不要超过数组的范围,否则会 产生数组越界问题。因为当数组下标越界时,编译 器并不认为它是一个错误,但这往往会带来非常严 重的后果。
数组元素的表示形式为: 数组名[下标]
下标可以是整型常量或整型表达式。例如 a[0]= a[5]+ a[7]- a[2*3]
2019年5月30日8时59分
8
1.一维数组的定义和引用
例1 数组元素的引用。 #include <iostream> using namespace std; int main( ) {int i,a[10]; for (i=0;i<=9;i++) a[i]=i; for (i=9;i>=0;i--) cout<<a[i]<<“ “; cout<<endl; return 0; }
<<″ ″; cout<<endl; }
return 0; }
25
2.二维数组的定义和引用
运行结果如下: array a: 123 456 array b: 14 25 36
2019年5月30日8时59分
26
3.用数组名作函数参数
数组名也可以作实参和形参,传递的是数组的起始地 址。
例3 用选择法对数组中10个整数按由小到大排序。
int a[n]; //企图根据n的值决定数组的长度
D.常量表达式中可以包括常量、常变量和符号常量, 但不能包含变量。
即:C++不允许对数组的大小作动态定义。
2019年5月30日8时59分
7
1.一维数组的定义和引用
(2)引用一维数组的元素 数组必须先定义,然后使用。只能逐个引用数组元 素的值而不能一次引用整个数组中的全部元素的值。
例如:定义了一个整型数组a: int a[10];
数组a的合法下标为0~9。如果程序要求给a[10] 赋值,将可能导致程序出错,甚至系统崩溃。
2019年5月30日8时59分
14
数组越界
常用下面的式子确定数组的大小,预防数组越界情况的发生 。
假定对于一个整型数组a,它的大小为: sizeof(a)/sizeof(int) sizeof(a)表示求数组a在内存中所占字节数,sizeof(int) 表示求整型数据在内存中所占字节数。使用上面这个式子,可以 使数组大小计算在16位机器和32位机器之间移植。
(3)二维数组的初始化
A.分行给二维数组赋初值。如: int a[3][4]={{1,2,3,4},{5,6,7,8},
{9,10,11,12}};
B.可以将所有数据写在一个花括号内,按数组排列的顺序对 各元素赋初值。如:
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,
12};
4. 用C++库函数中的strcpy()函数(字符串拷贝函数),
其常见语法格式为:
strcpy(数组名,字符串);
//将一个字符串赋值到一个字符数组中
例如: char str1[10];
strcpy(str1,”hello”);
注意,此例不能写为:str1=”hello”;
//不合法
另一种常见的语法格式为:
普通高等教育“十一五”国家级规划教材 中国高等院校计算机基础教育课程体系规划教材
谭浩强 编著
C++面向对象程序设计
2019年5月30日8时59分
1
第5讲 C++数组及自定义数据类型
5.1授课内容 C++数组及自定义数据类型的使用。主要包括: 1.一维和二维数组; 2.字符数组与字符串; 3.字符串函数; 4.结构体的定义; 5.结构变量的定义、初始化、结构成员的访问等; 6.结构体与数组; 7.结构与链表; 8.共用体和枚举类型。
(1)定义一维数组 格式为: 类型标识符 数组名[常量表达式];
例如: int a[10]; 它表示数组名为a,此数组为整型,有10个元素。
2019年5月30日8时59分
5
1.一维数组的定义和引用
说明: A.数组名定名规则和变量名相同,遵循标识符定名
规则。
B.用方括号括起来的常量表达式表示下标值,如下
for (j=0;j<=2;j++) { cout<<a[i][j]<<″ ″;
b[j][i]=a[i][j]; }
2019年5月30日8时59分
cout<<endl; } cout<<″array b:
″<<endl; for (i=0;i<=2;i++) { for(j=0;j<=1;j++) cout<<b[i][j]
int main( )
void select_sort(int array[ ],
{icvnootuiadt[<s<e1″lee0nc]tt_e,isr;othrte(inotriagrinral ya[rra]y:,in″t<n<)e;i{nnindttl/;/ni函,)j,数k,/声t/;形明参array是数组名
根据此思路编写程序如下:
所谓选择法就是先将10个 数中最小的数与a[0]对 换;再将a[1]到a[9] 中最小的数与a[1]对 换……每比较一轮,找出 一个未经排序的数中最小 的一个。共比较9轮。
2019年5月30日8时59分
27
3.用数组名作函数参数
#include <iostream>
using namespace std;
语法格式为: cin>>数组名;或 cin>>数组名[下标]; 例如:对一个大小为5的字符型数组a赋值,可以用下列 两种方式:
char a[5]; cin>>a;
2019年5月30日8时59分
12
数组的赋值
3. 用scanf()函数, 其语法格式为:
scanf(“类型标识”,数组名);或 scanf(“类型标识”,数 组元素地址);
int a[3][4]={{1},{5,6}}; 数组元素为
1000 5600 0000
第3行不赋初值。也可以对第2行不 赋初值: int a[3][4]={{1},{},{9}};
2019年5月30日8时59分
22
2.二维数组的定义和引用
D.如果对全部元素都赋初值(即提供全部初始数据),则定义数 组时对第一维的长度可以不指定,但第二维的长度不能省。
2019年5月30日8时59分
16
2.二维数组的定义和引用
可以把二维数组看作是一种特殊的一维数组:它的元 素又是一个一维数组。
例如:
可以把a看作是 一个一维数组, 它有3个元素: a[0] a[1], a[2],每个 元素又是一个 包含4个元素的 一维数组,
ቤተ መጻሕፍቲ ባይዱ图1。
2019年5月30日8时59分
17
例如 int a[5]={1,2,3,4,5}; 可以写成 int a[]={1,2,3,4,5};
2019年5月30日8时59分
11
数组的赋值
1. 用“=”赋值 要在数组之间进行赋值,也只能一个一个元素地赋值。 例如:将数组a的值 赋给另一个同样大小的数组b,可以利 用下面的循环完成赋值操作:
for (i=0;i<3;i++) b[i]=a[i]; 2. 用流命令赋值
相关文档
最新文档