问答题
1. 请编写函数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 nun)
{ char t;
int i,j;
for(i=1; i<num-2; i++)//下标值从1开始,用循环依次取得字符串中的字符
for(j=i+1; j<nun-1; j++)//将字符与其后的每个字符比较
if(m[i]<m[j])//如果后面字符的ASCII码值大于该字符的ASCII码值,则交换这2个字符
{t=m[i];
m[i]=m[j];
m[j]=t;
}
}
【答案解析】 按照题目中的要求,求除首、尾字符外,将其余7个字符按ASCII码值降序排列。首先,需要判断除首、尾字符之外,其余7个字符ASCII码值的大小,将不符合顺序要求的字符互换。