【C语言】三种方法实现字符串逆序函数

这篇具有很好参考价值的文章主要介绍了【C语言】三种方法实现字符串逆序函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

三种方法实现字符串逆序函数



题目如下(示例):

写一段代码实现字符串的逆序打印 例如: 输入:abcdef  输出:fedcba

一、第一种方法(非函数)

代码如下(示例):

//对一个字符串进行逆序
int main()
{
    char arr[1000] = { 0 };
    gets(arr);
    int len = strlen(arr);
    char* left = arr;
    char* right = arr + len - 1;
    while (left < right)
    {
        char* tmp = *left;
        *left = *right;
        *right = tmp;
        left++;
        right--;
    }
    printf("%s\n", arr);
    return 0;
}

【C语言】三种方法实现字符串逆序函数
【C语言】三种方法实现字符串逆序函数

二、第二种方法(函数非递归)

1.函数的方法

代码如下(示例):

//写一个函数(非递归)实现逆序字符串
void severse_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[] = "abcdef";
	severse_string(arr);
	printf("%s\n", arr);
	return 0;
}

【C语言】三种方法实现字符串逆序函数
函数和main函数原理一样!这里不做过多的介绍!


2.函数+数组的方法

代码如下(示例):

 //用数组函数的方法(非递归)实现字符串的逆序打印
void severse_string(char arr[])
{
	int len = strlen(arr);
	int left = 0;
	int right = len - 1;
	while (left < right)
	{
		char tmp = arr[left];
		arr[left] = arr[right];
		arr[right] = tmp;
		left++;
		right--;
	}
}
int main()
{
	char arr[] = "abcdef";
	severse_string(arr);
	printf("%s\n", arr);
	return 0;
}

【C语言】三种方法实现字符串逆序函数


三、第三种方法(函数递归)

代码如下(示例):

//用递归的(函数)的方法实现对字符串的逆序打印
void reverse_string(char* str)
{
	int len = strlen(str);
	char tmp = *str;
	*str = *(str + len - 1);
	*(str + len - 1) = '\0';

	if ((strlen(str + 1)) >= 2)
	{
		reverse_string(str + 1);
	}
	*(str + len - 1) = tmp;
}
int main()
{
	char arr[] = "abcdef";
	reverse_string(arr);
	printf("%s\n", arr);
	return 0;
}

注意:这里的 tmp 和 len 的值可以通过调试来观察变化!如下图!
【C语言】三种方法实现字符串逆序函数
【C语言】三种方法实现字符串逆序函数
【C语言】三种方法实现字符串逆序函数【C语言】三种方法实现字符串逆序函数这里是函数在一步一步调用,接下来是递归返回的阶段~
第一次返回:
【C语言】三种方法实现字符串逆序函数
第二次返回:
【C语言】三种方法实现字符串逆序函数
第三次返回:
【C语言】三种方法实现字符串逆序函数此时已经对数组全部进行逆序打印!


四、面试题:对一个数组进行两次逆序打印

题目如下(示例):

【C语言】三种方法实现字符串逆序函数


1.代码实现

代码如下(示例):

void reverse_string(char* l, char* r)
{
	while (l < r)
	{
		char tmp = *l;
		*l = *r;
		*r = tmp;
		l++;
		r--;
	}
}
int main()
{
	char arr[100] = { 0 };
	//输入数组
	gets(arr);
	//计算数组的大小
	int len = strlen(arr);
	char* left = arr;
	char* right = left + len - 1;
	reverse_string(left, right);
	//对单词进行逆序
	char* start = arr;
	char* cur = arr;
	while (*cur!='\0')
	{
		while (*cur != ' ' && *cur!='\0')
		{
			cur++;
		}
		reverse_string(start, cur - 1);
		start = cur + 1;
		if (*cur != '\0')
		{
			cur++;//cui原来是空格
		}
	}
	printf("%s\n", arr);
	return 0;
}

【C语言】三种方法实现字符串逆序函数


2.图解面试题

第一步:整体逆序字符串!
【C语言】三种方法实现字符串逆序函数


循环:第二步:对单个单词进行逆序!!!
1.将第一个字符串逆序
【C语言】三种方法实现字符串逆序函数
2.将第二个字符串逆序
【C语言】三种方法实现字符串逆序函数


总结

以上就是今天要讲的内容,本文介绍了字符串逆序函数的实现原理和相关的面试题。
如果我的博客对你有所帮助记得三连支持一下,感谢大家的支持!
【C语言】三种方法实现字符串逆序函数文章来源地址https://www.toymoban.com/news/detail-418655.html

