c语言例题,计算字符串长度,递归思想

c语言中,计算字符串长度算是一个比较经典的题了,而今天我们运用两种不同的求解方法来写出不同的程序来实现计算字符串的功能。

主函数

 先看到主函数,主函数中设置了一串7个字符的字符串,而后面接下来定义了两个变量len1和len2,同时分别打印len1和len2,当然,打印的这两个变量其实就是上面我所说的两种不同的方法打印的字符串长度,我们也知道若是程序正确,那输出的结果是7;最终,我们得把焦点聚集到my_strlen1和my_strlen2这两个函数中。

方法1

在my_strlen1函数中,首先将主函数中已经定义好的arr数组传参到函数中,然后建立一个变量count,接下来运用while语句和指针的方式进行字符判断,这里的核心是判断指针解引用之后的字符是不是\0,而我们也知道\0是一个字符的结束标志,所以在没有发现\0时,将指针的位置++(因为我们是将一个数组名传过去,所以指针刚开始指向的字符是数组中的首字符a),同时将计数的count变量也++,直到我们的指针解引用到\0,循环结束,返回return count。

方法2(递归)

在my_strlen2函数中,同样是实现了计数字符串长度的功能,但是用的却是完全不同的方法,而这种方法的书写核心思想是运用了递归思想,可以发现在递归思想中,函数里没有设置变量,同时也没运用循环语句,只有一个分支语句if便能实现计算字符串长度的功能。同样在if语句中,我们进行对指针解引用的判断,看解引用后的字符是不是\0,若不是\0返回1+my_strlen2(它本身),也就是说循环调用my_strlen2这个函数,来实现计算字符串的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/785114.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Chatopera 云服务的智能问答引擎实现原理,如何融合 #聊天机器人 技术 #Chatbot #AI #NLP

观看视频 Bilibili: https://www.bilibili.com/video/BV1pZ421q7EH/YouTube: https://www.youtube.com/watch?vx0d1_0HQa8o 内容大纲 提前在浏览器打开网址: Chatopera 云服务:https://bot.chatopera.comChatopera 入门教程:https://dwz…

Spring Boot与Redis深度整合:实战指南

Spring Boot 整合 Redis 相当简单,它利用了 Spring Data Redis 项目,使得我们可以在 Spring Boot 应用中轻松地操作 Redis。以下是如何整合 Redis 到 Spring Boot 应用的基本步骤: 1. 添加依赖 首先,在你的 pom.xml 文件中添加 …

银狐再起风波:2024税务抽查引战勒索风暴

近日,在日常网络狩猎过程中,亚信安全威胁情报中心的研究专家偶然发现了一个团伙,该团伙不仅在QQ群内散播钓鱼链接,还通过伪造的下载网站推广含有恶意软件的EXE文件。面对这一明显的威胁传播行为,该专家迅速组织了威胁情…

Vue2/Vue3 -------- 生命周期/钩子函数

(1)beforeCreate 钩子函数,在实例初始化之后,在数据监听和事件配置之前触发。因此在这个事件中我们是获取不到 data 数据的。 (2)created 钩子函数,在实例创建完成后触发,此时可以访…

个人偏好测验,职业倾向分析和HR人才测评量表

个人偏好测验,以人的15种需求为理论基础,用来鉴别我们在这15个维度的倾向,从而为分析人格特征、职业倾向提供依据。15种需求理论最早由美国心理学家murray在1938年提出。 个人偏好测验,也叫个人爱好测试,人的需求因子…

网络体系结构概述

目录 1. OSI/RM参考模型1.1. 物理层1.2. 数据链路层1.3. 网络层1.4. 传输层1.5. 会话层1.6. 表示层1.7. 应用层 2. TCP/IP参考模型3. 理解OSI七层模型 网络体系结构是线代网络技术的整体蓝图。 1. OSI/RM参考模型 开放互联参考模型(Open System Interconnection/…

备考ICA----Istio实验12---配置双向TLS Istio Ingress Gateway实验

备考ICA----Istio实验12—配置双向TLS Istio Ingress Gateway实验 本实验部分配置延续上个Istio实验11 1. 重新配置secret 重新配置secret使其带有ca证书可以验证客户端证书是否合法 先删除原有secret,再配置新的secret # 删除原tls类型的secret kubectl -n istio-system d…

数据仓库——事实表

数据仓库基础笔记思维导图已经整理完毕,完整连接为: 数据仓库基础知识笔记思维导图 事实表 事务事实表 事务事实表用于跟踪事件,通过存储事实和与之关联的维度细节,允许单独或聚集地研究行为。粒度稀疏性包含可加事实 无事实的…

【Django开发】0到1美多商城项目md教程第4篇:图形验证码,1. 图形验证码接口设计【附代码文档】

美多商城完整教程(附代码资料)主要内容讲述:欢迎来到美多商城!,项目准备。展示用户注册页面,创建用户模块子应用。用户注册业务实现,用户注册前端逻辑。图形验证码,图形验证码接口设…

Java基础知识总结(32)

反射 类加载器 当JVM启动时,会形成由3个类加载器组成的初始类加载器层次结构。 Bootstrap ClassLoader:根类加载器。它负责加载Java的核心类。 Extension ClassLoader:扩展类加载器。它负责加载 JRE 的扩展目录(%JAVA_HOME%/jr…

网安基础2-Sniffer的使用与防范

1. 嗅探器sniffer的工作原理 能捕获经过该网络设备的报文,通过分析网络流量,找出关键信息,解决网络问题。 不同于键盘捕获程序,如keylogger利用中断或钩子技术,Sniffer将网络接口置成适当的模式,如杂收。…

【小黑送书—第十八期】>>让工作自动化起来!无所不能的Python(文末送书)

随着我国企业数字化和信息化的深入,企业对办公自动化的效率和灵活性要求越来越高。Python作为一种开源的软件应用开发方式,通过提供强大丰富的库文件包,极大地简化了应用开发过程,降低了技术门槛。Python开发有哪些优势、挑战以及…

搭建vite+vue3项目时遇到的问题

搭建项目(vitevue3) 第一步:先安装开发工具 下载node.js https://nodejs.cn/download/ node自带npm 可通过npm -v /node -v查看npm和node是否安装成功以及版本号 以及查看vue/cli是否安装 第二步:创建项目(使用vite) 下载vite: npm install -g create-vite 创建项目:create-v…

产品经理的进阶之路

点击下载《产品经理的进阶之路》 1. 前言 本文深入剖析了产品经理这一职业从产品专员起步,逐步晋升为产品经理、高级产品经理,直至产品总监的整个职业发展路径。在每个阶段,产品经理都需承担不同的工作职责,展现出独特的职业特点。 2. 产品专员 关键词【产品需求/原型/文…

栈和队列相关

栈的顺序存储结构 #define maxsize 50 typedef int ElemType; typedef struct {ElemType data[maxsize];int top; }SqStack; 顺序栈的基本算法 初始化栈 void InitStack(SqStack *s){s.top-1;return; } 判断栈空 bool IsEmptyStack(SqStack *s){if(s.top-1){return true;…

广度优先搜索(BFS)算法详解

文章目录 广度优先搜索(BFS)算法详解与C实现BFS的工作原理BFS的实现C中BFS的实现 BFS的应用场景注意事项 广度优先搜索(BFS)算法详解与C实现 广度优先搜索(Breadth-First Search,BFS)是一种遍历…

《QDebug 2024年3月》

一、Qt Widgets 问题交流 1. 二、Qt Quick 问题交流 1.Qt5 ApplicationWindow 不能使用父组件 Window 的 transientParent 属性 ApplicationWindow 使用 transientParent 报错: "ApplicationWindow.transientParent" is not available due to compone…

集合框架——Map

双列集合 特点: 双列集合一次需要存一对数据,分别为键和值键不能重复,值可以重复键和值是一一对应的,每个键只能找到自己对应的值键值这个整体 称为:键值对 键值对对象 Entry对象 Map集合的常用方法 public class …

ssm框架配置文件例子

emmm。。。。 就是说&#xff0c;正常ssm的配置文件长啥样&#xff1f; 就最基础的&#xff1f; 贴一下&#xff0c;备忘吧。 第一个&#xff1a;applicationContext.xml <beans xmlns"http://www.springframework.org/schema/beans"xmlns:context"http…

软考 - 系统架构设计师 - 敏捷开发方法

前言 敏捷开发方法是一种以人为核心、迭代、循序渐进的软件开发方法。它强调团队合作、客户需求和适应变化&#xff0c;旨在通过快速迭代和反馈来快速交付高质量的软件产品。 敏捷开发方法的优势在于能够快速响应变化、提高开发效率和质量、增强团队协作和沟通&#xff0c;并降…