《C++程序设计语言》--第三讲 数组

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
① float a[0]; //数组大小为0没有意义 ② int b(2) // 不能使用圆括号 ③ int k, a[k]; // 不能用变量说明数组大小 ④ int n; cin>>n; int a[n]; // C++语言不允许对数组的大小进行 动态说明。
2013-7-8
面向对象程序设计
2、一维数组中的元素访问
数组c在内存中实际存放情况为:
C
H
I
N
A
\0
串长=5
c[0] c[1] c[2] c[3] c[4] c[5]
2013-7-8 面向对象程序设计

字符串在数组中的存储格式 ’\0’是在字符串存入来自百度文库符数组时由系统自动添加 的,并不是字符串本身的一部分,在计算串长的时候 并不包括 ’\0’。 使用字符’\0’作为字符串的结束标记,就使得 C++语言对字符串的长度没有具体的限制,但字符串的 最大长度不能超过存储它的字符数组的长度,否则会 造成数组越界错误。
第一节 数组的基本概念
第二节 一维数组 第三节 多维数组 第四节 数组作为函数的参数 第五节 数组和字符串
第六节 数组应用举例
第七节 构造数据类型
2013-7-8 面向对象程序设计
§3-1 数组与数组元素
数组的概念
如何处理(总成绩、平均成绩、排序、单科排序、总成绩
排序等) 一个班学生的学习成绩? 一行文字怎样存储? 一个矩阵怎样存储 ?......
2013-7-8
面向对象程序设计
3-3 多维数组
1、多维数组的声明: 数据类型 数组名[常量表达式1]…[常量表达式n] 如:float a[2][3]; 表示该数组有2*3个元素,分别为: a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] 2、访问多维数组中的元素 通过下标引用数组元素,格式: 数组名[下标表达式1]…[下标表达式n] 即:要访问数组中的某个元素,必须给出该元素所在的 位置,如二维数组a[1][0] 表示要访问的元素为第一 行第一列。
2013-7-8 面向对象程序设计
字符串连接
将串str2连接到串str1之后。 根据字符串中 \0 的位置进行字符串连接。 关键:要用str2的第1个字符覆盖str1的串结束标记\0。
#include <stdio.h>
main( ) { char str1[100],str2[100]; int i, j; 算法: printf (”Enter string 1:”); 1、查找str1的串结束标记\0 gets (str1); printf (”Enter string 2:”); 2、从str1的\0开始,将str2复 制到str1。 gets (str2); for ( i=0; str1[i]!=’\0’; i++ ) ; /* 确定\0位置 */ for ( j=0; (str1[i]=str2[j]) != ’\0’; i++, j++ ) ; printf(”Output string 1:%s\n”, str1); }
2013-7-8 面向对象程序设计
§3-4 数组作为函数的参数
数组可以作为函数的参数,如果数组声明如下: float A[10]; 要将数组传递给函数,有下面两种形式:
1. 类型说明符 函数名(类型说明符 数组名[],int 长度) 2. 类型说明符 函数名(类型说明符 数组名[长度] )
实例参看教材p73程序3-4
2013-7-8
面向对象程序设计
§3-5 数组与字符串
字符串
串:用双引号( ” )括起来的字符或转义符序列 串长:字符串中所包含的字符数 串结束标记:字符 ’\0’ 称为串结束标记。
字符串在数组中的存储格式
◆ 字符串可以存在一个一维数组中,字符串中的一个字符占用 字符数组中一个字节。具有数组特性。 ◆ 字符串实际占有的存储单元数量等于字符串长度+1。 例如:要定义一个存放字符串“CHINA”的字符数组c,应定义 为: char c[6];
§3-7 构造数据类型
结构的基本概念与基本操作 提出问题 一个学生有学号、姓名、性别、年龄、地址等属性。 int num; char name[20]; char sex; int age; int char addr[30]; 如果将这些属性分别定义为互相独立的简单变量,则 难以反映它们之间的内在联系(同一个学生的属性)。 一、结构的定义 结构是逻辑上相互联系的一组分量的集合。 结构中的分量可以是不同类型的数据,结构中的分量 称为结构的成员。 在使用结构之前,首先要对结构的组成进行描述,称 为结构的定义。结构定义说明了该结构的组成成员, 以及每个成员的类型。
字符数组初始化 用字符串对字符数组初始化,如: char ch[6]={"CHINA"}; char ch[6]="CHINA"; /* 省略 { } */ char ch[] ="CHINA"; /* 省略长度值 */ 用单个字符对字符数组初始化,如: char ch[6]={'C','H','I','N','A','\0'};
字符串复制
#include <iostream.h> main ( ) { char str1[100], str2[100]; int i; str1 a b ... ... ... f g \0 cout<<"Enter string 1:"; ... ... ... str1=“string1”; str2 a b ... ... ... f g \0 for (i=0; str1[i]!=’\0’; i++) str2[i]=str1[i] ;/*复制*/ for (i=0; str2[i]!=’\0’; i++) cout<<"Output string 2:“<<str2[i] <<endl; }
2013-7-8
面向对象程序设计
数组应用举例-统计成绩 例: #include <iostream.h> void main( ) { int a[30][4], i, j, s=0; char c; for (i=0; i<=29; i++) // 输入30人的成绩 例:某班期终考试科目为高等数学(MT)、英语(EN)和物理 { cout<<"Enter No. and score as: MT EN PH\n"; (PH),有30人参加考试。要统计并输出一个表格,包括 for (j=0; j<=3; j++) cin>>a[i][j]; 学号、各科分数、总分、平均分,以及三门课均在90分 // 输入学号和3门成绩 以上者(该栏标志输出为“Y”,否则为“N”),表格形 } 式如下:NO. MT EN PH SUM V >90\n"; cout<<" cout<<"------------------------------------\n"; NO MT EN PH SUM V >90 for (i=0; i<=29; i++) /* 依次对30个人进行处理 */ ------------------------------------------------1 97 87 92 276 92 N { cout<<" "<<a[i][0]; 2 92 91 90 273 91 Y for 3 (s=0,90 81 82 j++) 84 N j=1; j<=3; 253 ..... { s += a[i][j];/* 计算3门课程总分 */ cout <<" "<< a[i][j]; 分析: } 可以将学生的学号和各科成绩放在数组a[30][4]中,然后进行统 if (a[i][1]>=90 && a[i][2]>=90 && a[i][3]>=90) 计处理。 c='Y'; // 若三门成绩均为90以上 else c='N'; cout<<" "<< s<<" "<< s/3<<" "<< c<<endl; 面向对象程序设计 2013-7-8 }
面向对象程序设计


