PTA刷题C语言编程顺序颠倒输出实现
目录
文章图片
这道题,是我遇见对数组元素的掌握与使用较为灵活的题目。
下面代码是我刚接触C++,刚学完类的一系列知识,连入门都没过,对C++的强大还未有多大认知,还是极具C语言的风格。
我看过一篇用C++完成的比这个简单多了。
C语言也可以用栈来完成,虽然我有栈的实现函数,但我不愿去搞,就这样吧,实现也是对自己知识点掌握的加深认知。
#include#include int main(void){int a = 0; char ch; char arr1[500001]; //输入数组char arr2[500001]; //输出数组while ((ch = getchar()) != '\n')//读入字符串{arr1[a++] = ch; }arr1[a] = '\0'; int len = strlen(arr1); int i = 0; int dest = len - 1; //从字符串尾部开始遍历while (dest >= 0){if (arr1[dest] == ' ' && arr1[dest + 1] != ' ' && arr1[dest + 1] != '\0' || (dest == 0 && arr1[0] != ' '))//元素为单词的条件{if (i != 0)arr2[i++] = ' '; int last = dest + 1; if (dest == 0 && arr1[0] != ' ')//满足条件,改变last的值{last = dest; }while (arr1[last] != ' ' && arr1[last] != '\0')//将单词拷贝到输出数组中{arr2[i++] = arr1[last++]; }}dest--; }arr2[i] = '\0'; //字符串结束std::cout << arr2 << std::endl; return 0; }
尽量理解吧
arr1[dest] == ' ' && arr1[dest + 1] != ' '&&arr1[dest+1]!='\0'
是为了确定每个单词出现的条件。
(dest == 0 && arr1[0] != ' ')
是为了处理第一个元素就是单词的情况。
while (arr1[last] != ' ' && arr1[last] != '\0'){arr2[i++] = arr1[last++]; }
负责将单词拷贝到输出数组上,同时符号要求。
if(i!=0)arr2[i++] = ' ';
这个是,当第一个单词拷贝过去后,判断是否后面还有有单词,且能进这个域,就代表后面还有单词,要加一个空格的元素。
【PTA刷题C语言编程顺序颠倒输出实现】 以上就是PTA刷题C语言编程顺序颠倒输出实现的详细内容,更多关于PTA刷题C语言倒序的资料请关注脚本之家其它相关文章!
推荐阅读
- 关于C语言编程入门基础学习的一些,常识类的小知识,干货分享
- 刷题记录|【蓝桥必胜】试题 算法训练 kAc给糖果你吃-贪心排序
- LeetCode刷题笔记|LeetCode刷题笔记 - 反转字符串
- firewalld与iptables防火墙工具详细介绍
- 2022年,程序员如何在面试前刷题,顺利入职大厂()
- 用js玩转Scriptable,超简单教程
- 考研刷题小程序云开发实战-基础知识储备(1)
- IPTABLES的连接跟踪与NAT分析
- LeetCode刷题学习278(第一个错误的版本(使用二分查找解决01模型问题))
- C语言编程基础学习——链表详解!