不使用第三个变量逆置字符串

#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,这种要先行字符串的整体的逆置,在对每一部分进行逆置 。

该程序的核心主要就是通过异或进行两个字符的交换,不懂的可以自行百度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值