计算字符串的长度几种方法 | 递归 | 指针减指针 | 计数器 | C语言 | 详解 | 期末考试必看!!!

这篇具有很好参考价值的文章主要介绍了计算字符串的长度几种方法 | 递归 | 指针减指针 | 计数器 | C语言 | 详解 | 期末考试必看!!!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一,使用   递归   计算 字符串 的 长度

1,题目描述

计算字符串的长度几种方法 | 递归 | 指针减指针 | 计数器 | C语言 | 详解 | 期末考试必看!!!,C语言阶段相关习题总览,c语言,开发语言,算法,数据结构

2,分析题目

Ⅰ,题目中要求除了函数的形参,函数中不能够使用多余的变量(这是比较苛刻的要求)。

Ⅱ,根据此,很自然的想到需要使用递归来解决问题。

Ⅲ,字符串的结束标志是'\0',因此可以将 读取到'\0' 作为结束条件

3,关于递归的基本知识

Ⅰ,递归包含两个过程:
        递推的过程。

        回归的过程。

Ⅱ,递归的两个必要条件:

        ①:必须有限制条件来结束递推,否则会造成死递归,最终导致栈溢出(内存爆满)。

        ②:随着不断地递推,越来越接近限制条件

4,解决问题

如图所示:

假设输入 yes

红色部分的是递推的过程

绿色部分的是回归的过程

计算字符串的长度几种方法 | 递归 | 指针减指针 | 计数器 | C语言 | 详解 | 期末考试必看!!!,C语言阶段相关习题总览,c语言,开发语言,算法,数据结构

5,代码解决

在代码中具体分析问题

#define _CRT_SECURE_NO_WARNINGS 1
//写一个函数Strlen,可以求字符串长度,除了函数的形参,函数中不能使用多余的变量。
//输入一个字符串(字符串长度小于等于30,中间不包含空格),使用Strlen函数可以求字符串的长
//度,并返回。
//注:字符串的结束标志是\0,

//思路:
//递归:包含两个过程 1,递推的过程 , 2,回归的过程
//递归包含两个 必要 的条件:
//1,存在一个限制条件可以 使得递归结束,否则就会导致无限递归 ,最终导致 栈区溢出
//2,随着不断的递归 ,越来越接近 限制条件
#include<stdio.h>
#include<string.h>
#define LEN 100
int my_strlen(char* pstr)
{
	if (*pstr == '\0')
	{
		return 0;
	}
	else
	{
		return (1 + my_strlen(pstr + 1));//地址加 1,往后走
	}
}//求字符串的长度
int main()
{
	char str[LEN] = { 0 };
	//输入
	gets(str);

	//求字符串的长度
	int len = my_strlen(str);//数组传参传的是首元素的地址

	//打印
	printf("%d\n", len);


	return 0;
}

二,指针 减 指针  来计算字符串的长度

1,题目描述

计算字符串的长度几种方法 | 递归 | 指针减指针 | 计数器 | C语言 | 详解 | 期末考试必看!!!,C语言阶段相关习题总览,c语言,开发语言,算法,数据结构

2,分析题目

Ⅰ,字符串的结束标志是'\0'。

Ⅱ,记录 字符串中起始 字符的地址(start)地址 ++往后走,直到遇到 '\0‘截止此时的’\0'的地址  减去 起始字符的地址(start)  就是 字符串的长度。

3,解决问题

在代码中具体分析,如下:

#include<stdio.h>
//写一个函数Strlen,可以求字符串长度,除了函数的形参,函数中不能使用多余的变量。
//输入一个字符串(字符串长度小于等于30,中间不包含空格),使用Strlen函数可以求字符串的长
//度,并返回。
//注:字符串的结束标志是 \0

//思路:
//指针 减 指针
#define LEN 1000
#include<string.h>
int my_strlen(char* pstr)
{
	char* start = pstr;//首元素的地址
	while (*pstr)//当没有遇到 '\0' 的时候,地址 ++
	{
		pstr++;
	}
	return (pstr - start);//'\0'的地址 减去 数组中首元素的地址 就是字符串的长度
}
int main()
{
	char str[LEN] = { 0 };
	gets(str);//输入

	int len = my_strlen(str);//数组传参传的是数组中首元素的地址

	//打印
	printf("%d\n", len);

	return 0;
}

三,使用  计数器  来统计字符串的长度

1,题目描述

计算字符串的长度几种方法 | 递归 | 指针减指针 | 计数器 | C语言 | 详解 | 期末考试必看!!!,C语言阶段相关习题总览,c语言,开发语言,算法,数据结构

2,分析题目

Ⅰ,字符串的结束标志是'\0'。

Ⅱ,定义 计数器 cnt 来统计 字符串中字符的个数。

3,解决问题

在代码中具体分析,如下:

#define _CRT_SECURE_NO_WARNINGS 1
//写一个函数Strlen,可以求字符串长度,注:字符串的结束标志是\0
//输入一个字符串(字符串长度小于等于30,中间不包含空格),使用Strlen函数可以求字符串的长
//度,并返回。
#include<stdio.h>
//思路:
//1,字符串的结束标志是 '\0';
//2,遍历 所输入的字符串 遇到 '\0' 截至
#include<string.h>
int my_strlen(char* pstr)
{
	int cnt = 0;//计数器 //记录数组中的字符的个数
	while (*pstr)//当 没有指向 '\0'时 , cnt ++,pstr++;
	{
		cnt++;
		pstr++;
	}
	return cnt;
}
int main()
{
	char str[31] = { 0 };
	gets(str);//输入


	int ret = my_strlen(str);//数组传参传的是首元素的地址

	//打印
	printf("%d\n", ret);
	return 0;
}
//总结;'\0'是字符串结束的标志

