第三讲数组、字符串精讲_第1页
第三讲数组、字符串精讲_第2页
第三讲数组、字符串精讲_第3页
第三讲数组、字符串精讲_第4页
第三讲数组、字符串精讲_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三讲

数组、字符串

同类型变量或对象的集合称为数组。定义:类型名数组名[元素个数]元素个数必须是常数或常量表达式;数组下标取值从0开始,使用数组时下标不能越界;同一数组的所有数组元素在内存中占用一片连续的存储单元。引用:数组名[下标]下标可以是任何值为整型的表达式,可以包含变量和函数调用;下标值应在数组定义的下标值范围内。一维数组例3.1斐波那契数列指的是这样一个数列:0、1、1、2、3、5、8、13、21、……求数列的前20项并按从大到小的顺序输出。一维数组初始化:在定义一个一维数组的同时,可以给数组中的元素赋初值。格式:类型名数组名[常量表达式]={值1,值2,……}例如:inta[10]={0,1,2,3,4,5,6,7,8,9}相当于:a[0]=0;a[1]=1;a[2]=2;……;a[9]=9一维数组例3.2输入年、月、日,输出该天是这一年的第几天。一维数组为什么多了一个0?例3.3下面两个程序没有初始化数组,观察程序默认的数组变量初值。如果数组定义放在intmain()之内,其初始值是随机的。一维数组例3.4写出下面程序的运行结果。当给数组的部分元素赋初值后,其他元素的初值自动赋0值。一维数组可以使用memset函数给数组变量赋初值。需要#include<cstring>头文件一维数组排序:选择排序、冒泡排序、插入排序、计数排序、快排序……例3.5输入n个数,将n个数按从小到大的顺序输出(n<=1000)一维数组例3.6输入n个数,存入数组a中,每一个数都是介于0到k之间的整数,此处k为某个整数(n<=100000,k<=1000),按从小到大的顺序输出a数组的数据。一维数组利用C++自带的库函数进行排序需要include<algorithm>头文件格式:sort(first,last,comp),first是待排序数组的开始地址,last是结束地址,是一个左闭右开区间,即[first,last),comp函数是数组中元素先后次序的判断依据。一维数组例3.7从键盘读入10个数,然后从小到大输出。一维数组例3.8从键盘读入10个数,然后从大到小输出。一维数组例3.9成绩排序。给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。输入格式:第一行为n(0<n<20),表示班里的学生数目;接下来的n行,每行为每个学生的名字和他的成绩,中间用单个空格隔开。名字只包含字母且长度不超过20,成绩为一个不大于100的非负整数。输出格式:把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。一维数组注意参数定义: 类型名数组名[常量表达式1][常量表达式2];

例如:intnum[4][6];二维数组[0,0][0,1][0,2][0,3][0,4][0,5][1,0][1,1][1,2][1,3][1,4][1,5][2,0][2,1][2,2][2,3][2,4][2,5][3,0][3,1][3,2][3,3][3,4][3,5]例3.10杨辉三角是一个由数字排列成的三角形数表,一般形式如下:

1 11 121 1331 14641 15101051 1615201561 172135352171输入数据:一个正整数n,表示三角形的行数。输出数据:n行杨辉三角形二维数组分析:从第3行开始,每行第1个和最后1个值为1,其他值为其上方和左上方数字和。设二维数组c[i][j]存储行坐标为i、列坐标为j位置上元素值,则c[i][j]=c[i-1][j-1]+c[i-1][j]。二维数组字符数组的定义格式:

char数组名[元素个数];例3.11写出下面程序的运行结果。字符数组在使用双引号初始化时,字符个数必须比所定义的数组元素个数少1,因为数组的最后一个位置用来存放字符“\0”。例3.12在应用计算机编辑文档的时候,我们经常遇到替换任务。例如把文档中的“电脑”都替换成“计算机”。现在请你模拟一下这个操作。输入两行内容,第1行是原文(长度不超过200个字符),第2行包含以空格分隔的两个字符A和B,要求将原文中所有的字符A都替换成字符B。输入样例:

IloveChina.IloveBeijing. IU输出样例:

