第05章数组与字符串

合集下载

《刘大有数据结构》 chapter 5 数组字符串和集合类

《刘大有数据结构》 chapter 5 数组字符串和集合类
Loc(A[i][j])= Loc(A[0][0])+ i *n*C + j*C = Loc(A[0][0])+(i * n + j) *C
再例如三维数组 再例如三维数组D[3][3][4],可以把它看作一维 , 数组 B1[3] = { D[0][3][4],D[1][3][4],D[2][3][4] } , ,
下面我们给出一个 下面我们给出一个Array类的应用例子 类的应用例子. 类的应用例子 例5.1 编写一个函数,要求输入一个整数 , 编写一个函数,要求输入一个整数N, 用动态数组A来存放 来存放2~ 之间所有 之间所有5或 的倍数 的倍数, 用动态数组 来存放 ~N之间所有 或7的倍数, 输出该数组. 输出该数组 说明 : 因为 由用户给出 , 编写程序时无法知 说明:因为N由用户给出 由用户给出, 道需要多大的数组来存放数据, 道需要多大的数组来存放数据,因此采用动态 数组(初始时大小为10) 数组(初始时大小为 ),每当数组满时就调 整数组大小,给它增加10个元素 个元素. 整数组大小,给它增加 个元素
数组在内存中一般是以顺序方式存储的 数组在内存中一般是以顺序方式存储的. 设一维数组 设一维数组A[n]存放在 个连续的存储单元中 , 存放在n个连续的存储单元中 存放在 个连续的存储单元中, 每个数组元素占一个存储单元(不妨设为C个 每个数组元素占一个存储单元 ( 不妨设为 个 连续字节) 如果数组元素A[0]的首地址是 , 的首地址是L, 连续字节). 如果数组元素 的首地址是 则 A[1] 的 首 地 址 是 L+C , A[2] 的 首 地 址 是 L+2C,… …,依次类推,对于 0 ≤ i ≤ n 1 有: , ,依次类推,
B[i]={ A[i][0],A[i][1],…,A[i][n-2],A[i][n-1] } -

第五章 数组与字符串1

第五章 数组与字符串1

第 2 页
共 25 页
5.1 数组
天 津 工 程 职 业 技 术 学 院 计 算 机 工 程 系
第 3 页
共 25 页
数组是一个长度固定的数据结构,它存 储多个相同类型的数值。数组直接被 Java 编 程语言所支持,但是无论数组是由原始类型 构成,或者带有其它类数据,数组也是一个 对象。数组是一个 Object 类的一个不明显的 扩展,所以可以指定一个数组给一个类型定 义为Object的变量。 数组要经过定义、分配内存及赋值后才能 使用。
2)构造函数:
天 津 工 程 职 业 技 术 学 院 计 算 机 工 程 系
第 19 页
共 25 页
public Double(double value); public Double(String s) throws NumberFormatException; //字符串只能在末尾包含f或d,其余字符必须为负号 //点或数值字符,否则会抛出数字格式异常。 例如: Double d1=new Double(3.1415926); Double d2=new Double(“3.1415926f”); Double d3=new Double( “3.1415926d”); Double d4=new Double(“ab123”); //抛出异常
天 津 工 程 职 业 技 术 学 院 计 算 机 工 程 系
第 13 页
共 25 页
一、Java常用包列表: 1、java.applet 提供了创建applet需要的类,包括帮助 applet访问其内容的通讯类; 2、java.awt.* 提供了创建用户界面以及绘制、管理图形、 图像的类; 3、java.beans.* 提供开发Java Beans需要的类; 4、java.io 提供了通过数据流、对象序列以及文件系统实 现的系统输入、输出; 5、ng.* Java编程语言的基本类库; 6、java.math 提供了简明的整数算术以及十进制算数的基 本函数; 7、 提供了用于实现网络通讯应用的所有类; 8、java.rmi.* 提供了与远程方法调用相关的所有类; 9、java.security.* 提供了设计网络安全方案需要的类; 10、java.sql 提供了访问和处理来自于Java标准数据源数 据的类;

数组和字符串

数组和字符串

数组和字符串一、数组的定义数组是一组具有相同数据类型的变量的有序集合。

定义形式为:存储类型 数据类型 数组名[N];说明:① 存储类型是指数组中每个元素的存储类型,为auto 、register 、static 和extern 四种,一般都缺省。