2013-7-8
3、一维数组初始化
• 在数组说明的同时进行初始化的一般形式为: 数据类型 数组名 [常量表达式] ={初始化数据}; 例如: 说明一个1维数组并初始化,可以使用如下语句: int a[4] = {1, 2, 3, 4 } ; 结果相当于:a[0]=1; a[1]=2; a[2]=3; a[3]=4; static float x[5] = { 1.9, 2.0 }; 相当于:x[0]=1.9;x[1]=2.0;其余元素为0值。 • 若要对数组的全部元素初始化,则可省略数组说明中 的大小。 static int a[ ] = {1, 2, 3, 4}; • 实例参看教材p68程序3-2
2013-7-8 面向对象程序设计
结构定义的一般形式 struct 结构类型名称
这些数据的特点:具有相同的数据类型。 为了方便地使用这些数据,C++语言提供了一种构 造数据类型:数组。
一组具有相同数据类型的数据的有序集合。
2013-7-8 面向对象程序设计
3-2 一维数组
1、一维数组的定义是通过数据定义语句进行的,格式如下: 数据类型 数组名[数组长度]
数组说明中常见的错误
• 例如: float mark[100]; char str[200]; int a[4];
2013-7-8 面向对象程序设计
3、二维数组的初始化
可采用按行排列赋初值的方式。 int a[2][3] = { {1,2,3}, {4,5,6} }; 或 int a[2][3] = {1,2,3, 4,5,6 }; 结果为: a[0][0]=1, a[0][1]=2, a[0][2]=3, a[1][0]=4,a[1][1]=5, a[1][2]=6 ◆ 若要对数组中的部分元素进行初始化,可采用下 例中的方法: int a[2][3] = { {1}, {4} }; 结果为:a[0][0]=1, a[1][0]=4, 其余元素的值均为0。 static int a[3][3] = { {1,2}, { }, {4,5,6} }; 结果为:a[0][0]=1, a[0][1]=2, a[2][0]=4, a[2][1]=5, a[2][2]=6, 其余元素的值均为0。 ◆ 对二维数组全部元素进行初始化时,可省略数组 说明中第一维的大小。例如: int a[ ][3] = {1, 2, 3, 4, 5, 6}; 注意:此时只能省略第1维的值。

2013-7-8
面向对象程序设计
求字符串长度
根据字符串中 \0 的位置来计算字符串长度。 若:数组中第 i 个元素为\0,则,串长= i。
#include <iostream.h> length=0 length=1 length=2 length=7 main ( ) { int length; a b c d e f g \0 char line[100]; line[]=“string”; /*串输入*/ 串长 length=0; while ( line[length] != ’\0’ ) length ++; cout<<”String length”<<length; 面向对象程序设计 2013-7-8 }
2013-7-8 面向对象程序设计
str2 a b c d e f g \0 ... ... ... a str1 x y ... z \0 b c d e f g \0
3-6 数组应用举例
教材p77-83 排序:程序3-5、程序3-6 查找:程序3-7、程序3-8 统计:程序3-9、程序3-10 字符处理:程序3-11

数组元素的引用方式: 通过下标引用数组元素,格式:数组名[下标表达式] 如:b=a[1],表示把数组a的第二个元素赋值给b; 对下标的说明: (1)下标表达式的值必须是整型数据 。 (2)数组下标的起始值是0 。即,引用数组的第一个元 素的下标是0。如: int a[10],数组a的10个元素分别 是:a[0]、a[1]、…、a[9]。 (3)数组元素的总数量:对于一维数组,在说明语句中, 方括号内的值是数组中元素的总数量。 实例:参看p67程序3-1
相关文档
最新文档