| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> PAT乙级1009,用C语言进行编程,给定一句英语实现倒序打印 -> 正文阅读 |
|
[C++知识库]PAT乙级1009,用C语言进行编程,给定一句英语实现倒序打印 |
正如标题所说,今天带来的是PAT中一道20分的题目,也就是PAT乙级1009说反话。 其实题目要求很简单,就是给定一句英语,用字符串的形式存储,然后用C语言把句中所有单词和空格进行一个倒序打印出来即可。 那么,在得到这个题目的要求后,我们就可以分析出该题目的逻辑: 1、要用到字符串,但是这里得注意,C语言中并没有字符串这个类型,它不像C++和Java一样是有字符串类型的,所以要表现出字符串,就得需要使用字符数组,或者说是字符指针,不过今天这道题呢,当然是以字符数组为主,看起来也能更加直观一些。 2、字符串中有空格,我们都知道,一般在写scanf的时候,空格会默认是下一条语句或者下一次输入,所以这个时候就需要用到一个格式字符%[ ],它的作用是扫描字符集合,并对结束符进行一个自定义,我这里打算用到的是^\n,也就是换行回车,只有到按回车的时候,此次输入才会结束,所以空格符号也算在字符数组当中的,它相当于一个字符串。 3、最后一个关键就是倒序打印,因为我们是用字符数组来存储该语句的,所以是用数组的形式,当然这里与我们之前所做的题也不同,这里的数组长度需要用到一个strlen()函数来求的,而且该函数是存在于C语言的#include<string.h>库里的,进行调用即可。 其次就是数组要倒着遍历,那这也简单,就是反向遍历,从数组的最后一位开始,不停地i--,倒着打印的时候一般都是一个字符串加一个空格,直到最后一位时,是只打印出一个单词。 所以在进行内循环的时候,需要做一个条件判断,就是当遇到空格的时候,我们可以选择直接打印出空格,然后到最后的一个元素的时候,就直接把字符串改为\0,注意,这里又用到了\0,\0是转义字符,通常是用来表达字符串的结束标志的。 理清逻辑后,画出流程图总的来说,从这张流程图中可以看出来,最关键最复杂的地方就是对是否遇到空格的判断。 代码实现1、关于第一个输入字符串,我是用到一个scanf,然后用到一个格式字符%[ ],表现形式应该为:scanf("%[^\n]", string); 2、for循环的时候,要倒着遍历,所以需要知道数组的长度,也就是用到strlen函数。 strlen函数,主要作用是用来计算给定字符串的长度,计算字符串长度的方法是从开始到遇到第一个\0。 3、因为倒着遍历的时候会有空格,所以需要对空格进行一个判断,空格也算一个字符串,主要原因是在于我们在倒着遍历数组的时候,由于下标是不超过80,后面的元素都为空,所以要跳过空的元素,最后输出结果。
?当然,其实这里不用到strlen也是可以的,毕竟要求是总长度不超过80,那么i从第80位开始遍历也完全没有问题。
?测试结果:测试一: ? 测试二: ? 以上两个都经过测试,结果是正确的,接下来就是提交到PAT网站上再进行测试。 PAT提交结果遇到的问题我在Xcode里写代码的时候遇到过编译器产生警告: 这里的警告语句为:Implicit conversion loses integer precision: 'unsigned long' to 'int'。 这里就涉及到unsigned long 和 int的区别 unsigned long指的是无符号长整型,而int则是整数型,我们应该知道,一个数组的长度应该是整数型或者说是长整型的,再怎么样也不会到无符号长整型,可是我的Xcode却因为这个报了警告。 意思是隐式转换缺失整数精度,建议用unsigned long来代替int,但实际上只是缺失精度的话,完全可以用long 来代替int ,我尝试了一下,这样带进去的话也不会再有警告了。 总结总的来说,这道题其实主要是对C语言一些函数的了解,当然不了解也没关系,毕竟可以直接给定数组的长度80,还有的话就是倒序打印的方法要清楚。 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 | -2025/2/5 20:00:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |