一.字符串逆序

问题描述:

输入一个字符串str,将其内容颠倒过来,并输出。

数据范围0<len(str)<10000

输入描述:

输入一个字符串,可以有空格

输出描述:

输出逆序的字符串

输入样例:

I am a student

输出样例:

tneduts a ma I

方法一:创建一个新的数组用来存储原数组内的字符串(反向存储),将新的数组输出

利用循环的方式将原字符串数组中的元素反向存储在新创建的字符串数组中,之后输出新的字符串数组。

代码如下:

#include <stdio.h>
#include <string.h>
int main()
{char str[10000];//由于题目中要求的长度范围为0~10000,因此创建了长度为10000的数组char str2[10000];int i;gets(str);int size = strlen(str);for (i = 0; i < size; i++)str2[i] = str[size - i - 1];//利用新创建的数组来反向存储原数组中的数据str2[i] = 0;//确保输出结果的正确性puts(str);return 0;
}

得到输出结果为

方法二:利用指针对字符串数组进行逆置,逆置后输出

1.定义char类型指针left,用来指向字符串数组的首元素;

2.定义char类型指针right,用来指向字符串的最后一个元素;

3.循环进行首元素和尾元素的交换,之后left右移,right左移,直至left等于right时,循环结束,字符串完成逆置。

代码如下:

void Reverse(char* str)
{char* left = str;//left指向字符串数组的首元素char* right = str + strlen(str)-1;//right指向字符串的最后一个元素while(left < right)//进行首元素和尾元素的交换,直至left等于right为止,此时字符串完成1逆置{char temp = *left;*left = *right;*right = temp;++left;--right;}
}int main()
{char str[10000];gets(str);Reverse(str);puts(str);return 0;
}

二.倒置字符串(字符串逆序问题的升级)

题目描述(题目来源:牛客网):

将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I

输入描述:

每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100

输出描述:

依次输出倒置之后的字符串,以空格分割

输入样例:

I like beijing.

输出样例:

beijing. like I

解题思路: 

1.首先将整个字符串逆置;

2.之后将每个单词逆置(最后一个单词结尾非空格);

3.逆置时不要逆置‘\0’

首先创建逆置函数,原理如上述以指针进行逆置的方式,代码如下:

void Reverse(char* left, char* right)
{while (left < right){char temp = *left;*left = *right;*right = temp;++left;--right;}
}

根据逆置函数首先对整个字符串进行逆置

 Reverse(str,str+strlen(str)-1);

之后依次遍历字符串,依次对每个单词进行逆置

    char* left = str;char* right = str;while (*left != '\0'){while (*right != ' ' && *right != '\0')right++;if (*right == ' '){Reverse(left, right - 1);right++;left = right;}else{Reverse(left, right - 1);left = right;}}

源码如下:

#include <stdio.h>
#include <string.h>
void Reverse(char* left, char* right)
{while (left < right){char temp = *left;*left = *right;*right = temp;++left;--right;}
}
int main()
{char str[100];gets(str);//首先进行整体逆置Reverse(str,str+strlen(str)-1);char* left = str;char* right = str;while (*left != '\0'){while (*right != ' ' && *right != '\0')right++;if (*right == ' '){Reverse(left, right - 1);right++;left = right;}else{Reverse(left, right - 1);left = right;}}printf("%s\n", str);return 0;
}

运行结果如下:

