【C语言习题】26.字符逆序

news2024/7/6 17:38:22

文章目录

    • 1.描述
    • 2.解题思路
    • 3.具体代码


1.描述

  • 输入描述:

将一个字符串str的内容颠倒过来,并输出。可以有空格

数据范围:1≤𝑙𝑒𝑛(𝑠𝑡𝑟)≤10000 1≤len(str)≤10000

  • 输出描述:

输出逆序的字符串

  • 示例图:

在这里插入图片描述


2.解题思路

首先,我们需要一个接收函数用来接收字符串,这里的字符串应该用字符数组存储。

逆序输出,就是将数组元素倒过来输出。

我们可以直接通过逆序的数组下标,输出逆序字符串。

也可以将数组下标元素逆序交换,输出逆序字符串。


3.具体代码

我找到了两个方法:

代码1:

#include <stdio.h>
#include <string.h>
int main()
{
    int i;
    char s[10000];
    gets(s);
    for(i=strlen(s)-1;i>=0;i--)
    {	
        putchar(s[i]);
    }

    return 0;
}

打印:

在这里插入图片描述

代码讲解:

  1. 定义整型变量i和字符数组s。
  2. 通过gets(s)来接收输入的语句,直到遇到换行符。
  3. 通过一个for循环来逆序打印输入的语句。

代码2:

这个代码看起来复杂点。

void Reverse(char* str)
{
    char* left = str;// 定义左指针left,初始指向字符串的起始位置
    char* right = str + strlen(str)-1;// 定义右指针right,初始指向字符串的最后一个字符位置
    while(left < right)// 当左指针小于右指针时,执行循环体
    {
        char temp = *left;// 临时保存左指针指向的字符
        *left = *right; // 将右指针指向的字符赋值给左指针指向的位置
        *right = temp; // 将临时保存的左指针字符赋值给右指针指向的位
        ++left;// 左指针向后移动一位
        --right;// 右指针向前移动一位
    }
}

int main()
{
    char str[10000] = {0};
    while(gets(str))
    {
        Reverse(str);
        printf("%s\n", str);
        memset(str, 0, sizeof(str)/sizeof(str[0]));
    }
    return 0;
}

打印:

在这里插入图片描述

代码讲解:

  1. 进入main函数,先定义一个字符数组str。

  2. 进入while循环,通过gets(str)读取用户输入,直到遇到换行符。

  3. 将字符数组arr首元素地址传递给Reverse()函数。

  4. 进入Reverse()函数,定义左指针left,初始指向字符串的起始位置

  5. 定义右指针right,初始指向字符串的最后一个字符位置

  6. 进入while循环,当左指针小于右指针时,执行循环体

  7. char temp = *left;// 临时保存左指针指向的字符
    *left = *right; // 将右指针指向的字符赋值给左指针指向的位置
    *right = temp; // 将临时保存的左指针字符赋值给右指针指向的位
    ++left;// 左指针向后移动一位
    --right;// 右指针向前移动一位
    

    简单来说,就是把最左边和最右边的元素位置互换。

  8. Reverse()函数执行完后,返回main函数,打印arr数组的内容

  9. 使用memset函数将str数组清零,为下一次读取做准备。

  10. 程序会一直循环,知道用户不输入为止。
    简单来说,就是把最左边和最右边的元素位置互换。

  11. Reverse()函数执行完后,返回main函数,打印arr数组的内容

  12. 使用memset函数将str数组清零,为下一次读取做准备。

  13. 程序会一直循环,知道用户不输入为止。

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

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

相关文章

httpJVM

目录 HTTPS如何保证安全 1&#xff09;引入非对称加密 2&#xff09;引入非对称加密 3.中间人攻击 4.解决中间人攻击 JVM 1.JVM内存划分 2.JVM类加载过程 八股内容 3.JVM中的垃圾回收机制 释放垃圾的策略 1.标记-清除 2.复制算法 3.标记-整理 分代回收 HTTPS如何…

