题目:下列给定程序中函数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"); }
输出结果如下所示: