点击(此处)折叠或打开
-
#include <stdio.h>
-
#include <string.h>
-
-
int main(int argc, const char *argv[])
-
{
-
char buf[64];
-
char tmp;
-
int i,j;
-
-
printf("Please input a string:\n");
-
scanf("%s",buf);
-
printf("%s\n",buf);
-
-
//思想:i和j分别指向数组的第一个元素和最后一个元素,然后依次交换第一个和最后一个,第二个和倒数第二个,
-
//直到i<j条件不满足时
-
//注意:不管数组中的元素个数是奇数个还是偶数个,这个判断条件都成立,举例如下:
-
//i指向第一个元素,j指向最后一个元素,这里所说的最后一个元素是指有效的元素,字符数组比较特殊,最后一个
-
//元素是'\0',所以有效元素的下标是:strlen(buf) - 1的位置
-
//
-
//偶数个元素的情况(4个):
-
//char buf[5] = "abcd" ------> 'a' 'b' 'c' 'd' '\0'
-
// i--> 0 1 2 3 <---j
-
//当i<j时,交换后的结果如下:
-
//交换后------------------------>'d' 'c' 'b' 'a' '\0'
-
//
-
//奇数个元素的情况(5个):
-
//char buf[6] = "abcde" ------> 'a' 'b' 'c' 'd' 'e' '\0'
-
// i----> 0 1 2 3 4 <----j
-
//当i<j时,交换后的结果如下
-
//char buf[6] = "abcde" ------> 'e' 'd' 'c' 'b' 'a' '\0'
-
-
for(i = 0,j = strlen(buf) - 1;i < j;i++,j--)
-
{
-
tmp = buf[i];
-
buf[i] = buf[j];
-
buf[j] = tmp;
-
}
-
-
printf("%s\n",buf);
-
-
return 0;
- }
点击(此处)折叠或打开
-
ubuntu@ubuntu:~/interview/c_study$ ./a.out
-
Please input a string:
-
abcdefghijklmn
-
abcdefghijklmn
- nmlkjihgfedcba