函数readDat是从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制
函数readDat是从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort,其函数的功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat把结果xx输出到文件out.dat中。 条件:字符串从中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。注意:部分源程序存在test.c文件中。 请勿改动数据文件in.dat中的任何数据、主函数main、读函数readDat和写函数writeDat的内容。
【审题关键句】以行为单位从字符串左边部分降序排序,右边部分升序排序。如果原字符串长度为奇数,则最中间的字符不参加处理。
【解题思路】
①定义字符局部变量ch,整型循环变量i、j、k和表示字符串长度的变量len、P。
②在第一层for循环中,变量i从0开始,依次递增直到其值等于20,在循环体中,首先调用库函数strlen(xx[i])求得字符串xx[il的长度,把此值转化成整型赋给变量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][j]的ASCII码值小于xx[i][k]的ASCII码值,则两者进行互换,实现对字符串xx[i]左半部分的子字符串按照降序排列。然后,有if条件语句判断,len对2的余数是否等于1,如果等于1,说明字符串xx[i]的长度为奇数,则变量P加1,因为这时字符串的中间字符不参与排序。再对字符串xx[i][j]右半部分的字符串按升序排列。在for循环中,变量j从P开始,依次递增直到其值等于len-1,在循环体中,执行for循环中,变量k从j+1开始,依次递增直到其值等于Ien,对字符xx[i][j]和xx[i][k]按其ASCII码值的大小进行比较,如果字符xx[i][j]的ASCII码值大于xx[i][k]的ASCII码值,则两者进行互换,实现字符串xx[i]右半部分的字符串按照升序排列。
【参考答案】

请编制程序,其功能为:将一个字符串中连续相同的字符仅用一个字符代替,生成一个新的字符串。字符串 计算机类考试 2020-05-23 …
关于ASCII字符集中的字符,下面叙述中正确的是( )。A.ASCII字符集共有128个字符B.每个 计算机类考试 2020-05-24 …
关于ASCII码字符集中的字符,下面叙述中正确的是( )。A.ASCII码字符集共有128个字符B. 计算机类考试 2020-05-24 …
在下列关于基本ASCⅡ码字符集的叙述中,错误的是______。A) 字符集有128个字符B) 字符集 计算机类考试 2020-05-24 …
关于ASCII码字符集中的字符,下面叙述中正确的是A.ASCII码字符集共有128个不同的字符B.每 计算机类考试 2020-05-24 …
字母排版的C++程序哪出错了给一段英文短文,单词之间以空格分隔(单词包括其前后紧邻的标点符号).请 其他 2020-07-13 …
求帮写几个JAVA小程序!急急急!1)编程:检查输入的字符串是否是“回文”。(2)编程:字符串中删 其他 2020-07-17 …
请高手用VBA编写程序:电子表中查找出a列符合条件单元格再自动复制粘贴到D列中,请在每句后面注上说明 其他 2020-11-01 …
4.请完成函数,该函数输入一个纯英文字符串,请打印出该字符串中每个字符(区分大小写)出现的次数,并 其他 2020-11-07 …
我有一道题错了,帮我改改在Windows的控制台环境中,所有的字符都是等宽的,默认情况下窗口中每行有 其他 2020-11-07 …