到了这里,关于【C语言】三种方法实现字符串逆序函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 高阶C语言|字符函数和字符串函数--函数的模拟实现

    C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在 常量字符串 中或者 字符数组 中。 字符串常量 适用于那些对它不做修改的字符串函数 size_t代表strlen函数返回的是一个无符号整形,str指向的是字符串,接收字符串的地址 字符串已

    2024年02月16日
    浏览(50)
  • 【C语言】字符函数和字符串函数的详细教学和模拟实现

    🚀write in front🚀 🔎大家好,我是gugugu。希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🆔本文由 gugugu 原创 CSDN首发🐒 如需转载还请通知⚠ 📝个人主页:gugugu—精品博客 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏:gugugu的精品博客 ✉️

    2024年02月08日
    浏览(28)
  • 【C语言】字符函数和字符串函数(一)—>库函数的介绍与模拟实现

    目录 前言: 一、函数介绍: (一)求字符串长度 (1)strlen (二)长度不受限制的字符串函数 (2)strcpy (3)strcat (4)strcmp (三)长度受限制的字符串函数 (5)strncpy (6)strncat (7)strncmp (四)字符串查找 (8)strstr (9)strtok (五)错误信息报告 (10)strerror (六)

    2024年02月15日
    浏览(35)
  • C语言:字符函数和字符串函数详解及部分函数的模拟实现(前篇)

    前言: C语言中对 字符和字符串 的处理很是频繁,但是C语言本身是没有字符串类型的, 字符串通常放在 常量字符串 中或者 字符数组 中。 字符串常量 适用于那些对它不做修改的字符串函数。 本篇文章将会 重点介绍处理字符和字符串的库函数的使用和注意事项。 strlen函数

    2024年02月06日
    浏览(34)
  • 【c语言】字符串函数的模拟实现(二)

    strcat 的作用就是 字符串追加,即将一个字符串添加到另一个字符串末尾。 那既然要追加字符串,要怎么找到目标字符串的末尾呢?所以这就要求目标空间中要有 \\\'\\0\\\' ,找到 \\\'\\0\\\' 就是找到末尾了。需要注意的是此函数内部在找末尾时, 找的是目标空间中第一个 \\\'\\0\\\' 的位置 ,

    2024年02月07日
    浏览(28)
  • 【c语言:常用字符串函数与内存函数的使用与实现】

    简介:本篇文章是对C语言中常用的字符串函数和内存函数的学习以及模拟实现 文档内容来自:https://legacy.cplusplus.com/ 字符串以 ‘\\0’ 作为结束标志, strlen函数返回的是在字符串中 ‘\\0’ 前⾯出现的字符个数( 不包含 \\\'\\0\\\' )。 参数指向的字符串必须要以 ‘\\0’ 结束。 注意函

    2024年02月04日
    浏览(33)
  • 【C语言】——字符串函数的使用与模拟实现(上)

      在我们学习 C语言 的过程中,对 库函数 的使用是必不可少的。其中,相信大家最熟悉的就是 s t d i o . h stdio.h s t d i o . h 中的 p r i n t print p r in t 和 s c a n f scanf sc an f 函数了吧。   但是今天,我们不讲他们(太难了,呜呜呜),今天我们来讲与字符串相关的函数,也就

    2024年04月26日
    浏览(31)
  • C语言——字符串、打印字符串的三种方式

    字符串( character string )是一个或多个字符的序列,空字符( null character )\\0 标记字符串的结束 字符串以数组( array )存储,也就是以空字符(\\0)结尾的 char 类型数组 用 %s 转换说明来处理字符串的输入和输出 输入和输出必须给出字符串的首地址,可以 直接是字符串常量

    2024年02月11日
    浏览(43)
  • Python三种计算字符串长度的函数分享

      Python三种计算字符串长度的函数 1、使用内置函数len 这是Python中一种常用的函数,主要功能就是对字符串的长度进行统计,最后会返回一个字符串的实际长度,使用方法如下: 1 2 str = \\\"hello python\\\" print ( len ( str )) 在示例中str就是一个要计算的字符串,它还可以是列表或者是字

    2024年02月04日
    浏览(40)
  • 在 C 语言中添加注释、包含头文件和使用 printf 函数输出字符串的方法

    注释是程序员在编写代码时添加给自己或其他人的说明文字,用来提高代码的可读性,方便理解。注释通常会添加在代码的关键部分以及不易理解的地方。 在C语言中,注释可以使用两种方式:单行注释以及多行注释。单行注释使用\\\"//\\\",多行注释使用\\\"/* */\\\"。多行注释不可嵌套

    2023年04月22日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包