面试例题:字符串的排序及交换。
考点:字符串综合编程能力。
出现频率:★★★
编写一个函数,首先将一条字符串分成两部分,前半部分按ASCII码升序排序,后半部分不变,(如果字符串是奇数则中间的字符不变)其次将前后两部分交换,最后输出该字符串。测试字符串"ADZDDJKJFIEJHGI"。
- #include<stdio.h>
- #include<stdlib.h>
- void mysort(char *str,int num)
- {
- int i,j;
- int temp=0;
- for(i=0;i<num;i++)
- {
- for(j=0;j<num-i;j++)
- {
- if(str[j]<str[j+1])
- {
- temp=str[j];
- str[j]=str[j+1];
- str[j+1]=temp;
- }
- }
- }
- }
- char *foo(char *str)
- {
- int len=0;
- char *start=NULL;
- if(str==NULL) {return NULL;}
- start=str;
- while(*str++);
- len=str-start-1;
- len=len/2;
- str=start;
- mysort(str,len);
- return str;
- }
- int main()
- {
- char string[] = "ADZDDJKJFIEJHGI";
- printf("before transformation: %s ", string);
- foo(string);
- printf("after transformation: %s ", string);
- return 0;
- }