基于JCEF实现网页资源性能分析

文章目录 1、需求2、实现代码3、运行效果 1、需求 在使用chrome浏览器访问页面时&#xff0c;浏览器自带的开发者工具可以查看页面每个资源的资源大小和加载时间。 这个功能可以让我们直接知道接口或资源的耗时情况和大小情况&#xff0c;如果存在性能问题&#xff0c;可以进…

AST反混淆|对一段非常复杂的混淆代码深度剖析与还原

关注它&#xff0c;不迷路。 本文章中所有内容仅供学习交流&#xff0c;不可用于任何商业用途和非法用途&#xff0c;否则后果自负&#xff0c;如有侵权&#xff0c;请联系作者立即删除&#xff01; 1.代码片段 ((((ld0 ((ld1 (ld1 Uint8Array) && undefined…

云计算-Lambda事件 (Lambda Events)

检索事件信息 (Retrieving Event Information) 在上一个主题中&#xff0c;我们已经看到了如何创建一个Lambda函数、添加handler、添加触发器和配置执行策略。在本主题中&#xff0c;我们将对其进行扩展。到目前为止&#xff0c;我们看到的handler应用非常简单&#xff0c;但我…

uniapp一些问题解决

1.按钮边框如何去除&#xff1f; 参考博主&#xff1a;微信小程序按钮去不掉边框_微信小程序button去掉边框-CSDN博客文章浏览阅读1k次。最近在学uni-app&#xff0c;顺便自己写个小程序。左上角放了个button&#xff0c;可边框怎么也去不掉…原来微信小程序的按钮要去掉边框要…

基于 Solana 的 Drift Protocol 快速崛起,重新定义去中心化衍生品市场

随着区块链技术的快速发展&#xff0c;加密市场的格局正在悄然改变。投资者对透明度、效率和去中心化的需求愈发强烈&#xff0c;之前完全由中心化交易主导的加密货币交易&#xff0c;开始向链上转移。 根据 Coingecko 的最新数据&#xff0c;CEX 和 DEX 的现货交易量已经达到了…

凤香的“蜜”密

执笔 | 文 清 编辑 | 古利特 “遇水则漏&#xff0c;遇酒生香”。酒海&#xff0c;一种大型盛酒容器&#xff0c;因盛酒量以“吨”计算&#xff0c;故称“海”&#xff0c;传于唐宋&#xff0c;兴盛于明清&#xff0c;距今有1400多年的历史。文人墨客笔下&#xff0c;也多有…

xjar加密springboot的jar包,并编译为执行程序

场景&#xff1a;当前项目需要进行jar包部署在windows环境和linux环境&#xff0c;并要求使用xjar加密。 1. xjar加密 源码程序自行搜索&#xff0c;这里只介绍加密及运行&#xff0c;运行加密程序&#xff0c;指定jar包&#xff0c;输入密码 2. 加密后的目录 3. go程序编译 …

AI图书推荐:基于ChatGPT API和Python开发应用程序的详细指南

ChatGPT已经以其革命性的能力引起了人们的关注&#xff0c;利用其API可能会成为你的游戏规则改变者。这不仅仅是关于编码&#xff1b;它是关于为您的创作添加一层智能&#xff0c;将它们提升到之前无法想象的水平。《基于ChatGPT API和Python开发应用程序的详细指南》&#xff…

Git——pull request详细教程

当我们需要协助其他仓库完成更改时&#xff0c;往往会用到git中的Pull Request操作&#xff0c;从而方便团队的协作管理和代码持续集成。 下面是详细的教程步骤。 一. Fork目标项目 比如说我现在要fork以下Qwen-VL的项目&#xff0c;如图所示&#xff1a; 随后点击Create即可…

操作系统—简要分析FAT文件系统

文章目录 简要分析FAT文件系统1.FAT的起源与发展历史2.FAT的基本结构与目录管理机制(1).基本结构(2).文件分配表(3).根目录区(4).数据区 3.优点与缺点4.改进与替代方案(1).exFAT(2).ext2/3/4(3).NTFS 小结参考文献 简要分析FAT文件系统 1.FAT的起源与发展历史 为了更好地管理磁…

柬埔寨语翻译通App,一款真正实现高棉语翻译、语音识别和中柬双语无障碍交流的应用程序。

柬埔寨语翻译通App&#xff0c;一款真正实现高棉语翻译、语音识别和中柬双语无障碍交流的应用程序。它不仅提供文字、语音、图片的翻译&#xff0c;还融入了柬埔寨文化元素&#xff0c;让你在每一次翻译中都能感受到柬埔寨的文化魅力。 这款App支持中文、高棉语双语互译&#x…

LeetCode //C - 143. Reorder List

143. Reorder List You are given the head of a singly linked-list. The list can be represented as: L0 → L1 → … → Ln - 1 → Ln Reorder the list to be on the following form: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … You may not modify the values i…

[图解]企业应用架构模式2024新译本讲解03-事务脚本+表数据入口

1 00:00:00,570 --> 00:00:06,290 这里先创建一个service的对象 2 00:00:07,000 --> 00:00:12,470 然后调用对象的方法、操作 3 00:00:12,480 --> 00:00:13,750 就是事务脚本 4 00:00:14,700 --> 00:00:15,900 然后参数是1 5 00:00:16,660 --> 00:00:19,490…

618有什么宠物空气净化器推荐?希喂FreAir Lite宠物空气净化器真实体验

一、宠物空气净化器的必要性 掉毛季又来了&#xff0c;猫咪的毛发满天飞&#xff0c;怎么办&#xff1f;我家里的猫咪一到换毛季就掉满地的毛发&#xff0c;尤其喜欢在家里奔跑打闹&#xff0c;结果整个房间都是毛。为了减少家里空气中的浮毛&#xff0c;你都做过哪些努力呢&a…

Shell编程用户注册及登录

需求&#xff1a; 用Shell编程完成用户的注册及登录 完成 注册用户 用户名首字母大写 密码需8个字符及以上且含“$”,“&”,“-”中的任意一个手机号需以139开头的11位号码邮箱需以数字开头的qq.com 2.检测重复注册 3.注册信息写入/etc/secfinfe 4.用户登录 5.检测是否存…

SQLI-labs-第二十七关和第二十七a关

目录 第二十七关 1、判断注入点 2、判断数据库 3、判断表名 第二十七a关 第二十七关 知识点&#xff1a;空格、select、union等过滤绕过 思路&#xff1a; 通过分析源码&#xff0c;我们可以知道对用户的输入进行过滤&#xff0c;对空格、select、union等进行了过滤&…

钡铼PLC集成BL121PO协议网关优化电子制造产线的生产效率

PLC转OPC UA协议转换网关BL121PO在电子制造产线中的优化应用&#xff0c;可以显著提高生产效率&#xff0c;促进生产线的智能化和信息化发展。本文将从以下几个方面进行阐述&#xff1a; 提高设备间通信效率&#xff1a;PLC转OPC UA协议转换网关BL121PO通过高效的协议转换&…

Docker-02-02 Docker离线下载安装与配置(linux)

一、Docker下载 官网下载地址:Index of linux/static/stable/x86_64/ (docker.com) 推荐下载最新的社区版: 二、将安装包上传至服务器并解压 将安装包上传至服务器的/usr/local目录并解压 cd /usr/local lstar -zxvf docker-18.06.3-ce.tgz三、将docker目录下的文件复制到…

ubuntu安全加固

知识背景&#xff1a; 项目背景&#xff1a; 常用命令&#xff1a; useradd: adduser: getent passwd: getent group: id username: adduser newname sudo: sudo userdel <username> sudo rm -rf /home/<username> userdel groupdel 修改shell为/bin…