1、国家三级(网络技术)机试模拟试卷 146及答案与解析 一、程序设计题 1 国家三级(网络技术)机试模拟试卷 146答案与解析 一、程序设计题 1 【正确答案】 【试题解析】 定义字符局部变量 ch,整型循环变量 i、 j、 k和表示字符串长度的变量 len、 p。 在第一层 for循环中,变量 i从 0开始,依次递增直到其值等于 20,在循环体中,首先调用库函数 strlen(xxi)求得字符串 xXi的长度,把此值转化成整型赋给变量 len,用 len的值除以 2,得到字符串 xxi的长度的一 半赋给变量 p;在第二层 for循环中,变量 j从 0开始,依次递增直到其值等于 (p-1),在循
2、环体中执行第三层 for循环,循环变量 k从 j+1开始,依次递增直到其值等于 p,对字符串 xxi左半部分的子字符串中的字符 xxij和 xxik按照 ASCII码值的大小进行比较,如果 xxij的 ASCII码值小于 xxik的 ASCII码值,则两者进行互换,实现对字符串 xxi左半部分的子字符串按照降序排列。然后,有 if条件语句判断, len对2的余数是否等于 1,如果等于 1,说明字符串 xxi的长度为奇数,则变量 p加1,因为这时字符串的中间字符不参与排序。再对字符串 xxij右半部分的字符串按升序排列。在 for循环中,变量 j从 p开始,依次递增直到其值等于 len-1,在循环体中,执行 for循环中,变量 k从 j+1开始,依次递增直到其值等于 len,对字符 xxij和 xxik按其 ASCII码值的大小进行比较,如果字符 xxij的ASCII码值大于 xxik的 ASCII码值,则两者进行互换,实现字符串 xxi右半部分的字符串按照升序排列。