② 数据类型是数组中每个元素的数据类型,由于每个元素数据类型都相同,也认为是整个数组的数据类型。

③ 数组名是数组名称,是个标识符。

④ 方括号是数组的标识,表明这是个数组。

准确地说,数组的数据类型其实是——“数据类型[]”。

例如:int array[10]; ,这个数组的类型准确地说是“int[]”。

这点可以从类型别名定义符type 为数组定义别名时也可看出来。

⑤ N 称为数组长度,表示该数组的元素个数,N>0。

在定义数组时,数组长度必须是常量,不能是变量,但可以是符号常量、宏常量或常量表达式。

⑥ 数组在内存中占用一片连续的内存空间。

二、数组的调用数组一般不能整个操作,只能对元素进行操作。

在操作元素时,要借助下标(因此数组 元素又叫下标变量)。

引用元素的方式为:数据名[i];说明:① i 称为下标(是叫下标吧,无所谓了),0≤i<N ,且i 是整数。

② i 可以是常量、变量或表达式,但值一定要是整型。

三、初始化数组要初始化数组,元素的初始值应放在初始化列表中,形如:int samples[5]={2,3,5,7,9};说明;① 大括号中的初始值列表简称初始化列表,里面的初始值对应初始化数组中的元素。

② 允许初始值的个数少于元素数,此时未被初始化的元素会根据其类型自动初始化为0(整型)、0.0(实型)。

但是,不允许初始值个数多于元素数。

③ 如果初始值个数和元素数相同,在初始化时可以缺省数组长度,例如:int values[]={2,3,4};④ 使用sizeof 运算符来求取数据元素个数,方法为:sizeof(数组名)/sizeof(数组名[0]),即用整个数组的大小除以第一个元素的大小。

C语言程序设计数组与字符串PPT课件

C语言程序设计数组与字符串PPT课件

max=a;
for (i=1;i<10;i++)
if (max<b) max=b; if (max<a[i]) max=a[i];
if (max<c) max=c; printf("%d\n",max);
printf("%d\n",max);
13
数组与函数——传递数组
使用参数传递数组到函数 数组名与元素个数分别传递 数组的常规函数
3
[案例需求2]
编写学生信息管理程序,实现:
命令行交互方式,提示符为“ST2>” 帮助功能,命令符H,显示关于命令的使用说明 退出功能,命令符Q,退出程序 增加功能,命令符A,参数为学号、成绩 删除功能,命令符D,参数为学号 查找功能,命令符F,参数为学号 列表功能,命令符L,按学号升序列表 统计功能,命令符T,平均最大最小等 名次功能,命令符S,按成绩从大到小并排名 4
void sca(int a[],int n); void prt(int a[],int n); long sum(int a[],int n); int max(int a[],int n); int min(int a[],int n);
编程示例:输入10个整数,输出这10个整 数以及累加和、最大值和最小值
int n;
int a[5];
n=5;
a[0]=5;
n++;
a[4]++;
s+=n;
s+=a[1+2];
printf("%d",n); printf("%d",a[i]);
scanf("%d",&n); scanf("%d",&a[j]);

数组与字符串

数组与字符串

数组与字符串在计算机科学中,数组与字符串是最常见且基础的数据结构。

它们在各种算法和编程语言中都有广泛的应用。

本文将深入探讨数组与字符串的特点、用法以及它们在实际问题中的应用。

一、数组1.1 数组的定义与特点数组是一种线性数据结构,它由相同类型的元素按照一定的顺序组成。

数组的特点包括:- 元素类型相同:数组中的每个元素都具有相同的数据类型,例如整数数组、字符数组等。

- 连续的内存空间:数组的元素在内存中是连续存储的,这样可以通过索引迅速访问指定位置的元素。

- 固定长度:数组一旦创建后,其长度是固定的,不能动态改变。

1.2 数组的基本操作数组的基本操作包括创建、访问、插入和删除等。

- 创建数组:在大部分编程语言中,可以使用关键字或库函数来创建数组,然后指定数组的长度和元素类型。

- 访问数组:通过索引可以快速访问数组中的元素。

数组的索引从0开始,到长度减1结束。

- 插入元素:向数组中插入元素可以分为两种情况。

一种是在数组的末尾插入元素,时间复杂度为O(1);另一种是在指定位置插入元素,需要将插入位置后的元素依次后移,时间复杂度为O(n)。

- 删除元素:从数组中删除元素也有两种情况。

