(2021年)四川省眉山市全国计算机等级考试数据库技术模拟考试(含答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2021年)四川省眉山市全国计算机等级考试数据库技术模拟考试(含答案) 学校:________ 班级:________ 姓名:________ 考号:________
一、1.选择题(10题)
1. 对现实世界要处理的对象进行详细调查,在了解现行系统的概况,确定新系统功能的过程中,收集支持系统目标的基础数据及其处理方法。
这属于哪一阶段的任务?
A.需求分析
B.概念结构设计
C.逻辑结构设计
D.物理设计
2. 下述选项属于数据库设计内容的是
Ⅰ.设计数据库管理系统
Ⅰ.设计数据库概念结构
Ⅰ.设计数据库逻辑结构
Ⅰ.设计数据库物理结构
A.Ⅰ和Ⅰ
B.Ⅰ、Ⅰ和Ⅰ
C.Ⅰ和Ⅰ
D.都是
3. 下列叙述中正确的是( )。
A.遵守两阶段封锁协议的并发事务不一定是可串行化的
B.遵守两阶段封锁协议的并发事务也有可能发生死锁
C.遵守两阶段封锁协议的并发事务一定不会发生级联回滚
D.遵守两阶段封锁协议的并发事务的所有锁一定要到事务提交之后才解锁
4. 设有关系R和S,关系代数表达式R-(R-S)表示的是
A.R∩S
B.R-S
C.R∪S
D.R÷S
5. 栈是一种______,是软件中常用的数据结构。
A.逻辑特殊的线性结构
B.容量受限的线性结构
C.运算操作限制在同一端进行的线性结构
D.按随机存取方式运算的线性结构
6.在数据库设计中,将E-R图转换成关系数据模型的过程属于( )
A.需求分析阶段
B.逻辑设计阶段
C.概念设计阶段
D.物理设计阶段
7.采用SPOOLing技术的主要目的是()。
A.提供内存和磁盘的接口
B.减轻用户编程负担
C.提高CPU和设备交换信息的速度
D.提高独占设备的利用率
8. 设单链表中结点的结构为(data,link)。
已知指针q所指结点是指针p 所指结点的直接前驱,若在*q与*p之间插入结点*s,则应执行下列哪一个操作?
A.s↑.link=p↑.link;p↑.link:=s
B.q↑.link:=s;s↑link=p
C.p↑.link:=s↑.link;s↑.link:=p
D.P↑.link:=s;s↑.link:=q
9. Oracle目前可以存储极大的对象,这是因为它引入了四种新数据类型,
其中一种大对象数据类型在数据库中只存储它的目录名,它是:
A.CLOB
B.BLOB
C.BFILE
D.NCLOB
10. 下面列出的条目中,哪些是数据库技术的主要特点?
Ⅰ.数据的结构化
Ⅰ.数据的冗余度小
Ⅰ.较高的数据独立性
Ⅰ.程序的标准化
A.Ⅰ、Ⅰ和Ⅰ
B.Ⅰ和Ⅰ
C.Ⅰ、Ⅰ和Ⅰ
D.都是
二、填空题(10题)
11.OraCle系统不仅具有高性能的RDBMS,而且提供全过程的应用开发工具。
0raCleDesigner 2000所承担的功能是____________。
12. 在SQL语言中,允许获得某种权限的用户把这种权限再转授给其他用户,可以在GRANT语句中指定______子句。
13. 一些进程相互合作共同完成一项任务,进程之间的这种直接的协同工作关系称为_____。
14. 在页式存储管理中,用户程序的逻辑地址由【】和页内地址两部分组成。
15. 通常,自然连接的两个运算对象关系R和S具有公共属性,如果关系R和S没有公共属性,那么它们的自然连接就等同于______。
16.PowerBuilder 10.0为使用.NET开发工具的用户提供了一套【】工具。
这项专利技术是为简化应用开发而设计的,可缩短开发时间、减少代码等。
17.客户机/服务器模式在实现中需要解决的主要问题有:标识一个特定的服务、响应并发请求和服务器程序的___________。
18. 投影操作是在关系中选择某些______。
19. 数据库应用系统的设计应该具有对数据进行收集、存储、加工、抽取和传播等功能,即包括数据设计和处理设计,而【】是系统设计的基础和核心。
20. Internet的通信协议是【】。
三、单选题(10题)
21.数据库管理系统中用于定义和描述数据库逻辑结构的语言称为( )
A.数据库模式描述语言(DDL)
B.数据库子语言(SubDL)
C.数据操纵语言
(DML) D.数据结构语言
22.下面说法中错误的是( )
A.子类具有继承性
B.子类的键是其超类的键
C.子类继承超类上定义的全部属性,其本身不可包含其他另外的属性
D.同一实体类型的若干子类之间可相交也可不相交
23.若实体间的联系是M∶N,则将联系类型( )
A.的属性加入任一个关系模式中
B.的属性加入N端实体类型相对应的关系模式中
C.的属性加入M端实体类型相对应的关系模式中
D.也转换为关系模型
24.在数据库概念设计阶段,进行局部E-R模式的设计时,为实体和联系确定属性的原则除了( )外都是。
A.属性应该是不可再分解的语义单位
B.先确定公共实体类型的属性
C.实体与属性之间的关系只能是1∶N的
D.不同实体类型的属性之间应为直接关联关系
25. 在概念设计阶段,需要确定实体型特征由哪些属性组合而成,这个工作是对数据进行什么抽象? ( )
A.分类
B.聚集
C.概括
D.数据抽象
26.SQL语言的GRANT和REVOKE语句主要用来维护数据库的()。
A.安全性
B.完整性
C.可靠性
D.一致性
27.磁盘的读写单位是( )
A.块
B.扇区
C.簇
D.字节
28.如果以链表为栈的存储结构,则退栈操作时( )
A.必须判别栈是否满
B.必须判别栈是否空
C.判别栈元素的类型
D.对栈不作任何判别
29.下列计算机表示的信息中,不能称为"数据"的是( )
A.人的姓名
B.图形符号
C.计算机程序
D.文件名
30.在数据库设计的( )阶段,产生DBMS可以接受的源代码。
A.概念设计
B.逻辑设计
C.物理设计
D.实现
四、C语言程序设计题(10题)
31. 函数ReadDat实现从文件in.dat中读取一篇英文文章存入到字符串数组XX中,请编制函数ConvertCharA,其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z,则改写成字母a,大写字母和其他字符保持不变。
把已处理的字符串
仍按行重新存入字符串数组XX中。
最后main函数凋用函数WriteDat 把结果XX输出到文件0ut.dat中。
32. 已知数据文件in.dat中存有200个四位数,并已调用读函数readDat 把这些数存入数组a中,请考生编制一函数jsVal,其功能是:从数组a 中依次取出一个四位数,对每一个四位数作如下处理:把个位数字和千位数字重新组成一个新的含有两位数字的数(新数的十位数字是原四位数的个位数字,新数的个位数字是原四位数的千位数字),以及把百位数字和十位数字组成另一个新的含有两位数字的数(新数的十位数字是原四位数的百位数字,新数的个位数字是原四位数的十位数字),如果两个新组成数:一个是奇数,另一个为偶数,并且至少有一个数能被17整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数存入数组b中,并计算满足上述条件的四位数的个数cnt,而后对数组b进行降序排序。
最后main函数调用写函数writeDat把结果cnt以及数组b 中符合条件的四位数输出到out.dat文件中。
例如:一个四位数为4512,依题意组成的第一个新数为24,第二个新数为51,其中51能被17整除,这两个新数的十位数字不为零,则4512这个四位数满足题意所规定条件。
33. 已知在文件in.dat中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称me(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。
其中:金额=单价*数
量。
函数ReadDat读取这100个销售记录并存入结构数组sell中。
请编制函数SortDat,其功能要求:按产品名称从大到小进行排列,若产品名称相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell 中。
最后mainoi函数调用函数WriteDat把结果输出到文件out.dat中。
提示:若中间变量为PRO temp,则可以直接使用结构赋值语句进行解题:产品名称比较请用函数strcrnp进行解题。
例如:sell[i]=temp;
注意:部分源程序存放在test.c文件中。
请勿改动主函数main、读函数ReadDat和输出函数WriteDat的内容。
34. 函数readDat是从文件in.dat中读取20行数据存放到字符串数组XX中(每行字符串长度均小于80)。
请编制函数isSort,其函数的功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组XX中,最后调用函数writeDat把结果)XX输出到文件0ut.dat中。
条件:字符串从中间一分为二,左边部分按字符的ASCII值降序排序,右边部分不作处理,排序后,左边部分与右边部分按例子所示进行交换。
如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。
35. 函数ReadDat实现从文件in.dat中读取一篇英文文章,存入到无符号字符串数组XX中,请编制函数encryptChar,按给定的替代关系对数组)XX中的所有字符进行替代,其替代值仍存入数组XX的对应的位置上,最后调用函数writeDat把结果xx输出到文件out.dat中。
替代关系:)=p*17 mod 256,mod为取余运算,p是数组)xx中某一个字符的ASCII值,f(p)是计算后的无符号整型值(注意:中间变量定义成整型变量),如果计算后f(p)值小于等于32或f(p)是奇数时,则该字符不变,否则用f(p)替代所对应的字符。
36. 函数ReadDat实现从文件in.dat中读取一篇英文文章,存入到字符串数组XX中;请编制函数eneryptChar,按给定的替代关系对数组XX 中的所有字符进行替代,仍存入数组XX对应的位置上,最后调用函数
WriteDat把结果xX输出到文件out.dat中。
替代关系:f(p)=p*11 mod 256,mod为取余运算,P是数组XX中某一个字符的ASCII值,f(p)是计算后的无符号整型值(注意:中间变量定义成整型变量),如果计算后f(p)值小于等于32或f(p)对应的字符是大写字母,则该字符不变,否则用f(p)替代所对应的字符。
注意:部分源程序存放在test.c文件中,原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格,并也按此替代关系进行处理。
请勿改动主函数main、读函数ReadDat和输出函数WriteDat的内容。
37. 已知数据文件in.dat中存有300个四位数,并已调用读函数readDat 把这些数存入数组a中,请编制一数jsValue,其功能是:求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序。
最后main函数调用写函数writeDat把数组b中的数输出到文件0ut.dat。
38.
函数ReadDat实现从文件in.dat中读取一篇英文文章存入到字符串数组XX中,请编制函数ConvertCharD,其函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的上一个字母,如果是字母a,则改写成字母z,其他字符保持不变。
把已处理的字符串仍按行重新存入字符串数组xx中。
最后main函数调用函数WriteDat把结果xx输出到文件out.dat中。
例:原文:Adb.Bcdza
abck.LLhj结果:Aca.Bbcyzzabj.LLgi原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。
注意:部分源程序存放在test.c文件中。
请勿改动主函数main、读函数ReadDat0和输出函数WriteDat的内容。
39. 函数ReadDat实现从文件in.dat中读取一篇英文文章,存入到字符串数组XX中;请编制函数encryptChar,按给定的替代关系对数组XX
中的所有字符进行替代,仍存入数组xx对应的位置上,最后调用函数WriteDat把结果XX输出到文件out.dat中。
替代关系:f(p)=p*11 mod 256,mod为取余运算,P是数组XX中某一个字符的ASCII值,f(p)是计算后的无符号整型值(注意:中间变量定义成整型变量),如果原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变,否则用f(p)替代所对应的字符。
注意:部分源程序存放在test.c文件中,原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格,并也按此替代关系进行处理。
请勿改动主函数main、读函数ReadDat和输出函数WriteDat的内容。
40. 已知数据文件in.dat中存有200个四位数,并已调用读函数readDat 把这些数存入数组a中,请考生编制一函数jsVal,其功能是:若一个四位数的千位数位置上的值小于等于百位数位置上的值,百位数位置上的值小于等于十位数位置上的值,以及十位数位置上的值小于等于个位数
位置上的值,并且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat把结果cnt以及数组b中符合条件的四位数输出到文件0ut.dat 中。
五、设计与应用题(2题)
41.已知有如下关系模式:R1(a,b,c),R2(c,d,a),R3(e,f),R4(a,e,g),其中标下划线的属性是主码。
请将上述关系模式用适当的ER图表示出来,并用下划线标注出作为实体主码的属性。
(10分)
42.设某全国性的运输企业建立了大型0LTP系统,并在该系统之上建立了数据仓库。
0LTP系统和数据仓库中有如下数据表:运输明细表(运输单ID,发送站ID,终到站ID,货物ID,货物重量,运输价格,发货日期)汇总表1(发送站ID,终到站ID,货物ID,发货日期,总重,总运价)汇总表2(发送站ID,终到地区ID,货物ID,发货日期,总重,总运价)汇总表3(发送站ID,终到站ID,货物ID,发货月份,总重,总运价)汇总表4(发送地区ID,终到地区ID,货物类别ID,发货日期,总重,总运价)该企业管理的货运站约有100个,货物约有500种共l0类,各汇总表都建有主码,且各表有合理的维护策略,在每次维护后数据能保持一致。
设有视图V,该视图的访问频率很高,其查询结果模式为(发送地区ID,终到站ID,发货月份,总重,总运价),该视图现以汇总表1为计算数据源。
经监控发现,汇总表1的被访问频率过高,导致系统整体性能下降,而其它汇总表被访问频率较低。
在不增加汇总表和索引的情况下,请给出一个改善系统服务性能的优化方案,并简要说明理由。
(10分)
六、单选题[1分](2题)
43.设在SQL Server 2008中,某关系表需要存储职工的工资信息,工资的范围为2000~10000,设用整型类型存储。
下列数据类型中最合适的是()。
A.int
B.smallint
C.tinyint
D.bigint
44.在SELECT语句中,以下有关0RDER BY子句的叙述中不正确的是()。
A.ORDERBY子句可以对多个列进行排序
B.SELECT语句中,0RDER BY只能在所有其他子句之后作为最后一个子句出现
C.子查询也可以使用0RDER BY子句
D.在视图中可以使用0RDER BY子句
参考答案
1.A解析:新奥尔良方法将数据库设计过程分为4个阶段:需求分析、概念结构设计、逻辑结构设计和物理设计。
需求分析阶段是在用户调查的基础上,通过分析,逐步明确用户对系统的需求,包括数据需求和围绕这些数据的业务处理需求。
注意:在题干的叙述中,“对现实世界要处理的对象进行详细调查,在了解现行系统的概况,确定新系统功能的过
程中,收集支持系统目标的基础数据及其处理方法”属于需求分析阶段,故A)选项正确。
掌握需求分析的任务,需求分析的基本步骤。
2.B解析:数据库设计的设计内容包括:需求分析,概念结构设计、逻辑结构设计、物理结构计、数据库的实施和数据库的运行和维护。
对比题目中的四个选项可知,I设计数据库管理系统不属于数据库设计的内容,因此正确答案为B。
3.B解析:保证可串行性的一个协议是两阶段封锁协议。
该协议要求每个事务分为两个阶段提出加锁和解锁申请。
在增长阶段中,事务可以获得锁但不能释放锁。
在缩减阶段中,事务可以释放锁但不能获得新锁。
两阶段封锁协议保证可串行性。
不幸的是两阶段封锁协议也有一些问题,如无法避免级联回滚。
此外封锁自身也会引发问题,主要的问题是死锁。
死锁指的是两个或更多的事务同时处于等待状态,每个事务都在等待其他的事务释放锁使其可继续执行。
严格两阶段封锁协议除了要求封锁是两阶段之外还要求事务持有的所有排他锁必须在事务提交之后方可释放。
因此选项A)、C)、D)是错误的。
4.A解析:假设关系R和关系S具有相同的属性,且相应的属性取自同一个域,则关系R与关系S的差由属于R而不属于S的所有元组组成。
R-(R- S)最终的结果是属于R又属于S的元组组成。
所以可以写成为R∩S。
5.C解析:栈是一种线性结构,它有什么特点呢?选择项A表示栈在逻辑上是特殊的。
因栈是线性结构,结构中元素之间存在着一个对一个的线性关系,与线性表一致,逻辑上没有什么特殊性,选择项A是错误的。
从存储方式上看,栈有两种存储方式结构,即栈的顺序存储结构和栈的链式存储结构(即链栈)。
一般情况下,链栈的容量是不受限制的,选择项B也是不对的。
从运算方式上看,栈的运算限制在表的一端进行,栈中元素的进出是按后进先出的原则进行的,不能随机存取,选择项D也是错误的。
因此,C是正确答案。
6.B
数据库应用系统的逻辑设计包括数据库逻辑结构设计、数据库事务概
要设计和应用程序概要设计三方面。
数据库逻辑结构设计的主要步骤为:将E—R图转换为初始关系模式,对初始关系模式进行优化,检
查关系表对数据库事务的支持性,确定关系模式完整性约束,设计基
于关系模式的用户视图。
7.D解析:在一类设备上模拟另一类设备的技术称为虚设备技术。
通常使用高速设备来模拟低速设备,以此把原来慢速的独占设备改造成为若干进程共享的快速共事设备。
就好像把一台设备变成了多台虚拟设备,从而提高了设备的利用率.我们称被模拟的设备为虚设备。
SPOOLing 技术是一类典型的虚设备技术。
8.B解析:在单链表中两个节点之间插入一个新结点,要把前面结点的指针域指向新插入的结点(q↑.link=s),把新插入的结点的指针域指向后面的结点(s↑.link=P)。
9.C解析:考查Oracle的数据类型。
Oracel目前可以存储极大的对象,例如视频、音频和文档文本。
为此引入了新的数据类型,包括:①BLOB:二进制数据型大对象;②CLOB:字符数据型大对象;③BFILE:存储在
数据库之外的只读型二进制数据文件;④NCLOB:固定宽度得多字节CLOB。
上述除存储在数据库之外的BFILE类型,其他的大对象类型都与一般数据一同存储在数据库内。
对于BFILE,数据库中只存储它的目录名。
10.A解析:本题是对数据库技术的主要特点的考查。
数据库技术的主要特点有:①数据库系统的自描述特点:②数据结构化;③数据共享性高,冗余度小,易扩充;④数据独立性高。
对照题干中的4项可知,Ⅰ、Ⅰ和Ⅰ都是数据库的特点,而Ⅰ.程序的标准化并不是所有数据库的共性,程序可以采用不同的语言,并没有标准化。
因此本题的答案为选项A。
11.数据库建模。
【解析】OracleDesigner 2000是Oracle提供的CASE工具,能够帮助用户对复杂系统进行建模、分析和设计。
12.WITH GRANT OPTIONWITH GRANT OPTION 解析:GRANT语句的一般格式为:
GRANT<权限》[,(权限)]...
[ON<对象类型><对象名>]
T0<用户>[<用户>]...
[WITH GRANT OPTION];
其中若指定了WITH GRANT OPTION子句,则获得某种权限的用户还可以把这种权限再授予其他的用户。
若没有指定WITHGRANT OPTION 子句,则获得某种权限的用户只能使用该权限,但不能传播该权限。
13.进程同步或同步进程同步或同步
14.逻辑页号逻辑页号解析:在页式存储管理中,用户程序的逻辑地址
由逻辑页号和页内地址两部分组成。
15.笛卡儿积笛卡儿积解析:自然连接是构造新关系的有效方法,投影和选择是分解关系的有效方法。
利用投影、选择和自然连接操作可以任意地分解和构造新关系。
一般,自然连接使用在R和S有公共属性的情况中。
如果两个关系没有公共属性,那么他们的自然连接就变成笛卡儿积。
16.Data PowerBuilder美国Sybase公司研制的一种新型、快速开发工具,是客户机/服务器结构下,基于Windows3.x、Windows95和WindowsNT的一个集成化开发工具。
它包含一个直观的图形界面和可扩展的面向对象的编程语言PowerScript,提供与当前流行的大型数据库的接口,并通过ODBC与单机数据库相连。
PowerBuilder的主要特色是DataWindow(数据窗口),通过DataWindow可以方便地对数据库进行各种操作,也可以处理各种报表,而无需编写SQL语句,可以直接与Sybase、SQLServer、Informix、Oracle等大型数据库连接。
17.安全问题【解析】客户机/服务器模式在实现中需要解决的主要问题有:标识一个特定的服务、响应并发请求和服务器程序的安全问题。
18.属性列属性列
19.数据设计数据设计解析:数据库应用系统的基础是数据库,因此数据设计是系统设计的基础和核心。
20.TCP/IP
21.A解析:数据库管理系统提供数据定义语言(DDL)来描述逻辑模式,严格定义数据的名称、特征、相互关系、约束等。
DML是实现对数据库数据检索、插入、更新与删除操作的数据库操纵语言。
22.C
23.D
24.B
25.D
26.A
SQL语言中用GRANT、REVOKE语句实现数据控制功能,数据库中权限的授予可以使用GRANT....ON....TO....语句,要求指明授予哪个用户(组)对哪个对象有什么权限,而REVOKE语句实现数据库权限的回收,需要指明从哪个用户(组)回收对于哪个对象的什么权限。
27.B
28.B
29.C
30.D
31.\n【审题关键句】以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,大小写不变,其他字符不变。
\n【解题思路】
\n①定义整型循环变量i、i。
\n②在第一层for循环中,循环变量i从0开始,依次递增直到其值等于maxline,实现对文章每行的处理。
第二层for循环中,循环变量j从0开始,依次递增直到其值等于strlen(xx[i]),在循环体中,利用if条件语句首先判断)xx[i][j]的值是否在小写字符字符’a’~’z’之间,然后,再判断在此范围之内的小写字母,如果是z,则该字符转换为a,如果字符不是z,则将其改写成它的下一个字母。
\n【参考答案】
\n
\n
\n
32.\n【审题关键句】个位+于位与百位+十位,奇数,偶数,整除,从大到小排序。
\n【解题思路】
\n本题类似第24套试题,通过审题可以发现主要是对四位数的筛选条件有所不同,体现在两个方面:①分解后重新组合成十位数的方式不同,参考答案的第8、9条语句重新指定两位数的组合方式;②新组合的两位数的奇偶性判断及整除判断,参考答案的第10条语句。
\n本题第10条语句中各条件表达式之间的关系有些复杂,大致思路是:①首先判断新组合的两位数的十位不为0,即表达式“gwbw”;②再判断新组合的第一个两位数为偶数,第二个两位数为奇数,且两个两位数中至少有一个能被17整除的情况,两个整除关系表达式式要用或运算符(11)连接,且用括号括起来先计算或运算,再与奇偶性判断表达式进行与运算;③最后,在判断新组合的第一个两位数为奇数,第二个两位数为偶数,且两个两位数中至少有一个能被17整除的情况(各表达式之间的连接关系同第2步)。
完成以上3部分的表达式设计后,再通过与运算将3部分表达式连接起来。
\n【参考答案】
\n
\n
33.\n【审题关键句】计算金额,按产品名称从大到小进行排列,相同的则按金额从大到小排列,结果存入结构数组。
\n【解题思路】
\n本题类似第57套试题,通过审题可以发现主要是排序条件的设置要求有所不同,参考答案的第8行进行修改即可。
\n【参考答案】
\n
\n
34.\n【审题关键句】以行为单位从字符串左边部分降序排序,排序后左边部分与右边部分进行交换。
如果原字符串长度为奇数,则最中间的字符不参加处理。
\n【解题思路】
\n①定义循环变量i、j、k和整型变量len、p。
\n②第一层for循环中,循环变量i从0开始,依次递增直到其值等于20,实现对20行数据的逐行处理。
在循环体中,对于i行首先调用函数strlen(xx[i])求得第i行字符串的长度,并把其值赋给变量len,再用1en 除以2,得到第i行字符串长度的一半,赋给变量P。
在第二层for循环中,循环变量J从0开始,依次递过来增直到其值等于(p-1),在第三层for循环中,循环变量k从J+1开始,依次递过来增直到其值等于P,比较字符xx[i][j]ASCII码值与xx[i][k]ASCII码值的大小,如果字符xx[i]啪的ASCII码值小于xx[i][k]的ASCII码值,则两者进行互换实现对第i行字符串左半部分的字符串按降序排列。
\n③用变量len的值对2求余数,如果余数为1,则调用函数字符串拷贝函数strcpy,把从字符串xx[i]+P+1开始直到字符串xx[i]的结尾的子字符拷贝到字符串变量str中,再调用字符串连接函数stmcat把字符串xx[i]的中间字符连接到字符串变量str的后面,再调用字符串连接函数stmcat。