总结:

1,递归  的过程 较为 抽象, 一定要通过来 画图 理解 。

2,画图将抽象的问题实例化,一定要坚持 画图

3,字符串在内存中是连续存放的。

4,指针的类型决定了在对指针解引用的时候访问几个字节。

5,欢迎分享,感谢阅读!文章来源地址https://www.toymoban.com/news/detail-776382.html

到了这里,关于计算字符串的长度几种方法 | 递归 | 指针减指针 | 计数器 | C语言 | 详解 | 期末考试必看!!!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Python计算字符串长度的函数

    1、使用内置函数len 这是Python中一种常用的函数,主要功能就是对字符串的长度进行统计,最后会返回一个字符串的实际长度,使用方法如下: 在示例中str就是一个要计算的字符串,它还可以是列表或者是字典等等。 2、使用for循环 使用for循环来统计字符串的长度时,我们可以

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

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

    2024年02月04日
    浏览(51)
  • C# 字符串操作指南:长度、连接、插值、特殊字符和实用方法

    字符串用于存储文本。一个字符串变量包含由双引号括起的字符集合 示例: 如果需要,一个字符串变量可以包含多个单词: 示例: 在 C# 中,字符串实际上是一个对象,其中包含可以在字符串上执行某些操作的属性和方法。例如,可以使用 Length 属性找到字符串的长度: 示例

    2024年01月20日
    浏览(47)
  • 字符串固定长度自动补齐的主要方法

    1 问题 输入日期例如02/03/04时,要求输出2002年03月04日、2004年02月03日或2004年03月04日,但是经过一系列处理后0会被自动处理掉,例如输出2002年3月4日等,与要求输出月、日必须是两位数不符。 2 方法 要自动补充“0”,就应该规定该位置字符串的位数,此问题应规定为2位; 查

    2024年02月08日
    浏览(41)
  • C++中求string类型字符串长度的三种方法

    length()函数是string的内置成员方,用于返回string类型字符串的实际长度。 length()函数声明: // 返回 string 长度,单位字节 size_t length() const noexcept; 示例1: size()函数与length()一样,没有本质区别。string类刚开始只有length()函数,延续了C语言的风格。引入STL之后,为了兼容又加入

    2024年02月07日
    浏览(62)
  • shell 几种字符串加解密方法

    第一种:〔 Python 与 Bash Shell 的结合 〕 这个命令会让你输入一个字符串,然后会再输出一串加密了的数字。 加密代码[照直输入]: python -c \\\'print reduce(lambda a,b: a*256+ord(b), raw_input(\\\"string: \\\"), 0)\\\' 解密代码[数字后+P]: dc -e 输出的数字P 第二种:〔 应该是纯 Bash Shell,含 VIM 的 xx

    2024年01月18日
    浏览(45)
  • C#删除字符串最后一个字符的几种方法

    字符串:string s = \\\"1,2,3,4,5,\\\" 目标:删除最后一个 \\\",\\\" 方法一: s = s.Remove(s.LastIndexOf(\\\",\\\"), 1); ; //移除掉最后一个\\\",\\\" 方法二:用的最多的是Substring,这个也是我一直用的 s = s.Substring(0,s.Length - 1) 方法三:用TrimEnd,这个东西传递的是一个字符数组 s=s.TrimEnd(\\\',\\\') //如果要删除\\\"5,\\\",则需

    2023年04月21日
    浏览(45)
  • C#几种截取字符串的方法盘点

    C#几种截取字符串的方法小结,需要的朋友可以参考一下 1.根据单个分隔字符用split截取 例如 代码如下: string st=\\\"GT123_1\\\"; string[] sArray=st.split(\\\"_\\\"); 即可得到sArray[0]=\\\"GT123\\\",sArray[1]=\\\"1\\\"; 2.利用多个字符来分隔字符串 例如 代码如下: string str = \\\"GTAZB_JiangjBen_123\\\"; string[] sArray = str.Split(ne

    2024年02月11日
    浏览(38)
  • JAVA 截取字符串的几种方法

    主要有以下几种方法: 1、通过subString()方法来进行字符串截取(最常用) 2、通过StringUtils提供的方法 3、split()+正则表达式来进行截取 1、通过subString()方法来进行字符串截取,返回字符串中的子字符串,在java中有两种用法 第一种,传递一个参数: 第二种,传递两个参数:

    2024年02月10日
    浏览(43)
  • Java中去除字符串空格的几种方法

    1、String.trim(): 它去掉的只是String首尾空格,内部不处理; 2、str.replace(\\\" \\\", “”): 去掉所有空格,包括首尾、中间,但是又仅仅局限于一个空格 3、str.replaceAll(\\\" +\\\",\\\"\\\") : 可以匹配去掉所有空格 4、str.replaceAll(\\\"s*\\\", “”): 可以替换大部分空白字符, 不限于空格 s 可以匹配空

    2024年02月01日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包