UloveChina.UloveBeijing.字符数组分析:先将给定的原文保存在字符数组里,然后从头开始寻找字符A,找到一个字符A,便将其替换成B输出。字符数组循环体为空可以省略吗?字符数组可以作为字符串整体进行输入和输出。scanf(“%s”,字符串名称);字符串名称前不加&;系统会自动在输入的字符串常量后添加’\0’;输入多个字符串时,以空格分隔。printf(“%s”,字符串名称);输出项只能是字符串,不能是数组元素;输出字符串不包括字符串结束标志符’\0’。字符数组例3.13对给定的10个国家名,按其字母的顺序输出。字符数组字符数组函数格式函数功能strcat(字符串名1,字符串名2)将字符串2连接到字符串1后边strncat(字符串名1,字符串名2,长度n)将字符串2前n个字符连接到字符串1后边strcpy(字符串名1,字符串名2)将字符串2复制到字符串1strncpy(字符串名1,字符串名2,长度2)将字符串2前n个字符复制到字符串1strcmp(字符串名1,字符串名2)比较字符串1和字符串2的大小strncmp(字符串名1,字符串名2,长度2)比较字符串1和字符串2的前n个字符进行比较strlen(字符串名)计算字符串的长度strwr(字符串名)将字符串大写字母换成小写字母strupr(字符串名)将字符串小写字母换成大写字母例3.14在屏幕上输出:Helloworld!。字符串字符串字符串定义头文件cin读入字符串时,空格和换行符都被认为是字符串的结束例3.16过滤多余的空格。一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。输入格式:1行,一个字符串(长度不超过200),句子的头和尾都没有空格。输出格式:过滤之后的句子。输入样例:

Helloworld.Thisisclanguage.输出样例:

Helloworld.Thisisclanguage.字符串分析:如何判断读入结束?

while(cin>>temp)的功能是 循环读入数据,在读不到的 时候停止循环。字符串如何连接? 用“+”连接两个字符串。 注意:两个字符串常量是不能 用“+”连接的。例:strings=“abc”+“def”;字符串例3.17统计数字字符个数。输入1行字符,统计出其中数字字符的个数。输入格式:1行字符串,总长度不超过255。输出格式:输出为1行,输出字符串里面数字字符的个数。输入样例: PekingUniversityissetupat1898.输出样例:

4字符串分析读入1行字符放入一个字符串变量,再判断每个字符是否是数字。如果输入的1行字符串中有空格,可以用getline函数读入,getline函数默认是碰到换行符才结束。字符串string类型的成员函数:成员函数是指某个类型的特有函数;成员函数调用方式是:变量名.函数名(参数)。字符串格式说明size()求字符串长度substr(开始位置i,子串长度len)取字符串的子串,当i+len超过原字符串长度时,只取剩下的。insert(插入位置i,插入字符串s)在字符串的第i个位置插入serase(开始位置i,删除长度len)删除字符串的第i个位置后的len个字符replace(开始位置i,长度len,要换上的字符串ss)用字符串ss替换字符串中i开始长度是len的一段find(子串subs)查找子串subs第1次出现的位置例3.18选择你喜爱的水果。程序中保存了七种水果的名字,要求用户输入一个与水果有关的句子。程序在已存储的水果名字中搜索,以判断句子中是否包含七种水果的名称。如果包含,则用词组“Brusselssprouts”替换句子中出现的水果单词,并输出替换后的句子。如果句子中没有出现这些水果的名字,则输出“Youmustnotenjoyfruit.”。假设七种水果的名字为:apples,bananas,peaches,cherries,pears,oranges,strawberries。输入格式:有多行,每行是一个字符串(长度不超过200)。每行输入中只会有一个水果名称,不会存在1行输入包含多种水果名称或重复水果名称的情况。输出格式:如果包含水果单词,则用词组“Brusselssprouts”替换句子中出现的水果单词,并输出替换后的句子。如果句子中没有出现这些水果的名字,则输出“Youmustnotenjoyfruit.”。字符串输入样例:

Ireallylovepeachesonmycereal. I’dratherhaveacandybar applesarewonderfulwithlunch输出样例:

IreallyloveBrusselssproutsonmycereal. You

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论