实验5字符串的操作
- 格式:doc
- 大小:37.00 KB
- 文档页数:3
5.字符串--索引--详解字符串-索引-详解⼀、字符串索引1.索引格式:变量名[头标:下标:步长] 步长不写默认为1索引从左往右是以0开始,从右往左则以-1开始例:从左往右输出变量中得索引值name = 'yang'# 索引 0123print(name[0])结果:y从右往左输出变量中得索引值name = 'yang'# 索引 -4-3-2-1print(name[-1])结果:g2.切⽚例:输出变量中头标⾄下标这个区间的索引值,但不包含终⽌索引的值name = 'yang'# 索引 0123print(name[0:3])结果:yan3.步长步长为每次⾛的步,(有点像跨索引取值)例:name = 'helloword'#索引 012345678#从头标开始每次⾛两步的话,也就是取02468这些索引的值print(name [0:9:2])结果:hlood⼆、字符串详解1.⼤⼩写转换命令格式:换⼤写:变量名.upper()换⼩写:变量名.lower()换⼤写例:a=yanga1=a.upper()print(a1)结果:YANG换⼩写例:a=YANGa1=a.lower()print(a)结果:yang举例:让登录的验证码不区分⼤⼩写y_z_m = 'o98k' #设置验证码y_z_m_input = input("请输⼊验证码(O98k)") #⽤户输⼊验证码new_y_z_m_input = y_z_m_input.lower() #将⽤户输⼊的字符串换成⼩写if y_z_m == new_y_z_m_input:user = input('请输⼊账号:')pwd = input('请输⼊密码:')if user == 'yang' and pwd == '8520':print('登陆成功!')else:print('登录失败')else:print('验证码错误!')2.判断以什么开头命令格式:变量名.startswith('要判断的字符串')变量名.startswith('要判断的字符串',上标,下标)例:name = 'yang'new_name = name.startswith('y') #判断是否为y开头,写⼊逻辑值if new_name: #此处new_name的值为Trueprint('是以y开头')# 判断这是不是字符串是不是以a开头的例:name = 'yang' #可⽤索引指定区间new_name = name.startswith('n',2,5) #2和5分别为起始索引和终⽌索引if new_name:print('是以n开头')# 我们可以指定从哪个位置开始哪个位置结束3.判断以什么结尾命令格式:变量名.endswith('要判断的字符串')变量名.endswith('要判断的字符串',上标,下标)例:name = 'yang'new_name = name.endswith('g')if new_name:print('是以g结尾')# 判断这是不是字符串是不是以x结尾的name = 'yang'new_name = name.endswith('g',2,5)if new_name:print('是以g结尾')# 判断这是不是字符串是不是以x结尾的4.统计出现的次数命令格式:变量名.count('要判断的字符串')例:name = 'yanglang'new_name = name.count('a')print(new_name)# 统计name这个字符串中a出现的次数5.字符串替换命令格式:变量名.replace('被换','要换',换的个数)例:name = 'yanglang'new_name = name.replace('a','b',1) #把name中的a换成b,其中1是替换的次数(替换的个数)print(new_name)结果:ybnglang# 替换字符串中的内容以外我们可以指定要替换的次数例:name = 'yanglang'new_name = name.count('a') #统计a出现的次数(出现的个数)nw_name = name.replace('a','b',new_name) #把所有的a替换成b,print(nw_name)6.去除的头尾两端的空格,换⾏符,制表符命令格式:变量名.strip()例:name = ' yanglang ' # 注意!此处字符串两头是加了空格的new_name = name.strip() # 默认去除的头尾两端的空格,换⾏符,制表符也可以⾃⼰指定print(new_name)# 去除头尾俩遍的空格和换⾏符7.分割字符串命令格式:变量名.split(‘分割点’)变量名.split(‘分割点’,maxsplit=分割次数)例:name = 'yanglang' # 通过n将字符串name进⾏切割,将n作为切割点new_name = name.split("n") # 默认以空格,换⾏符,制表符分隔print(new_name)结果:['ya','gla','g'] # 切割后的内容是⼀个列表,把字符串切割成列表# print(type(变量名))可以输出变量类型例:name = 'yanglang'new_name = name.split("n",maxsplit=1) # 此处的1是切割次数(或者说是切割⼏个x)print(new_name)结果:['ya','glang']8.字符串格式化例:name = 'yanglang{}{}' #这⾥的{}是占位符new_name = name.format('说的对','是的') #可以按照顺序去填充,也可以按照索引去填充,也可以按照关键字填充print(new_name)9.is系列判断是否为⼗进制的数字命令格式:变量名.isdecimal()例:name = 'yanglang'new_name = name.isdecimal() #此处输⼊值为Falseprint(new_name)# 判断是不是⼗进制的数字,返回结果是布尔值判断是否为数字、字母和中⽂命令格式:变量名.isalnum()例:name = 'yanglang'new_name = name.isalnum()print(new_name)# 判断是不是数字和字母以及中⽂,返回结果是布尔值判断是否为纯字母和中⽂命令格式:变量名.isalpha()例:name = 'yanglang'new_name = name.isalpha()print(new_name)# 判断是不是纯字母和汉字,返回的是布尔值10.获取字符串长度命令格式:len(变量名)例:name='yanglang' #字符串name1=['a','b',[1,2,3]] #列表print(len(name)) #结果为 8print(len(name1)) #结果为 311.使⽤while循环打印单个元素例:name = "Meet"count = 0while count < len(name):print(name[count]) #将变量值作为索引,输出此索引的元素count = count + 112.for 循环例:name = "Meet"for i in name:print(i)for i in "Meet":print(i)for循环, for是关键字 i是⼀个变量后边的name是要被循环的内容,他会把这个name指向的字符串⾥的每个元素打印出来for循环是可以循环的数据结构:字符串(str)列表(list)元祖(tuple)字典(dict)集合(set)唯独不能进⾏循环的就是整型(int)和布尔值(bool) #因为这两种数据结构都是单个值【补充】1.字符串⾸字母⼤写命令格式:字符串.capitalize()例:a='asd'a=a.capitalize()print(a) #输出结果为 Asd。
本科实验报告实验名称:子程序设计实验实验五子程序设计实验(设计性实验)一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言子程序设计方法;3.熟悉利用汇编语言子程序参数传递方法;4.熟悉汇编语言字符串处理基本指令的使用方法;5.掌握利用汇编语言实现字符串的输入输出程序设计方法;6.掌握数制转换程序实现方法。
二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识A)子程序知识要点:1、掌握子程序的定义语句;过程名PROC [near/far] 过程体RET过程名ENDP2.子程序结构形式一个完整的子程序一般应包含下列内容:1. )子程序的说明部分在设计了程序时,要建立子程序的文档说明,使用户能清楚此子程序的功能和调用方法.说明时,应含如下内容:.子程序名:命名时要名中见意..子程序的功能:说明子程序完成的任务;.子程序入口参数:说明子程序运行所需参数及存放位置;.子程序出口参数:说明子程序运行结果的参数及存放位置;.子程序所占用的寄存器和工作单元;.子程序调用示例;2、)掌握子程序的调用与返回在汇编语言中,子程序的调用用CALL,返回用RET指令来完成。
.段内调用与返回:调用子程序指令与子程序同在一个段内。
因此只修改IP;.段间调用与返回:调用子程序与子程序分别在不同的段,因此在返回时,需同时修改CS:IP。
3.)子程序的现场保护与恢复保护现场:在子程序设计时,CPU内部寄存器内容的保护和恢复。
一般利用堆栈实现现场保护和恢复的格式:过程名PROC[NEAR/FAR]PUSH AXPUSH BX..PUSH DX...POP DX...POP AXRET过程名ENDP4.子程序的参数传递方法1.寄存器传递参数这种方式是最基本的参数传递方式。
2.存储器单元传(变量)递参数这种方法是在主程序调用子程序前,将入口参数存放到约定的存储单元中;子程序运行时到约定存储位置读取参数;子程序执行结束后将结果也放在约定存储单元中。
实验5---语法分析器(自下而上):LR(1)分析法一、实验目的构造LR(1)分析程序,利用它进行语法分析,判断给出的符号串是否为该文法识别的句子,了解LR(K)分析方法是严格的从左向右扫描,和自底向上的语法分析方法。
二、实验内容程序输入/输出示例(以下仅供参考):对下列文法,用LR(1)分析法对任意输入的符号串进行分析:(1)E->E+T(2)E->E—T(3)T->T*F(4)T->T/F(5)F-> (E)(6)F->i输出的格式如下:(1)LR(1)分析程序,编制人:姓名,学号,班级(2)输入一个以#结束的符号串(包括+—*/()i#):在此位置输入符号串(3)输出过程如下:3.对学有余力的同学,测试用的表达式事先放在文本文件中,一行存放一个表达式,同时以分号分割。
同时将预期的输出结果写在另一个文本文件中,以便和输出进行对照。
三、实验方法1.实验采用C++程序语言进行设计,文法写入程序中,用户可以自定义输入语句;2.实验开发工具为DEV C++。
四、实验步骤1.定义LR(1)分析法实验设计思想及算法①若ACTION[sm , ai] = s则将s移进状态栈,并把输入符号加入符号栈,则三元式变成为:(s0s1…sm s , #X1X2…Xm ai , ai+1…an#);②若ACTION[sm , ai] = rj则将第j个产生式A->β进行归约。
此时三元式变为(s0s1…sm-r s , #X1X2…Xm-rA , aiai+1…an#);③若ACTION[sm , ai]为“接收”,则三元式不再变化,变化过程终止,宣布分析成功;④若ACTION[sm , ai]为“报错”,则三元式的变化过程终止,报告错误。
2.定义语法构造的代码,与主代码分离,写为头文件LR.h。
3.编写主程序利用上文描述算法实现本实验要求。
五、实验结果1. 实验文法为程序既定的文法,写在头文件LR.h中,运行程序,用户可以自由输入测试语句。
实验五数组的使用一实验目的要求1 掌握数组的概念和使用方法。
2 掌握数组初始化的方法。
3学会字符数组和字符串的应用。
4 学会用数组名作函数的参数。
二有关概念1 只有静态数组和外部数组才能初始化。
2 引用数组时,对下标是否越界不作检查。
如定义int a[5];在引用时出现a[5],不给出错信息,而是引a[4]下面一个单元的值。
3 字符串放在字符数组中,一个字符串以‘/o’结束,有一些字符串函数如strcpy,strcmp,strlen等可以方便一进行字符串运算。
4 如有如下定义:char *str=“I love china”;表示 str是一个字符型指针变量,它的值是一个字符数据的地址。
不要认为str是字符串变量,在其中存放一个字串“I love china”。
5 用数组名作函数实参时,传到形参的是数组的首地址。
三实验内容和步骤1 定义三个数组int a[5];int b[2][2];char c[10];(1)分别在函数体外和函数体内对它们进行初始化,然后输出它们的值。
(2)在程序中再加一语句,输出a[5],b[2][2] ,分析结果。
(3)对C数组改为用赋值语句给各元素赋初值:c[0] ~ c[9]各元素分别为:…I‟, …‟, …a‟, …m‟, …‟, …b‟, …o‟, …y‟。
然后用printf(“%s”,c)输出字符串,分析结果。
参考程序如下:(1)main(){ int i,x,y;static int a[5]={1,2,3,4,5};static int b[3][2]={{3,4},{6,7},{9,5}}static char c[10]={ …i‟, …l‟, …p‟, …q‟, …k‟, …s‟, …d‟, …e‟, …a‟};for(i=0;i<5;i++)printf( “%5d”,a[i]);for(x=0;x<3;x++)for(y=0;y<2;y++)printf(“%5d”,b[x][y]);for(i=0;i<10;i++)printf(“%3c”,c[i]);}(2)结果无此值,在上面程序中要输出a数组第5个元素,和b数组的第3行第2例元素,应加此程序行:Printf(“%d”,a[4]);Printf(“%d”,b[2][1]);2 有一数组,内放10个整数,要求找出最小的数和它的下标。
17.5实验5循环结构程序设计1.实验目的(1)熟悉掌握用while语句、do…while语句和for语句实现循环的方法。
(2)掌握在程序设计中循环的方法实现一些常用的算法(如穷举、迭代、递推等)。
(3)进一步学习调试程序。
2.实验内容编程并上机调试运行(1)输入一行字符、分别统计出其中的英文字母、空格、数字和其他字符的个数(本题是教材第5章第4题)在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符的个数。
(2)输出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其个位数字立方和等于该数本身。
例如,153是一个水仙花数,因为153=1³+5³+3³(本题是教材第五章第8题)。
(3)猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃,只剩一个桃子了。
求第一天共摘了多少桃子(本题是教材第五章第12题)。
再得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后,再吃两个。
请修改程序并运行,检查结果是否正确。
(4)用牛顿迭代法求方程2X³=4x²+3x-6=0在1.5附近的根(本题是教材第五章第13题,学过高等数学的读者可选做此题)。
再得到正确结果后,请修改程序所设的X初始值由1.5改为100,1000,1000,再运行,观察结果,分析不同的x初值对结果有什么影响,为什么?修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初始值对迭代的次数有无影响。
3.预习内容预习教材第5章。
17.6实验6数组1.实验目的(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法。
(2)掌握字符数组和字符串函数的使用。
(3)掌握与数组有关的算法(特别是排序算法)。
2.实验内容编程序并上机调试运行。
五shell变量与字符串操作特点:1 shell变量没有数据类型的区分 2 Shell 把任何存储在变量中的值,皆视为以字符组成的“字符串”。
3 设定的变量值只在当前shell环境中有作⽤ 4 不能以数字开头 5 =号两边不能存在空格 6 若变量值中存在空格,必须⽤括号将变量值括起来 I = “Jack Black”在编写shell时,如果变量未赋值,后续使⽤时不会出现任何错误。
如果要显⽰错误提⽰,则需要命令 shopt -s -o nounsetshopt -s -o nounset解析如下.范例如下[root@localhost ~]# vim test1.sh#!/bin/bashecho $Infomix[root@localhost ~]# sh test1.sh# 未提⽰任何错误[root@localhost ~]# vim test1.sh[root@localhost ~]# vim test1.sh#!/bin/bashshopt -s -o nounset #添加错误提⽰echo $Infomix[root@localhost ~]# sh test1.shtest1.sh:⾏4: Infomix: 为绑定变量 #提⽰错误⼆取得变量值$变量名称=${变量名称}如果变量作为字符的⼀部分输出时,则必须⽤${}将变量括起来,否则shell将⽆法识别变量。
$会将后⾯的所有字符当做变量的⼀部分,肯定是找不到变量的[root@localhost ~]# myname='lsq'[root@localhost ~]# echo $mynamelsq[root@localhost ~]# echo ${myname}lsq[root@localhost ~]# echo hello${myname}boyhellolsqboy[root@localhost ~]# echo hello$mynameboyhello如果后⾯接的不是字符,也不是_下划线,则不需要{}来括起来。
实验五LL(1) 分析法一、实验目的:一、实验目的:根据某一文法编制调试LL (1)分析程序,以便对任意输入的符号串进行)分析程序,以便对任意输入的符号串进行析。
本次实验的目主要是加深对预测分析。
本次实验的目主要是加深对预测分LL (1)分析法的理解。
)分析法的理解。
(所需学时:4学时)二、实验二、实验原理1、LL (1)分析法的功能)分析法的功能LL (1)分析法的功能是利用)分析法的功能是利用)分析法的功能是利用LL (1)控制程序根据显示栈顶内容、向前)控制程序根据显示栈顶内容、向前)控制程序根据显示栈顶内容、向前)控制程序根据显示栈顶内容、向前看符号以及LL (1)分析表,对输入符号串自上而下的过程。
)分析表,对输入符号串自上而下的过程。
2、LL (1)分析法的前提)分析法的前提改造文法:消除二义性、左递归提取因子,判断是否为改造文法:消除二义性、左递归提取因子,判断是否为改造文法:消除二义性、左递归提取因子,判断是否为改造文法:消除二义性、左递归提取因子,判断是否为改造文法:消除二义性、左递归提取因子,判断是否为LL (1)文法,3、LL (1)分析法实验设计思想及算)分析法实验设计思想及算X∈VN‘#’‘ S’ 进栈,当前输入符送进栈,当前输入符送进栈,当前输入符送进栈,当前输入符送a栈顶符号放入栈顶符号放入X若产生式为若产生式为X X1X2…X n按逆序即Xn…X 2X1入栈出错X=’ X=’ X=’ #’X∈VTX=aX=aM[X,a] M[X,a]M[X,a] M[X,a]是产生式吗是产生式吗出错X=a读入下一个符号读入下一个符号结束是是是是否否否否否是三、实验要求对文法G(E) 如下,用LL(1)分析法对任意输入的符号串进行分析:E→E+T│TT→T*F│FF→(E)│i消除文法左递归,改写为:E →TE'E' →+TE' | εT →FT'T' →*FT' | εF →( E ) | i(1)计算每个语法单位的first 和follow 集合;(2)构造预测分析表;(3)写出分析程序。
字符串的5种常用方法(一)字符串的5种常用方法在编程中,字符串是一种常见的数据类型,用于表示文本数据。
对于字符串的处理,有许多常用的方法能够帮助我们进行字符串的操作和处理。
本文将介绍字符串的5种常用方法,包括查找、替换、拆分、连接和大小写转换等。
1. 查找方法查找方法用于在字符串中查找指定的子串,并返回其出现的位置。
常见的查找方法有:•find(substring):查找字符串中第一次出现子串的位置,若不存在则返回-1。
•index(substring):查找字符串中第一次出现子串的位置,若不存在则抛出异常。
•count(substring):统计字符串中子串出现的次数。
2. 替换方法替换方法用于将字符串中的指定子串替换为新的子串。
常见的替换方法有:•replace(old, new):将字符串中所有的旧子串替换为新子串。
•strip(chars):删除字符串开头和结尾的指定字符,默认删除空格。
3. 拆分方法拆分方法用于将字符串按照指定的分隔符拆分为多个子串,并返回一个列表。
常见的拆分方法有:•split(separator):按照指定的分隔符拆分字符串,默认以空格为分隔符。
•splitlines():按照行分隔符拆分字符串。
4. 连接方法连接方法用于将多个字符串连接成一个新的字符串。
常见的连接方法有:•join(iterable):在可迭代对象的每个元素之间插入指定的字符串,并返回一个新的字符串。
5. 大小写转换方法大小写转换方法用于将字符串的大小写进行转换,常见的大小写转换方法有:•upper():将字符串中的所有字母转换为大写。
•lower():将字符串中的所有字母转换为小写。
•title():将字符串中的每个单词的首字母转换为大写。
通过使用以上这些字符串的常用方法,我们可以更加灵活地处理字符串,实现各种功能需求。
使用这些方法,你可以轻松地进行字符串查找、替换、拆分、连接和大小写转换等操作。
计算机科学与技术学院实验报告课程名称:无线传感器网络原理与应用实验五 CC2530 DMA 实验一、实验目的透过本实验的学习,使使用者熟悉 CC2530 芯片的 DMA 传输功能相关暂存器的配置及其使用方法。
二、实验内容用CC2530 芯片内 DMA 控制器将一字符串从源位址转移到目标位址。
三、实验环境硬件:鼎轩 WSN 实验箱(汇聚网关、烧录线、平行串口线),PC 机;软件:IAR 软件,串口助手。
四、实验步骤1. DMA 简介直接存取访问(DMA)控制器可以用来减轻 8051CPU 内核传送数据操作的负担,从而实现在高效利用电源的条件下的高性能。
只需要 CPU 极少的干预,DMA 控制器就可以将数据从诸如 ADC 或 RF 收发器的外设单元传送到存储器。
DMA 控制器协调所有的 DMA 传送,确保 DMA 请求和 CPU 存储器访问之间按照优先等级协调、合理地进行。
DMA 控制器含有若干可编程的 DMA 通道,用来实现存储器-存储器的数据传送。
DMA 控制器控制整个 XDATA 存储空间的数据传送。
由于大多数 SFR 寄存器映射到 DMA 存储器空间,这些灵活的 DMA 通道的操作能够以创新的方式减轻 CPU 的负担,例如,从存储器传送数据到USART,或定期在ADC 和存储器之间传送数据样本,等等。
使用 DMA 还可以保持 CPU 在低功耗模式下与外设单元之间传送数据,不需要唤醒,这就降低了整个系统的功耗。
DMA 控制器的主要功能如下:(1) 5 个独立的 DMA 通道;(2) 3 个可以配置的 DMA 通道优先级;(3) 32 个可以配置的传送触发事件;(4) 源地址和目标地址的独立控制;(5) 单独传送、数据块传送和重复传送模式;(6) 支持传输数据的长域域,设置可变传输长度;(7) 既可以工作在字模式,又可以工作在字节模式。
2.DMA 参数配置DMA 控制器的配置需要由使用者软件来完成。
Python语言程序设计形考二实验五实验目的本实验旨在通过使用Python语言编程,练并巩固对于函数的理解和运用。
实验要求编写一个Python程序,实现以下功能:1. 输入一个字符串,检查该字符串中是否包含字母和数字。
若包含,输出字符串中的字母和数字个数;若不包含,输出提示信息。
2. 输入一个字符串,对该字符串进行反转,输出反转后的字符串。
3. 输入两个字符串,判断第二个字符串是否是第一个字符串的子串。
若是,输出提示信息;若不是,输出提示信息。
实验步骤1. 定义函数`check_alphanumeric`- 输入:一个字符串`str`- 输出:检查结果字符串- 过程:检查输入字符串是否包含字母和数字,统计其中的字母和数字个数,并返回检查结果字符串。
2. 定义函数`reverse_string`- 输入:一个字符串`str`- 输出:反转后的字符串- 过程:将输入字符串反转后返回。
3. 定义函数`check_substring`- 输入:两个字符串`str1`和`str2`- 输出:检查结果字符串- 过程:判断第二个字符串是否是第一个字符串的子串,若是,返回检查结果字符串;若不是,返回提示信息。
4. 调用上述函数,实现需求功能。
实验代码示例def check_alphanumeric(str):检查字符串是否包含字母和数字if any(c.isalpha() for c in str) and any(c.isdigit() for c in str):统计字母和数字个数alpha_count = sum(1 for c in str if c.isalpha())digit_count = sum(1 for c in str if c.isdigit())return f"该字符串包含字母和数字。
字母个数为{alpha_count},数字个数为{digit_count}。
"else:return "该字符串不包含字母和数字。
一、实验目的1. 理解字符串的基本概念和操作。
2. 掌握字符串的常用函数及其应用。
3. 熟悉字符串的查找、替换、截取等操作。
4. 培养实际编程解决问题的能力。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm三、实验内容1. 字符串的创建与赋值2. 字符串的常用函数3. 字符串的查找与替换4. 字符串的截取与拼接5. 字符串的遍历与遍历操作四、实验步骤1. 字符串的创建与赋值```pythonstr1 = "Hello, world!"str2 = 'Python is awesome.'```2. 字符串的常用函数```python# 获取字符串长度len(str1)# 获取字符串索引str1[0]# 获取字符串切片str1[1:5]# 获取字符串中子字符串的索引str1.find("world")# 获取字符串中子字符串的索引(从指定位置开始)str1.find("world", 6)# 获取字符串中子字符串的索引(从指定位置开始,直到指定位置结束)str1.find("world", 6, 11)# 检查字符串是否以指定子字符串开头str1.startswith("Hello")# 检查字符串是否以指定子字符串结尾str1.endswith("world")# 将字符串转换为小写str1.lower()# 将字符串转换为大写str1.upper()# 将字符串转换为首字母大写str1.capitalize()# 判断字符串是否全部由字母组成str1.isalpha()# 判断字符串是否全部由数字组成str1.isdigit()# 判断字符串是否为空str1.isempty()```3. 字符串的查找与替换```python# 查找子字符串str1.find("world")# 替换子字符串str1.replace("world", "Python")# 替换所有匹配的子字符串str1.replace("world", "Python", 1) ```4. 字符串的截取与拼接```python# 截取字符串str1[1:5]# 拼接字符串str1 + " " + str2```5. 字符串的遍历与遍历操作```python# 遍历字符串for char in str1:print(char)# 遍历字符串的索引for i in range(len(str1)):print(str1[i])# 遍历字符串的索引和值for i, char in enumerate(str1):print(i, char)```五、实验结果与分析1. 字符串的创建与赋值实验结果:成功创建了两个字符串str1和str2。
实验1 创建、编译与运行Java程序17268 计算两个整数得与从键盘输入两个整数,计算并输出两个整数得与。
import java、util、Scanner;public class Main {public static void main(String[] args) {int a,b;Scanner input = new Scanner(System、in);a=input、nextInt();b=input、nextInt();int c = a + b;System、out、println(c);}}17269 输出两个整数中得较大得值从键盘输入两个整数,判断并输出两个整数中较大得值。
import java、util、Scanner;public class Main {public static void main(String[] args) {int a,b;Scanner input = new Scanner(System、in);a=input、nextInt();b=input、nextInt();if(a>b)System、out、println(a);elseSystem、out、println(b);}}实验2 基本数据类型、运算与表达式18135 在显示屏上显示指定字符要求编写一个程序,在显示屏上显示如下内容。
注:类名必须为Main(大写M) C:\ABC、TXT is "file"public class Main {public static void main(String[] args) {System、out、print("C:\\ABC、TXT is \"file\"");} }18136 计算圆得面积由键盘输入圆得半径,计算并输出圆得面积,结果保留2位小数。
注:类名必须为Main(大写M)import java、util、Scanner;import java、text、DecimalFormat;public class Main {public static void main(String[] args) {double a,b,c;Scanner input = new Scanner(System、in);a = input、nextDouble();b = 3、14159;c = a*a*b;System、out、println(new DecimalFormat("#、##")、format(c));}}18138 输出三位整数得各位数字从键盘输入一个3位得整数,要求按照:个位、十位与百位得顺序输出三个数字。
实验五LL(1)文法识别程序设计一、实验目的通过LL(1)文法识别程序的设计理解自顶向下的语法分析思想。
二、实验重难点FIRST集合、FOLLOW集合、SELECT集合元素的求解,预测分析表的构造。
三、实验内容与要求实验内容:1.阅读并理解实验案例中LL(1)文法判别的程序实现;2.参考实验案例,完成简单的LL(1)文法判别程序设计。
四、实验学时4课时五、实验设备与环境C语言编译环境六、实验案例1.实验要求参考教材93页预测分析方法,94页图5.11 预测分析程序框图,编写表达式文法的识别程序。
要求对输入的LL(1)文法字符串,程序能自动判断所给字符串是否为所给文法的句子,并能给出分析过程。
表达式文法为:E→E+T|TT→T*F|FF→i|(E)2.参考代码为了更好的理解代码,建议将图5.11做如下标注:/* 程序名称: LL(1)语法分析程序 *//* E->E+T|T *//* T->T*F|F *//* F->(E)|i *//*目的: 对输入LL(1)文法字符串,本程序能自动判断所给字符串是否为所给文法的句子,并能给出分析过程。
/********************************************//* 程序相关说明 *//* A=E' B=T' *//* 预测分析表中列号、行号 *//* 0=E 1=E' 2=T 3=T' 4=F *//* 0=i 1=+ 2=* 3=( 4=) 5=# *//************************************/#include"iostream"#include "stdio.h"#include "malloc.h"#include "conio.h"/*定义链表这种数据类型参见:*/struct Lchar{char char_ch;struct Lchar *next;}Lchar,*p,*h,*temp,*top,*base;/*p指向终结符线性链表的头结点,h指向动态建成的终结符线性链表节点,top和base分别指向非终结符堆栈的顶和底*/char curchar; //存放当前待比较的字符:终结符char curtocmp; //存放当前栈顶的字符:非终结符int right;int table[5][6]={{1,0,0,1,0,0},{0,1,0,0,1,1},{1,0,0,1,0,0},{0,1,1,0,1,1},{1,0,0,1,0,0}};/*存放预测分析表,1表示有产生式,0表示无产生式。
C 语言实验报告(五)一、实验目的1. 掌握使用 C 语言中数组的方法2. 掌握如何定义数组,如何引用数组元素3. 掌握二维数组的元素在内存中的存放方式4. 掌握什么是字符串,字符串结束符的作用5. 实现字符串的存储和操作,包括字符串的输入和输出6. 理解 C 语言将字符串作为一个特殊的一维字符数组二、实验内容描述:津津上初中了。
妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。
此外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。
但是津津如果一天上课超过八个小时就会不高兴,而且,上得越久就会越不高兴。
假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。
请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴。
如果会的话,哪天最不高兴。
输入:输入数据有多组,第一行包含一个整数 T,表示有 T 组数据。
每组输入包括七行数据,分别表示周一到周日的日程安排。
每行包括两个小于 10 的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。
输出:输出包括一行,这一行只包含一个数字。
如果不会不高兴则输出 0,如果会则输出最不高兴的是周几 (用 1,2,3,4,5,6,7 分别表示周一,周二,周三,周四,周五,周六,周日)。
如果有两天或者两天以上不高兴的程度相当,则输出时间最靠前的—天。
5 36 27 25 35 40 40 63描述:某公司邀请 40 个顾客参加投票活动,选举他们最爱慕的产品,以决定公司今后的销售策略。
共有编号为 1 号~10 号的 10 个产品,每人只能选择一个产品。
编写程序,在整数数组中设置这 40 个值(投票情况),然后统计投票结果(每一个产品的得票数目)。
输入:40 个数值在 1~10 (含 1 和 10)之间的整数输出:如下所示:1 1 1 1 123 3 3 3 34 45 5 5 56 6 6 6 6 6 6 67 7 7 7 78 8 8 8 89 9 9 10 10如上图所示描述:有 n 个(n<=40)学生,现要统计这 n 个学生一次考试中不及格的人数输入:有两行,第一行为整数n;第二行为 n 个整数成绩(100(含) 以内)输出:一个整数,表示 n 个成绩中低于 60 分的个数样例输入:590 45 67 80 56样例输出:2描述:有一个长度为 n 的整数序列。