问答题 请编写函数proc(),对长度为9个字符的字符串,除首、尾字符外,将其余7个字符按ASCII码值降序排列。
例如,原来的字符串为HabcdefA,则排序后输出为HfedcbaA。
注意:部分源程序给出如下。
请勿改动main()和其他函数中的任何内容,仅在函数proc()中填入所编写的若干语句。
试题程序:
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include<ctype.h>
#include<conio.h>
void proc(char*m, int num)
{

}
void main()
{
char t[10];
system("CLS");
printf("输入9个字符的字符串:");
gets(t);
proc(t, 9);
printf("/n%s", t);
}
【正确答案】
【答案解析】void proc(char*m, int num)
{ char t;
int i, j;
for(i=1; i<num-2; i++) //下标值从1开始,
用循环依次取得字符串中的字符
for(j=i+1; j<num-1; j++) //将字符与其后的每个字符比较
if(m[i]<m[j]) //如果后面字符的ASCII码值大
于该字符的ASCII码值
{ t=m[i]; //则交换这2个字符
m[i]=m[j];
m[j]=t;
}
} [解析] 按照题目中要求,求除首、尾字符外,将其余7个字符按ASCII码值降序排列。首先需要判断除首、尾字符之外,其余7个字符ASCII码值的大小,将不符合顺序要求的字符互换。