C语言实现字符串逆序、倒置字符串(字符串逆序问题的升级)相关推荐

  1. ACMNO.27 Python的两行代码解决 C语言-字符逆序 写一函数。使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串。 输入 一行字符 输出 逆序后的字符串

    题目描述 写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串. 输入 一行字符 输出 逆序后的字符串 样例输入 123456abcdef 样例输出 fedcba654321 来源 ...

  2. 【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | 引入线程安全概念 )

    文章目录 一.引入线程安全概念 二.完整代码示例 一.引入线程安全概念 在上一篇博客 [C 语言]字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | strncat 函数 ) ...

  3. 【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | strncat 函数 )

    文章目录 一.strncat 字符串连接函数 二.借助 递归函数操作 逆序字符串操作 三.完整代码示例 一.strncat 字符串连接函数 strncat 函数 : 将 const char *src ...

  4. 字符串逆序输出c语言,5、输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。...

    举例: #include int main() { int i, j, cnt; char ch, a[80], b[80]; ch=getchar(); for(i=0; ch!='\n'; i++ ...

  5. 【C语言典例】:倒置字符串

    [C语言典例]:倒置字符串 文章目录 [C语言典例]:倒置字符串 输入描述: 输出描述: 输入 输出 全部代码 结束语 链接: https://www.nowcoder.com/questionTer ...

  6. python字符串逆序_python之字符串逆序

    python之字符串逆序 1.贴题 题目来自PythonTip 给你一个字符串 a, 请你输出逆序之后的a. 例如:a='xydz' 则输出:zdyx 2.说明 思路基本分为两种, 一是编写循环,每次 ...

  7. 写一个函数,输入int型,返回整数逆序后的字符串

    2019独角兽企业重金招聘Python工程师标准>>> 刚刚看到一个面试题:写一个函数,输入int型,返回整数逆序后的字符串.如:输入123,返回"321". 要 ...

  8. C语言将字符串s连接到t的后面,下列给定程序中,函数fun的功能是:先将字符串s中的字符按正序存放到字符串t..._考试资料网...

    问答题下列给定程序中,函数fun的功能是:先将字符串s中的字符按正序存放到字符串t中,然后把s中的字符按逆序连接到字符串t的后面. 例如,当s中的字符串为"ABCDE"时,则t中的 ...

  9. C语言利用二叉树的操作实现根据给定的字符串生成二叉树并前序、中序、后序输出二叉树。

    C语言利用二叉树的操作实现根据给定的字符串生成二叉树并前序.中序.后序输出二叉树. Description 根据给定的字符串生成二叉树并前序.中序.后序此二叉树. Input 给定一字符串,其中#表示 ...

  10. 7-20 字符串逆序 输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。

    输入格式: 输入在一行中给出一个不超过80个字符长度的.以回车结束的非空字符串. 输出格式: 在一行中输出逆序后的字符串. 输入样例: Hello World! 结尾无空行 输出样例: !dlroW ...

最新文章

  1. Swift 中的 @autoclosure
  2. OSSIM中分布式消息队列应用
  3. K折交叉验证(StratifiedKFold与KFold比较)
  4. 你已经是个成熟的985大学了,请不要在大一教 C 语言!
  5. 如何更有效使用 Rational AppScan 扫描大型网站,第 2 部分: 案例分析
  6. 【本周面试题】第5周 - 开发工具相关
  7. Qt学习笔记-使用QStyleFactory::create()变换风格
  8. visual studio 2015提示IE10未安装
  9. springboot+openFeign+nacos+seata开发实战
  10. 【BZOJ4518】征途,斜率优化DP
  11. 【vue.config.js配置configureWebpack的optimization splitChunks页面空白 - DCloud】
  12. react-router-dom v4
  13. js判断当前页面是否有父页面,页面部分跳转解决办法,子页面跳转父页面不跳转解决 (原)...
  14. matlab中目录的相关操作
  15. 【幅频均衡带通滤波器】基于FPGA的幅频均衡带通滤波器的设计
  16. 直播类 APP 项目开发实战(原理篇)
  17. 原型工具axure7.0
  18. 移植boa服务器和错误指南
  19. 高中数学培训高中数学必修一
  20. pytese +allure框架设计

热门文章

  1. 全国计算机Access题库大全,计算机二级access题库大全.doc
  2. PHP留言板(实例)
  3. 复合索引的优点和注意事项
  4. Allegro 中测量添加单位
  5. ASP.NET实现页面跳转三种方式
  6. Android--打地鼠
  7. Oracle 11g 安装详细过程
  8. FiddlerScript编程
  9. 如何优雅的保护 Kubernetes 中的 Secrets
  10. Spring框架:谈谈对IOC和AOP的理解