一种是删除末尾元素,时间复杂度为O(1);另一种是删除指定位置的元素,同样需要将删除位置后的元素依次前移,时间复杂度为O(n)。

1.3 数组的应用数组在解决各种实际问题时有广泛的应用。

以下是一些应用场景的例子:- 统计字符出现次数:可以使用一个长度为26的整型数组来记录每个字母出现的次数,从而快速统计一个字符串中每个字符出现的次数。

- 排序算法:许多排序算法,如冒泡排序、插入排序和快速排序等,都是通过对数组中的元素进行比较和交换来实现的。

- 矩阵运算:在计算机图形学和人工智能领域,矩阵运算是非常常见的操作。

矩阵可以使用二维数组来表示,通过数组中的元素进行相应的计算。

二、字符串2.1 字符串的定义与特点字符串是由零个或多个字符组成的有限序列。

java字符串及数组

java字符串及数组

多维数组
Int twoDim[][]=new int[4][]; twoDim[0]=new int[4]; twoDim[1]=new int[2]; twoDim[2]=new int[3]; twoDim[3]=new int[4];
//Example 7 of Chapter 2 import javax.swing.JOptionPane; public class SimpleApp9 { public static void main(String[] args) { String output = ""; short ShortArray1[] = {1,2,3,4,5,6}; short ShortArray2[] = {31,32,33,34,35,36,37,38,39}; short ResultArray[]; ResultArray = new short[ShortArray1.length+ShortArray2.length]; System.arraycopy(ShortArray1,0,ResultArray,0,ShortArray1.length); System.arraycopy(ShortArray2,0, ResultArray,ShortArray1.length,ShortArray2.length); output +="数组 数组ResultArray的元素是:\n"; 的元素是: 数组 的元素是 for(int i=0;i<ResultArray.length;i++) { output +=ResultArray[i]+","; } JOptionPane.showMessageDialog(null,output); System.exit(0); } }

第5章 数组与字符串

第5章  数组与字符串

5.2
Java中数组的实现机制
前面已经提到过,Java中的数组与其他语言不同,其 本身是一个对象,只有通过指向其本身的引用才能对其进行 访问。本小节将详细阐述Java中数组的实现机制。 首先介绍最简单的一维基本数据类型数组的实现,请 考查如下代码。 1 int[] k;//声明数组引用k 2 k=new int[5];//让引用k指向创建的一维int数组 3 k[0]=1;//为指定的数组元素赋值 4 k[4]=4; //为指定的数组元素赋值
5.4.2
引用型数组赋值规则
引用型数组赋值规则比较简单,如下所列。 数组的维数要相等。 数组元素的类型要兼容,也就是说数组元素可以赋值

5.5
数组的基本操作
前面几节介绍了声明、创建以及初始化数组的方法。 本节将介绍几种数组中常用的操作,从而帮助读者更加方便 地操纵数组。
5.5.1
数组复制
在Java中,将一个数组引用赋给另一个数组引用后, 这两个数组引用将指向同一个数组对象。若使用箭头表示数 组引用,椭圆表示数组对象。 这样带来的后果是,不论通过哪一个引用对数组对象 进行操作,其他指向此数组对象的引用都会感觉到变化,因 为其引用的是同一个对象。这与基本数据类型的变量赋值不 同,基本数据类型变量是不会相互影响的。
5.7.2
巧用构造器
Java中String类的构造器功能十分强大,提供了各种不同的入口 参数组合,开发人员可以按实际情况去选择使用哪一种构造器。
构造器签名 public String(byte[] bytes) public String(byte[] bytes,int offset,int length) public String(byte[] bytes,String charsetName) throws UnsupportedEncodingException public String(byte[] bytes,int offset,int length, String charsetName) throws Unsupported Encoding Exception public String(char[] value) 功能 通过指定要解码为字符的字节数组bytes按照默认的编码方 式构造一个字符串对象 以指定的bytes字节数组的offset索引处开始,长度为length 的子数组作为解码的内容,并按照默认的编码方式构造一个字符串 对象 通过指定要解码为字符的字节数组bytes按照指定的 charsetName编码方式构造一个字符串对象。该构造器有可能抛出 “UnsupportedEncodingException”异常 该构造器将以指定的bytes字节数组的offset索引处开始,长 度为length的子数组作为解码的内容,并按照指定的charsetName编 码方式构造一个字符串对象。该构造器有可能抛出 “UnsupportedEncodingException”异常 以指定的字符数组value中包含的字符序列作为字符串内容, 构造一个字符串对象,创建后对字符数组value的修改不会影响新创 建的字符串对象。 构造一个字符串对象,该对象中的内容是指定的字符数组 value的子数组为字符串内容,offset参数是子数组在value数组中第 一个字符的索引,count参数指定子数组的长度。创建后对字符数组 value的修改不会影响新创建的字符串对象

