Chinaunix首页 | 论坛 | 博客
  • 博客访问: 536397
  • 博文数量: 181
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1498
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-22 15:17
个人简介

用发呆的时间来理清自己的思绪

文章存档

2015年(7)

2014年(134)

2013年(40)

分类: C/C++

2014-09-10 10:56:38

点击(此处)折叠或打开

  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
阅读(523) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~