面试例题1:字符串的排序及交换

面试例题:字符串的排序及交换。

考点:字符串综合编程能力。

出现频率:★★★

编写一个函数,首先将一条字符串分成两部分,前半部分按ASCII码升序排序,后半部分不变,(如果字符串是奇数则中间的字符不变)其次将前后两部分交换,最后输出该字符串。测试字符串"ADZDDJKJFIEJHGI"。

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. void mysort(char *str,int num)
  4. {
  5.  int i,j;
  6.  int temp=0;
  7.  for(i=0;i<num;i++)
  8.  {
  9.   for(j=0;j<num-i;j++)
  10.   {
  11.    if(str[j]<str[j+1])
  12.    {
  13.     temp=str[j];
  14.     str[j]=str[j+1];
  15.     str[j+1]=temp;
  16.    }
  17.   }
  18.  }
  19. }
  20. char *foo(char *str)
  21. {
  22.  int len=0;
  23.  char *start=NULL;
  24.  if(str==NULL) {return NULL;}
  25.  start=str;
  26.  while(*str++);
  27.  len=str-start-1;
  28.  len=len/2;
  29.  str=start;
  30.  mysort(str,len);
  31.  return str;
  32. }
  33. int main()
  34. {
  35.  char string[] = "ADZDDJKJFIEJHGI";
  36.  
  37.  printf("before transformation: %s\n", string);
  38.  foo(string);
  39.  printf("after transformation: %s\n", string);
  40.  
  41.  return 0;
  42. }
posted @ 2013-09-23 16:23  小菜美妞成长中  阅读(333)  评论(0编辑  收藏  举报