当前位置: 首页 > news >正文

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

文章目录

    • 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.lryc.cn/news/356627.html

相关文章:

  • windows和linux下的库文件比较
  • 第七十九节 Java面向对象设计 - Java访问级别
  • Vue进阶之Vue项目实战(四)
  • fix leakage脚本
  • MySQL中视图是什么,有什么作用
  • 【面试题】JavaScript基础高频面试(下)
  • 对于个人而言,大数据时代如何更好地管理自己的信息?
  • oj项目后端分析
  • 书籍学习|基于SprinBoot+vue的书籍学习平台(源码+数据库+文档)
  • AI学习指南数学工具篇-MATLAB中的凸优化工具
  • 散户如何参与期权交易?
  • Unity Apple Vision Pro 开发(一):开发前期准备【软硬件要求 | 开发者模式 | 无线调试打包】
  • IGMP——组播成员端网络协议
  • Java break细节(标签)
  • 远程户外监控组网方案,工业4G路由器ZR2000
  • K8S集群中Yaml文件详解
  • git-将老项目的分支推送到新项目的新分支上
  • Unity之如何使用Localization来实现文本+资源多语言
  • ESP32 实时人脸检测系统:ESP32 与上位机通信(microPython框架)
  • Paddle 0-d Tensor 使用指南
  • Collection(一)[集合体系]
  • 58. 最后一个单词的长度
  • 深入理解ECMAScript:JavaScript的规范与实践
  • 【深度学习】Transformer梳理
  • C语言 | Leetcode C语言题解之第118题杨辉三角
  • 以太坊钱包
  • Vue 怎么定义插件以及使用这个插件
  • SQL2017附加从其他电脑复制过来的mdf数据后出现【只读】无法写入数据
  • Python轴承故障诊断 (21)基于VMD-CNN-BiTCN的创新诊断模型
  • 如何运行大模型