数组和字符串的方法

数组和字符串的方法

数组和字符串的方法1.引言1.1 概述概述部分的内容可以从以下角度进行编写:在计算机编程领域,数组和字符串是两种常用的数据结构。

数组是一种有序的、固定长度的数据集合,其中的元素可以是任意数据类型。

而字符串则是一种由字符组成的有序序列。

数组和字符串在许多算法和程序中扮演着重要的角色。

它们的方法和操作可以帮助我们处理和操作数据,使程序更加高效和便捷。

这篇文章将介绍并总结数组和字符串的常用方法。

从数组的创建和初始化、访问和修改到字符串的创建和初始化、查找和替换等方面,我们将逐一介绍这些方法及其应用场景。

通过学习数组的相关方法,读者将了解如何创建和初始化数组,并能够实现对数组中元素的访问和修改。

这些方法对于数据的存储、排序和查找等操作非常重要。

而了解字符串的方法将使读者能够更好地处理文本数据。

通过学习字符串的创建和初始化,读者将知道如何在程序中操作字符串变量。

此外,了解字符串的查找和替换方法将使读者能够快速定位特定字符或字符串,并进行相应的操作。

总结数组方法的重要性,可以帮助读者更好地理解和使用数组这种数据结构。

掌握数组方法将使读者能够高效地处理大量的数据,提高程序的性能和效率。

最后,文章将总结字符串方法的应用场景。

字符串方法在文本处理、数据清洗和搜索等领域具有广泛的应用,理解这些方法的特点和功能将使读者能够更好地处理字符串数据。

通过本文的介绍和总结,读者将全面了解数组和字符串的方法,能够熟练地应用它们来解决实际问题。

这对于提高编程能力和应对复杂编程任务将具有重要意义。

1.2 文章结构本文主要讨论数组和字符串的方法,以帮助读者更好地理解和应用这两种数据类型。

文章结构如下:2.正文:详细介绍数组和字符串的各种方法及其用法。

2.1 数组方法:2.1.1 数组的创建和初始化:讨论如何创建和初始化数组,包括初始化为特定值、从现有数组复制等方法。

2.1.2 数组的访问和修改:介绍如何通过索引访问和修改数组元素,以及通过循环遍历数组。

5章_数组与字符串

5章_数组与字符串

