关于字符串逆序c语言版

660阅读 0评论2014-09-10 lt6419
分类:C/C++

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <string.h>

  3. int main(int argc, const char *argv[])
  4. {
  5.     char buf[64];
  6.     char tmp;
  7.     int i,j;

  8.     printf("Please input a string:\n");
  9.     scanf("%s",buf);
  10.     printf("%s\n",buf);

  11.     //思想:i和j分别指向数组的第一个元素和最后一个元素,然后依次交换第一个和最后一个,第二个和倒数第二个,
  12.     //直到i<j条件不满足时
  13.     //注意:不管数组中的元素个数是奇数个还是偶数个,这个判断条件都成立,举例如下:
  14.     //i指向第一个元素,j指向最后一个元素,这里所说的最后一个元素是指有效的元素,字符数组比较特殊,最后一个
  15.     //元素是'\0',所以有效元素的下标是:strlen(buf) - 1的位置
  16.     //
  17.     //偶数个元素的情况(4个)
  18.     //char buf[5] = "abcd" ------> 'a' 'b' 'c' 'd' '\0'
  19.     // i--> 0 1 2 3 <---j
  20.     //当i<j时,交换后的结果如下:
  21.     //交换后------------------------>'d' 'c' 'b' 'a' '\0'
  22.     //
  23.     //奇数个元素的情况(5个)
  24.     //char buf[6] = "abcde" ------> 'a' 'b' 'c' 'd' 'e' '\0'
  25.     // i----> 0 1 2 3 4 <----j
  26.     //当i<j时,交换后的结果如下
  27.     //char buf[6] = "abcde" ------> 'e' 'd' 'c' 'b' 'a' '\0'
  28.     
  29.     for(i = 0,j = strlen(buf) - 1;i < j;i++,j--)
  30.     {
  31.         tmp = buf[i];
  32.         buf[i] = buf[j];
  33.         buf[j] = tmp;
  34.     }

  35.     printf("%s\n",buf)
  36.     
  37.     return 0;
  38. }
运行结果如下:

点击(此处)折叠或打开

  1. ubuntu@ubuntu:~/interview/c_study$ ./a.out
  2. Please input a string:
  3. abcdefghijklmn
  4. abcdefghijklmn
  5. nmlkjihgfedcba
上一篇:进程和线程的由来和区别
下一篇:typedef和define的区别和联系