第10类 按指定条件对字符串进行排序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第10类按指定条件对字符串进行排序

第72套试题答案及解析

【审题关键句】以行为单位对字符按从大到小排序,结果仍按行重新存入字符串数组中。

【解题思路】

①首先定义字符变量ch和无符号整型变量i、j、k。

②对字符二维数组XX,在第一层for循环中,变量i从0开始,依次递增直到其值等于maxline,实现对文章每行的扫描,在第二层for时循环中,变量j从0开始,依次递增直到其值等于strlen(xx[i]),即第i行的长度。在第三层循环语句中,变量k从j开始,依次递增直到其值等于strlen(xx[i]),对每一行中的数组元素xx[il[j]、XX[i][k]按照它们的ASCII码值的大小进行比较,如果xx[i][j]的ASCII码小于XX[i][k]的ASCII码,则两者交换,实现整篇文章中的字符按ASCII码值从大到小的顺序进行排序。

【参考答案】

第73套试题答案及解析

【审题关键句】以行为单位从字符串左边部分降序排序,右边部分升序排序。如果原字符串长度为奇数,则最中间的字符不参加处理。

【解题思路】

①定义字符局部变量ch,整型循环变量i、j、k和表示字符串长度的变量

len、P。

②在第一层for循环中,变量i从0开始,依次递增直到其值等于20,在循环体中,首先调用库函数strlen(xx[i])求得字符串xx[i]的长度,把此值转化成整型赋给变量len,用len的值除以2,得到字符串xx[i]的长度的一半赋给变量P;在第二层for循环中,变量J从0开始,依次递增直到其值等于(p.1),在循环体中执行第三层for循环,循环变量k从J+1开始,依次递增直到其值等于P,对字符串xx[i]左半部分的子字符串中的字符xx[i][j]和XX[i][k]按照ASCII码值的大小进行比较,如果)XX[i]D]的ASCII码值小于xx[i][k]的ASCII 码值,则两者进行互换,实现对字符串xx[i]左半部分的子字符串按照降序排列。然后,有if条件语句判断,len对2的余数是否等于1,如果等于1,说明字符串xx[il的长度为奇数,则变量P加1,因为这时字符串的中间字符不参与排序。再对字符串XX[i][j]右半部分的字符串按升序排列。在for循环中,变量J从P 开始,依次递增直到其值等于len.1,在循环体中,执行for循环中,变量k 从j+1开始,依次递增直到其值等于len,对字符xx[i][j]和)xx[i][k]按其ASCII码值的大小进行比较,如果字符xx[i][j]的ASCII码值大于xx[i][k]的ASCII码值,则两者进行互换,实现字符串xx[i]右半部分的字符串按照升序排列。

【参考答案】

第74套试题答案及解析

【审题关键句】以行为单位从字符串左边部分降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理。

【解题思路】

①定义循环变量i、j、k和整型变量len、p。

②第一层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行字符串左半部分的字符串按降序排列。

③用变量len的值对2求余数,如果余数为1,则调用函数字符串拷贝函数strcpy(),把从字符串xx[i]+P+1开始直到字符串xx[i]的结尾的子字符拷贝到字符串变量str中,再调用字符串连接函数stmcat()把字符串xx[i]的中间字符连接到字符串变量str的后面,再调用字符串连接函数stmcat()把字符串xx[i]的左半部分的子字符串连接到变量str的后面;如果余数不等于1,则调用字符串拷贝函数strcpy(),把从字符串xx[i]+P开始直到字符串xx[i]的结尾的子字符拷贝到字符串变量str中,再调用字符串连接函数stmcat()把字符串xx[i]的左半部分的子字符串连接到变量str的后面,实现字符串xx[i]左右部分子字符串的交换。

④调用字符串拷贝函数strcpy(),把字符串变量str的值拷贝到字符串

xx[i],实现把排序后的结果仍按行重新存入字符串数组XX中。

【参考答案】

第75套试题答案及解析

【审题关键句】以行为单位从字符串左边部分升序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理。

【解题思路】

本题类似第77套试题,通过审题可以发现主要是对字符串左边部分排序时所采用的排序方式不同,参考答案的第11行,修改if条件语句的设置即可。

【参考答案】

第76套试题答案及解析

【审题关键句】以行为单位对字符串变量的下标为奇数的字符按从小到大排序,结果仍按行重新存入字符串数组中。

【解题思路】

①因为要进行字符之间的互换,所以定义局部字符变量ch。定义循环变量i、

i、k。

②在第一层for循环中,循环变量i从0开始,依次递增直到其值等于或大于20,在循环体中实现对每行字符串的处理。在循环体中执行第二层for循环,循环变量j从1开始,依次递增2直到其值等于(int)strlen(xx[i]),在第三层for循环中,循环变量k从j+2开始,依次递增2,直到其值等于

(int)strlen(xx[i]),如果字符)XX[i][j]的ASCIl码值大于)XX[i][k]的ASCII

码值,则两者进行互换,实现字符串)XX[i]中下标为奇数的位置上的字符按其

相关文档
最新文档