目录
1. 数组的定义与功能 2. 数组的应用_数字数组
3. 数组的应用_字符数组 4. 字符串的定义
5. 字维数组举例
目录
1. 数组的定义与功能 2. 数组的应用_数字数组
3. 数组的应用_字符数组 4. 字符串的定义
5. 字符串的应用
3. 数组的应用_字符数组
{
5. 字符串的应用
字符串连接函数strcat 格式:strcat(字符数组1,字符数组2) 功能:把字符数组2连到字符数组1后面 返值:返回字符数组1的首地址 说明:字符数组1必须足够大 连接前,两串均以‘\0’结束;连接后,串1的‘\0’取消, 新串最后加‘\0’ 字符串拷贝函数strcpy 格式:strcpy(字符数组1,字符串2) 功能:将字符串2,拷贝到字符数组1中去 返值:返回字符数组1的首地址 例 char str1[20],str2[20]; 说明:字符数组1必须足够大 str1={“Hello!”}; 拷贝时‘\0’一同拷贝 str2=str1; 不能使用赋值语句为一个字符数组赋值
(3)char s[ ]=“\x69\082\n”; 答案:1 3 1
总结
数组与字符串: 1:数组的定义与功能 2:数组的应用_数字数组 3. 数组的应用_字符数组 4. 字符串的定义 5. 字符串的应用
main() { int i; char a[5]; scanf("%s",a); for(i=0;i<5;i++) printf("%d,",a[i]); }
输入字符串长度<数组 维数
运行情况: (1)若输入 hel , 正常 (2)若输入 hell , 正常 (3)若输入 hello , 用%s 输出时,会出现问题

05数组与字符串 Java编程教学课件 Java编程教学课件

05数组与字符串 Java编程教学课件 Java编程教学课件

数组元素的引用
• 通过数组名和数组索引来引用一个数组中 的元素,数组的索引从0开始到数组长度减 1,如arr[0]表示数组arr中的第1个元素,数 组的第二个元素为arr[1]等。
• 可以使用数组的一个属性length来获得数组 的长度。
数组拷贝
• 如果只是需要将数组的值拷贝到另一个数 组,可以使用System的一个静态方法 arraycopy();
String[] arr;
栈内存



arr
引用数据类型数组的创建
• 引用数据类型数组在创建的时候也是首先给数组元素分配 内存空间,然后给这些数组元素一个默认的初始值null。
arr = new String[10];
栈内存 arr
String[]对象
null
null
null

null
null

null null

{

a[i] = 2*i+1;

}
简单数据类型数组的定义
• 在定义数组的时候,系统会给这个数组分 配用于存放这个数组的内存空间,如图所 示(以int类型数组为例)
栈内存
堆 内 存
int arr[];
简单数据类型数组的创建
• 在创建简单数据类型的数组的时候,系统会分配合适的空
间用来存放该种数据类型数据的内存空间,并且将这个数 组的各个元素赋一个和数组类型匹配的初值。
栈内存
arr
int[]对象
0
0
0

0 0

0

0
0
0
0
简单数据类型数组的初始化
• 对于简单数据类型的数组,当对其进行初始化时 ,会将对应的值赋给对应的各个数组元素。

C语言课件第五章--数组和字符串

C语言课件第五章--数组和字符串

本章习题


8. 数组定义为int a[3][2]={1, 2, 3, 4, 5, 6},值为6的数组元素是 ____。 A. a[3][2] B. a[2][1] C. a[1][2] D. a[2][3] 9. 若定义:int a[][4]={1,2,3,4,5,6,7,8,9}; 则数组a的第一维的大 小是____。 A. 2 B. 3 C. 4 D. 不确定 10. 设有数组定义:char array[]=“China”;,则数组array所占的 空间为____。 A. 4个字节 B. 5个字节 C. 6个字节 D. 7个字节 11. 若已定义:char c[5]={'a','b','\0','c','\0'}; 则printf("%s", c);的 输出是____。 A. 'a' 'b' B. ab C. abc D. "ab\0c" 12. 设已定义char s[]="\"abcd\\England\"\n";,则字符串s所占的 字节数是____。 A. 19 B. 18 C. 15 D. 14
1. 一维数组


定义一维数组时,数组说明符中只用1个 维界表达式 例如,double data[8];定义了一个名为 data的double型的一维数组,含8个元素。
二维数组及多维数组


定义二维数组时,数组说明符中要用2个 维界表达式,定义n维数组时,要用n个 维界表达式。 例如,float d[2][3];定义了一个名为d的 float型的二维数组,包含2×3=6个元素。

Java第5章__数组和字符串_

Java第5章__数组和字符串_
• 格式:String 对象名=字符串常量或字 符串表达式。
• 5.String类对象的输出
• String类对象的基本输出用System.out 对象的print方法来完成。
• 5.2.2 字符串类与字符数组的关系
• 1.字符数组不是字符串类。
•பைடு நூலகம்2.字符数组可以转化为字符串类对象。
• 3.在输出时,可以用数组名引用整个数 组的所有元素。
变量一样可以作为方法的参数。
• (2)整个数组作为方法的参数:整个数组也可以作 为方法的参数。整个数组作参数传递给方法时,应该 使用不带方括号的数组名。
• (3)Java中的方法的返回值可以是数组,说明语句 如下:
• public static 类型名 [ ] myMethod(int [ ] arrA) • 方法的返回值是数组时,方法定义中一定要有一个与
• 格式:数组名[数组下标] • 说明: • (1)数组下标可以是常量、变量或表达式。 • (2)当数组下标为变量或表达式时,其值必
须在数组上下界范围之内。数组下标的下界为 0,上界为数组大小-1。
• 4.修改数组元素
• 虽然在创建数组的时候可以进行数组元素的初 始化,但是大多数情况下,在程序中需要修改 数组元素的值。
• 2.“+”可以连接任意多个字符串
• 3.“+”可以将字符串与其他类型进行连 接并自动完成其他类型到字符串类型的 转换。
• 4.相关方法 • (1)public static String valueOf( boolean
b)
• (2)public static String valueOf( char c ) • (3)public static String valueOf( int i ) • (4)public static String valueOf( long l ) • (5)public static String valueOf( float f ) • (6)public static String valueOf( double

JAVA数组与字符串详解

JAVA数组与字符串详解

JAVA数组与字符串详解第5章数组与字符串我们在前面学习的整形、字符型等都是基本数据类型,通过一个变量表示一个数据,这种变量称为简单变量。

在实际应用中,经常需要处理具有相同性质的一批数据。

例如要处理100个学生的考试成绩,如果要使用简单变量,将需要100个变量,极不方便。

为此,在Java 中,除简单变量外,还引进了数组,即用一个变量表示一组相同性质的数据。

数组必须先经过声明和初始化后才能使用。

5.1一维数组数组是用一个变量名表示一组数据,每个数据称为数组元素,各元素通过下标来区分。

如果用一个下标就能确定数组中的不同元素,这种数组称为一维数组,否则称为多维数组。

5.1.1一维数组的声明声明一个数组就是要确定数组名、数组的维数和数组元素的数据类型。

一维数组声明的格式为:类型标识符数组名【】或类型标识符【】数组名类型标识符指定每个元素的数据类型,如int表明数组中的每个元素都是整型数。

说明:(1)数组名的命名方法同简单变量,可以是任意合法的标识符。

取名是最好符合“见名知意”的原则。

(2)类型标识符可以是任意的基本类型,如int、long、float和double,也可以是类或接口。

例如,要表示学生的成绩(整数),可以声明元素的数据类型为整数的数组score,其声明如下:int score【】该声明表示数组的名字为score,每个元素为整型数。

要表示学生的体重(浮点数),可以声明元素的数据类型为float 的数组weight,其声明如下:float【】weight5.1.2一维数组的初始化声明一个数组仅为数组指定了数组名和元素的数据类型,并未指定数组的元素个数,系统无法为数组分配存储空间。

要让系统为数组分配存储空间,必须指出数组元素的个数,该工作在数组初始化时进行。

数组经过初始化后,其元素的个数、所占用的存储空间就决定下来。

数组的初始化工作可以通过new操作符完成,也可以通过给元素赋初始值进行。

1.用new初始化数组用new关键字初始化数组,只指定数组元素的个数,为数组分配存储空间,并不给数组元素赋初始值。

数组与字符串

数组与字符串

//输出数组旳长度
}
}
17
5.2 一维数组
❖一维数组旳初始化及应用
若在申明数组时进行赋值即初始化称为静态内存分配。 数据类型[ ] 数组名={初值0,初值1,…,初值n}; 如:int[] a = {1,2,3,4,5};
❖ 注意
在Java程序中申明数组时,不论用何种方式定义数组, 都不能指定其长度。
if (a[i]>sec) sec=a[i]; //a[i]为新旳次最大值
}
System.out.print("\n其中旳最大值是:"+max); //输出最大 值
System.out.println(" 次最大值是:"+sec); //输出次最大 值
}}
20
【例5.3】设有N个人围坐一圈并按顺时针方向从1到
对于数组有几种需要注意旳地方: (1)全部旳数组对象都有一种属性length,这个 属性存储了数组元素旳个数。 (2)Java编程环境会自动检验数组下标是否越 界。
12
5.2 一维数组
3.数组旳初始化 静态初始化和动态初始化
➢ 静态初始化就是在定义数组旳同步对数组元素进行初始 化 • 静态初始化可用于任何元素类型,初值块中每个位置 旳每个元素相应一种引用。 如:int intArray[ ]={1,2,3,4}; int[] ages = {34, 12, 45};
例如: int[] MyIntArray; MyIntArray =new int[10];
10
5.2 一维数组
2.数组旳创建 例如:创建一种基本数据类型元素 旳数组: public char[] createArray(){

CH5《数组和字符串》.ppt

CH5《数组和字符串》.ppt
• 用单个字符作为初值 char b[5]={'C','h','i','n','a'};
• 用字符串常量作为初值 char c[6]={"China"}; 或 char c[6]="China"; 注意:编译系统自动在字符串常量的最后加'\0'
• 可以不指定数组长度 int a[ ]={0, 2, 4, 6, 8}; 相当于 int a[5]={0, 2, 4, 6, 8}; char c[ ]= "China"; 相当于 char c[6]= "China";
… …
2. 一维数组元素的引用 数组不能以整体形式参加数据处理,参加数据处
理的只能是数组元素。数组元素的引用方法有两种: • 下标法
引用的一般形式为:数组名[下标] 其中的下标为整型常量或整型表达式,可以包含 变量,它表示了元素在数组中的顺序号即位置 • 指针法(第7章中介绍) 【例5.1】输入学生数n(不大于50)及n个学生某门 课程的成绩,计算并输出平均成绩(保留1位小数) 和高于平均成绩的人数。
内存单元。其首地址即数组名(如 a); 数组定义后,编译时无越界保护; a,a[0] 数组定义中的常量表达式中不能包 a[1] 含变量。如以下定义方法是不允许的:a[2]
int n, m=10;
float a[n], b[m];
a[9]
同类型数组可一起定义,用逗号隔开。 如:int a[10], b[20];
• 数组是按序排列的同类型变量的集合,是一组具有
相同名字, 不同下标的下标变量。
• 下标变量形式 数组名[下标]

数组与字符串

数组与字符串

同种类型
定长
使用下标访问
1.2 创建和使用数组
一个长度为5的数组 一个长度为 的数组
0 1 2 3 4
下标
元素
1. 声明一个数组 声明数组的格式: 声明数组的格式: int [ ] anArray ; int anArray[ ]; 声明时不分配内存
1.2 创建和使用数组
2. 创建一个数组 可以使用new运算符来创建一个数组,为数组分配 运算符来创建一个数组, 可以使用 运算符来创建一个数组 内存。 内存。 anArray =new int[10]; 3. 访问数组元素 分配内存后,可以为数组元素赋值。 分配内存后,可以为数组元素赋值。如: for( int i=0; i< anArray.length; i++){ anArray[i]=i; System.out.print(anArray[i]+” ”); }
2.1.5 字符串的比较
String aStr="HelloWorld!"; String bStr="HelloWorld!"; if(aStr==bStr) { //错误 , 这种判断 错误, 错误 方式是不可靠的 ...}
if(aStr.equals(bStr)){ //正确 ...} 正确
1.4 多维数组
数组中的数组元素可以是基本数据类型的值, 数组中的数组元素可以是基本数据类型的值,也可以 是对象类型的值。由于数组也是对象,因此, 是对象类型的值。由于数组也是对象,因此,数组中 的每个元素还可以是一个数组。 int [][]m=new int[3][4]; 还可以使用下面的方式: 还可以使用下面的方式: int [][]m=new int[3][]; //先生成一个长度为 先生成一个长度为3 先生成一个长度为 的数组 for(int i=0;i<m.length;i++) m[i]=new int[4]; 4的子数组 的子数组 //每个数组元素为一个长度为 每个数组元素为一个长度为
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

定义1个名字叫peaks的数组,数据类型为long,数组中共 包含25个数据。 定义数组时,指定数组元素个数的数据必须为常量。
-3-
2、访问数组中的数据
数组中的数据通过数组名和下标的组合来访问
lo 将数组中的第一个元素赋值为2909。
定义字符数组并读入数据
可以定义未初始化的字符数组(缓冲区),使用
std::cin读取用户输入并存入数组。
char yum[80]; std::cin>>yum; 问题1:cin只能读取以空格分割的1个“单词”。 问题2:如果用户输入的字符串长度超过缓冲区大小,cin 写入的数据将越过数组边界,导致程序的异常行为。
-7-
计算平均分(符号常量版本)
int main() { …… for(i=0; i< ArraySize ; i++) { ave+=score[i]; } ave/=ArraySize; std::cout<<"Average: "<<ave<<"\n"; return 0; } 思考:此时要处理10个数的平均分,要修改几处代码? 良好编程习惯:将数组大小定义为符号常量。
return 0; }
cin>>name只能读取空格前的第一段字符串。
-19-
读取字符串示例
#include <iostream> int main() {
char name[50];
std::cout<<"What is your name: "; std::cin.getline(name, 49);
字符以ASCII码保存在字符数组中,将小写字符减去32得到 对应大写字符的ASCII值。
-21-
-10-
3、数组的初始化
定义基本类型数组时,可在定义时初始化。
short a[10] = {0,10,20,30,40,50,60,70,80,90};
a 2000 2002 2004
内存地址
0 10 20 ……
a[0] a[1] a[2]
2018
90
a[9]
-11-
省略数组长度
省略数组长度时,数组元素数量等于初始值的数量,
-14-
本章内容安排
数组定义与使用 多维数组 字符数组与字符串
-15-
字符数组
C++中,字符串是以空字符(‟\0‟)结尾的字符数
组,空字符是字符串结束的标志。
char yum = {„Z‟, ‟o‟, ‟m‟, ‟b‟, ‟i‟, ‟e‟ ,‟ „, „E‟, „a‟, „t‟, „ „, „B‟, „r‟, „a‟, „i‟, „n‟, „s‟, „\0‟ }; std::cout<<yum<<“\n”; 快捷方式:char yum[] = “Zombie Eat Brains”; 编译器自动在有效字符后面添加空字符,yum数组的大小为 18个字符元素。
-8-
篱笆桩错误
访问数组元素时,最大下标应该为数组元素个数减
1,越过此边界,会导致程序的异常行为。
int score[10]; score[10] = 94;
-9-
数组定义的错误
定义数组时,大小必须为常量
int num; std::cin>>num; int score[ num ];
X
定义数组时,必须要明确数组中元素个数,否则编译器会 报错。若事先不知道需要多少个元素,需要使用更加高级 的数据结构,需要使用动态内存分配。
若不指定第3个参数,最多读取19个字符,或遇到‟\n‟后, 将其保存到yum中。
读取字符串示例
#include <iostream> int main() {
char name[50];
std::cout<<"What is your name: "; std::cin>>name;
std::cout<<"Your name is: "<<name<<"\n";
getline读取数据
为了安全读取数据,应该使用cin对象的getline。
char yum[20]; std::cin.getline( yum, 19, „ „ ); 最多读取19个字符(最后要保留一个字节存储’\0’),或遇 到空格后,将其保存到yum中。 std::cin.getline( yum, 19);
peaks[24] = 300;
将数组中的最后一个元素赋值为300。 要点:数组元素的下标从0开始!peaks数组的元素下标 范围为0~24。
-4-
计算平均分
#include <iostream> int main() { double ave=0; double score[5]; std::cout<<"Enter 5 score:\n"; int i; for(i=0;i<5; i++) { std::cout<<"Score "<<i<<":"; std::cin>>score[i]; } ……
由系统缺省指定。
int a[] = {1,2,3,4,5,6,7}; 1 2 3 4 5 6 7 a[0] a[1] a[2] a[3] a[4] a[5] a[6]
-12-
初始化时的典型问题
初始化值数量多于数组元素个数,编译出错。
int a[6] = {1,2,3,4,5,6,7};
初始化值数量可以少于数组元素个数,未赋初值的
#include <iostream> const int ArraySize = 5; int main() { double ave=0; double score[ ArraySize ]; std::cout<<“Enter “<<ArraySize<<“ score:\n"; int i; for(i=0;i< ArraySize; i++) { std::cout<<"Score "<<i<<":"; std::cin>>score[i]; } ……
-5-
计算平均分
int main() { …… for(i=0; i<5; i++) { ave+=score[i]; } ave/=5; std::cout<<"Average: "<<ave<<"\n"; return 0; } 思考:假如要处理10个数的平均分,要修改几处代码?
-6-
计算平均分(符号常量版本)
std::cout<<"Your name is: "<<name<<"\n";
return 0; }
getline读取包括空格的整行,但可以限制最多读取的字符 数,或结束字符。
-20-
转换为大写字符串
#include <iostream> int main() { char word[50]; std::cout<<"Enter a lowercase word: "; std::cin.getline(word, 49, ‘ ‘); for(int i=0; word[i]!='\0'; ++i) { word[i]-=32; } std::cout<<"The uppercase word is: "<<word<<"\n"; return 0; }
X
缺省为0。
int a[7]={1,2,3};
1 2 3 0 0 0 0
a[0] a[1] a[2] a[3] a[4] a[5] a[6]
-13-
计算数组大小
要计算某个数组所包含的元素个数,可通过如下的
计算方法实现
sizeof(a) /sizeof( a[0] )
sizeof是C++的内置运算符,计算某种类型或变量所占用的 内存字节数。 sizeof( a )计算数组总共占用的字节数。 sizeof( a[0] )计算数组中第一个元素占用的字节数。
第05章数组与字符串
本章内容安排
数组定义与使用 多维数组 字符数组与字符串
-2-
1、数组是什么
数组是一组类型相同的相关数据,它们占用连续的
存储单元,数组中的每个数据称为一个元素。 定义数组的三个要素
数组的名称; 数组中每个元素的数据类型 数组中数据的个数 long peaks[25];
相关文档
最新文档