哪个网站可以做结婚证,wordpress 索引插件,自己做网站怎么做,wordpress+手工网站一#xff0c;使用 递归 计算 字符串 的 长度
1#xff0c;题目描述 2#xff0c;分析题目
Ⅰ#xff0c;题目中要求除了函数的形参#xff0c;函数中不能够使用多余的变量#xff08;这是比较苛刻的要求#xff09;。
Ⅱ#xff0c;根据此#xff0c;很自然的…一使用 递归 计算 字符串 的 长度
1题目描述 2分析题目
Ⅰ题目中要求除了函数的形参函数中不能够使用多余的变量这是比较苛刻的要求。
Ⅱ根据此很自然的想到需要使用递归来解决问题。
Ⅲ字符串的结束标志是\0,因此可以将 读取到\0 作为结束条件
3关于递归的基本知识
Ⅰ递归包含两个过程 递推的过程。 回归的过程。
Ⅱ递归的两个必要条件 ①必须有限制条件来结束递推否则会造成死递归最终导致栈溢出内存爆满。 ②随着不断地递推越来越接近限制条件。
4解决问题
如图所示
假设输入 yes
红色部分的是递推的过程
绿色部分的是回归的过程 5代码解决
在代码中具体分析问题
#define _CRT_SECURE_NO_WARNINGS 1
//写一个函数Strlen可以求字符串长度除了函数的形参函数中不能使用多余的变量。
//输入一个字符串字符串长度小于等于30中间不包含空格使用Strlen函数可以求字符串的长
//度并返回。
//注字符串的结束标志是\0//思路
//递归包含两个过程 1递推的过程 2回归的过程
//递归包含两个 必要 的条件
//1存在一个限制条件可以 使得递归结束否则就会导致无限递归 最终导致 栈区溢出
//2随着不断的递归 越来越接近 限制条件
#includestdio.h
#includestring.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,题目描述 2分析题目
Ⅰ字符串的结束标志是\0。
Ⅱ记录 字符串中起始 字符的地址start地址 往后走直到遇到 \0‘截止此时的’\0的地址 减去 起始字符的地址(start) 就是 字符串的长度。
3解决问题
在代码中具体分析如下
#includestdio.h
//写一个函数Strlen可以求字符串长度除了函数的形参函数中不能使用多余的变量。
//输入一个字符串字符串长度小于等于30中间不包含空格使用Strlen函数可以求字符串的长
//度并返回。
//注字符串的结束标志是 \0//思路
//指针 减 指针
#define LEN 1000
#includestring.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题目描述 2分析题目
Ⅰ字符串的结束标志是\0。
Ⅱ定义 计数器 cnt 来统计 字符串中字符的个数。
3解决问题
在代码中具体分析如下
#define _CRT_SECURE_NO_WARNINGS 1
//写一个函数Strlen可以求字符串长度注字符串的结束标志是\0
//输入一个字符串字符串长度小于等于30中间不包含空格使用Strlen函数可以求字符串的长
//度并返回。
#includestdio.h
//思路
//1,字符串的结束标志是 \0;
//2,遍历 所输入的字符串 遇到 \0 截至
#includestring.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欢迎分享感谢阅读