栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言逆序打印字符串的两种方法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言逆序打印字符串的两种方法

非递归
非递归的思路比较巧妙,如下图:

我们把第一个和倒数第一个交换,把第二个和倒数第二个交换,把第三个和倒数第三个交换…

你可能会问:“如果我字符串的字符数是奇数怎么办?”
回答是,中间那个字符和他自己交换,没啥影响,他还是他那个位置。

void reverse_string(char* str)
{
	int len = strlen(str);
	char* left=str;
	char* right = str + len - 1;
	while (left < right)
	{
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}
int main()
{
	char arr[20] = { 0 };
	printf("请输入你想逆序的字符串:");
	scanf("%s", arr);
	reverse_string(arr);
	printf("%s", arr);
	return 0;
}

递归

递归的思路很简单,就是一层一层往下“递”,直到字符串变成只有一个字符,然后打印那个字符
随后就是一层一层往上“归”,打印指针锁定的那个字符即可

void reverse_string(char* str)
{
	if (*str != '')
	{
		reverse_string(str + 1);
	}
	printf("%c", *str);
}
int main()
{
	char arr[20] = { 0 };
	printf("请输入你想逆序的字符串:");
	scanf("%s", arr);
	reverse_string(arr);
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1026548.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号