题目:下列给定程序中函数fun的功能是:从p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。
代码如下所示:
#include <stdio.h>
void fun(char* p)
{
char max, * q; int i = 0;
q = NULL;
max = p[i];//假设p[0]是最大值
while (p[i] != 0)//游历实参的数组元素
{
if (max < p[i])//该if语句的作用是找出该字符数组里面ASCII码最大的元素
{
max = p[i];
q = p + i;
}
i++;
}
while (q >p)//将ASCII码最大字符前面的字符在位置上进行调整
{
*q = *(q - 1);//将ASCII码最大字符前面的字符统一向后面移动一位,确保第一个位置是为ASCII码最大的元素保留的
q--;
}
p[0] = max;//ASCII码最大的元素即被排在最前面
}
main()
{
char str[80];
printf("Enter a string: ");
gets(str);
printf("\nThe original string: ");
puts(str);
fun(str);
printf("\nThe string after moving: ");
puts(str); printf("\n\n");
}
输出结果如下所示: