C语言编写函数将字符串逆序存放

文章目录

  • 1-12题
  • 例题13
  • 例题13答案
    • 答案一
    • 答案二

1-12题

C语言基础例题1-3题-指针篇
C语言基础例题4-5题-二维数组篇
C语言基础例题6-7题-结构体篇
C语言基础例题8-9题-大作业篇
C语言基础例题10-11题-字符串、指针篇
C语言基础例题12题-链表篇

例题13

请编写一个函数 void reverseString(char* str),该函数将输入的字符串逆序存放,不要使用除stdio以外的任何库函数。

例如,对于输入字符串 “Hello, World!”,函数逆序结果后,str应为 “!dlroW ,olleH”。

测试用例

#include <stdio.h>void reverseString(char* str);int main() {char str[] = "Hello, World!";printf("Original string: %s\n", str);reverseString(str);printf("Reversed string: %s\n", str);return 0;
}

预期输出:
Original string: Hello, World!
Reversed string: !dlroW ,olleH

例题13答案

答案一

#include <stdio.h>void reverseString(char *str);int main()
{char str[] = "Hello, World!";printf("Original string: %s\n", str);reverseString(str);printf("Reversed string: %s\n", str);return 0;
}
void reverseString(char *str)
{char *first=str,*last=str,temp;while(*last)*last++;while(first!=(--last)){temp=*first;*first=*last;*last=temp;first++;}
}

char *first = str, *last = str, temp;:
定义了两个指针 first 和 last,分别指向字符串的开头和结尾,还有一个变量 temp 用于交换字符。

while (*last):
通过循环,使指针 last 移动到字符串的结尾部分,即指向字符串的末尾的空字符 ‘\0’。

while (first != (–last)):
开始一个循环,条件是 first 指针没有达到 last 指针,也就是还没有达到字符串的中点。

temp = *first;
*first = *last;
*last = temp;:
将 first 指针指向的字符与 last 指针指向的字符进行交换。交换后,first 指针向后移动,last 指针向前移动。

first++;:
将 first 指针向后移动一位,继续下一次循环。

通过以上操作,完成了字符串的反转。

答案二

#include <stdio.h>void reverseString(char *str);int main()
{char str[] = "Hello, World!";printf("Original string: %s\n", str);reverseString(str);printf("Reversed string: %s\n", str);return 0;
}void reverseString(char *str)
{int length = 0;char *tempPtr;char temp;// 计算字符串的长度tempPtr = str;while (*tempPtr != '\0'){length++;tempPtr++;}// 交换字符串字符tempPtr = str;char *endPtr = str + length - 1;while (tempPtr < endPtr){temp = *tempPtr;*tempPtr = *endPtr;*endPtr = temp;tempPtr++;endPtr--;}
}

int length = 0;:
定义一个变量 length,用于记录字符串的长度。

char *tempPtr;:
定义一个指针 tempPtr,用于遍历字符串。

char temp;:
定义一个变量 temp,用于交换字符。

tempPtr = str;:
将指针 tempPtr 指向字符串的开头,准备遍历字符串并计算长度。

while (*tempPtr != ‘\0’):
通过循环,遍历字符串直到遇到空字符 ‘\0’,即字符串的结尾。

length++;
tempPtr++;:

对于每个非空字符,将 length 的值增加 1,并将 tempPtr 指针向后移动到下一个字符。

tempPtr = str;:
将 tempPtr 指针重新指向字符串的开头,准备进行字符交换操作。

char *endPtr = str + length - 1;:
定义一个指针 endPtr,指向字符串的最后一个字符。

while (tempPtr < endPtr):
通过循环,进行字符交换操作。每次循环中,交换 tempPtr 指针和 endPtr 指针指向的字符,并将两个指针分别向后和向前移动一位。

temp = *tempPtr;
*tempPtr = *endPtr;
*endPtr = temp;:
交换 tempPtr 指针和 endPtr 指针指向的字符。

tempPtr++; endPtr–;:
将 tempPtr 指针向后移动一位,将 endPtr 指针向前移动一位。

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

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

相关文章

现在个人想上架微信小游戏已经这么难了吗...

点击上方亿元程序员关注和★星标 引言 大家好&#xff0c;最近我突然想起来我还有一款微信小游戏还没有上架&#xff0c;于是捣鼓了一天把游戏完善了一下&#xff0c;然后准备提交审核&#xff0c;却发现异常的艰难… 1.为什么难&#xff1f; 相信大家都大概知道&#xff0c…

分布式id生成数据库号段算法的golang实现

分布式id生成数据库号段算法的golang实现 介绍项目结构使用说明核心流程说明1. 定义id生成器结构体2. id生成器共有Monitor&#xff0c;GetOne, Close三个对外暴露的方法。3. 数据表结构 参与贡献 介绍 项目地址&#xff1a;gitee&#xff1b;github 本项目主要利用go语言(go1…

解决mac 下 docker-compose 不是命令

docker-compose docker: ‘compose’ is not a docker command #6569 解决方法&#xff1a; mkdir -p /usr/local/lib/docker ln -s /Applications/Docker.app/Contents/Resources/cli-plugins /usr/local/lib/docker/cli-plugins参考&#xff1a; https://github.com/docker/…

Qt中对Udp数据打包发送和接收

有些小伙伴对怎么对Udp的数据打包不太清楚。下面我举例说明。 比如我们要发送一个Person的数据。可以先用一个结构把Person的数据封装。 struct Person {QString name;int age; };下面是udp客户端和服务器端完整的代码例子。 #ifndef UDPCLIENT_H #define UDPCLIENT_H#includ…

【EI会议征稿】JPCS独立出版-第五届新材料与清洁能源国际学术会议(ICAMCE 2024)

JPCS独立出版-第五届新材料与清洁能源国际学术会议&#xff08;ICAMCE 2024&#xff09; 2024 5th International Conference on Advanced Material and Clean Energy 第五届新材料与清洁能源国际学术会议&#xff08;ICAMCE 2024&#xff09;将于2024年2月23-25日在中国▪长沙…

lenovo联想小新 Air-14 2019 AMD平台API版(81NJ)原装出厂Windows10系统

下载链接&#xff1a;https://pan.baidu.com/s/1HCC66EH4UOcgofRx5_v1oA?pwdlgqw 提取码&#xff1a;lgqw 原厂系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、联想电脑管家等预装程序 所需要工具&#xff1a;16G或以上的U盘 文件格式&#xf…

KafkaConsumer 消费逻辑

版本&#xff1a;kafka-clients-2.0.1.jar 之前想写个插件修改 kafkaConsumer 消费者的逻辑&#xff0c;根据 header 过滤一些消息。于是需要了解一下 kafkaConsumer 具体是如何拉取消费消息的&#xff0c;确认在消费之前过滤掉消息是否会有影响。 下面是相关的源码&#xff0…

GZ038 物联网应用开发赛题第1套

2023年全国职业院校技能大赛 高职组 物联网应用开发 任 务 书 (第1套卷) 工位号:______________ 第一部分 竞赛须知 一、竞赛要求 1、正确使用工具,操作安全规范; 2、竞赛过程中如有异议,可向现场考评人员反映,不得扰乱赛场秩序; 3、遵守赛场纪律,尊重考评人员…

【漏洞复现】BYTEVALUE智能流控路由器存在命令执行

【漏洞介绍】 百为智能流控路由器 /goform/webRead/open 路由的 ?path 参数存在有回显的命令注入漏洞。攻击者可通过该漏洞在服务器端执行命令&#xff0c;写入后门&#xff0c;获取服务器权限&#xff0c;从而获取路由器权限。 【指纹】 title”BYTEVALUE 智能流控路由器”…

151. 反转字符串中的单词

151. 反转字符串中的单词 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a;错误经验吸取 原题链接&#xff1a; 151. 反转字符串中的单词 https://leetcode.cn/problems/reverse-words-in-a-string/description/ 完成情况&#xff1a; 解…

ai批量剪辑矩阵无人直播一站式托管系统源头技术开发

1.全店IP形象打造----剪辑 全店IP打造模式为场景组合&#xff0c;需要在每个场景内按照顺序分别上传短视频素材&#xff0c;会与选中的音乐、标题文案组合生成有逻辑顺序的视频。可调配标题字号大小、音频音量大小。如想要携带团购地址可设置POI。可开启团购引导动画、镜头转场…

AI时代产品经理升级之道:ChatGPT让产品经理插上翅膀

文章目录 一、ChatGPT简介二、ChatGPT在产品经理工作中的应用1. 快速获取用户反馈2. 智能分析竞品3. 智能推荐产品4.分析市场趋势5.优化产品功能 三、总结与展望《AI时代产品经理升级之道&#xff1a;ChatGPT让产品经理插上翅膀》亮点内容简介目录作者简介获取方式 随着人工智能…

梯度@等值线@梯度运算法则

文章目录 梯度点处梯度函数梯度梯度和方向导数的关系 等值线等值线法线和梯度三元函数梯度点处梯度函数梯度梯度长度等值面 梯度运算法则 梯度 梯度是一个与方向导数相关的概念,梯度本质上是向量,是由各个自变量的偏导数定义的向量;梯度通常充当方向导数(函数变化率)的最值的角…

火山引擎公共云·城市分享会:共享云经验,一起向未来

数智化时代的来临&#xff0c;不仅激发了行业对云计算的资源需求&#xff0c;也重构了云计算的技术架构及产品布局&#xff0c;给业务场景带来更多可能性&#xff0c;让云计算成为企业走向高效治理的一剂“良方”。随着业务的多样化、复杂化&#xff0c;企业应该如何借助云计算…

各种业务场景调用API代理的API接口教程(附带电商平台api接口商品详情数据接入示例)

API代理的API接口在各种业务场景中具有广泛的应用&#xff0c;本文将介绍哪些业务场景可以使用API代理的API接口&#xff0c;并提供详细的调用教程和代码演示&#xff0c;同时&#xff0c;我们还将讨论在不同场景下使用API代理的API接口所带来的好处。 哪些业务场景可以使用API…

NAS 扩容简明指南:使用各种外设给 NAS 们扩容

说起来有趣&#xff0c;NAS 除了“不同设备共享存储”这个功能之外&#xff0c;最重要的功能就是为设备扩容&#xff0c;但是 NAS 自己的存储容量不够了&#xff0c;又该如何。 ​这篇文章分享下我目前使用外设给 NAS 扩容的思路&#xff0c;如何以相对低的成本来获取更大的容…

【python】乘机最大

题目&#xff1a; """ 设有一个长度为N的数字串&#xff0c;要求选手使用K个乘号将它分成K1个部分&#xff0c;找出一种分法&#xff0c;使得这K1个部分的乘积能够为最大。为了帮助选手能够正确理解题意&#xff0c;主持人还举了如下的一个例子有一个数字串: 31…

竞赛 目标检测-行人车辆检测流量计数

文章目录 前言1\. 目标检测概况1.1 什么是目标检测&#xff1f;1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 行人车辆目标检测计数系统 …

【系统救援】 Ubuntu重启失败,报错:UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY

问题定位及处理 查看错误信息&#xff1a;/dev/sda3 contains a file system with errors, check forced. /dev/sda3: Inodes that were part of a corrupted orphan linked list found. /dev/sda3: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY. (i.e., without -a or -p o…

【数据结构】堆详解!(图解+源码)

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; 数据结构解析 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f324;️前言&#x1f324;️堆的理论☁️二叉树的顺序存储☁️堆的概念 &#x1f324;️堆的实现…