#include <stdio.h>
#include <string.h>
void swap_function(char *head,char *end)
{
printf("head = %c.\n",*head);
printf("end = %c.\n",*end);
while(head < end)
{
printf("*head = %c.\n",*head);
*head = *head^*end;
*end = *head^*end;
*head = *head^*end;
head++;
end--;
}
}
int main(void)
{
/* int a = 1,b = 2;
swap_function(&a,&b);
printf("a = %d,b = %d.\n",a,b);
*/
char string[] = "olleh";
char *end;
end = string + strlen(string) - 1;
printf("1.\n");
swap_function(string,end);
printf("2.\n");
printf("string = %s.\n",string);
}
这是我前几天的面试题,题目要求是在不使用第三个变量的同时,将两个变量进行交换。在这里我对进行了一下扩展,实现了将一个简单的字符串进行逆置。如果在整个的字符串中存在空格譬如:hello world,这种要先行字符串的整体的逆置,在对每一部分进行逆置 。
该程序的核心主要就是通过异或进行两个字符的交换,不懂的可以自行百度。