【C&C++】1009 说反话 (20 分)
2020-03-08 16:14
239 查看
有目录~
我做了个pta乙级题解的专栏,欢迎来专栏看~
C
#include<stdio.h> #include<string.h> int main() { char s[80][80]; int i = 0; for(;;i++) { scanf("%s",s[i]); if(getchar() == '\n') { break; } } for(;i >= 0;i--) { printf("%s",s[i]); if(i != 0) { printf(" "); } } return 0; }
这一题开始,我注意到了自己在字符串方面的缺陷,特别是当输入字符串时,我遇到了很大的问题
C++ 运行超时 18’/20’
这题在处理空格和回车的时候,我没有考虑到位,下面的18分代码,我错在了(标记出来的)先获取一个字符,并判断是否为回车,其实这样做会导致一个错误:使得输入的开始的一个字符(也许是有效字母)无法被存入words数组。(这一点我在第二次的c++代码中改正了)
#include <iostream> #include <array> #include <string> using namespace std; array<string, 80> words = {}; int k = 0; // words下标 int main() { bool flag = true; // 是否刚开始输入 char ch=0,chFlag=0; /*cin.get()的使用,可以吸收题中所说的单词间的空格, 以及输入完成后的回车 */ while ((ch = cin.get()) != '\n') { if (flag) { chFlag = ch; flag = false; } cin >> words[k++]; } for (int i = k - 1; i >= 0; i--) { if (i!= k - 1) { cout << " "; } if (0 == i) // 将第一个保留的字符,加入words中对应的单词 { cout << chFlag; } cout << words[i]; } return 0; }
C++ 20’/20’
要注意:空格 回车处理的方式。关于“判断回车”这一步的位置,在这一题中,“判断回车”这一步应该在获得了一个单词之后进行。
#include <iostream> #include <array> #include <string> using namespace std; array<string, 80> words = {}; int k = 0; // words下标 int main() { string s = ""; while (true) { cin >> s; words[k++] = s; if (cin.get() == '\n') { break; } } for (int i = k - 1; i >= 0; i--) { if (i != k - 1) { cout << " "; } cout << words[i]; } return 0; }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 1009. 说反话 (20)(C++)
- 【C++】浙大PAT (Basic Level)1009. 说反话 (20)
- PAT 1009 乙等 (说反话)c++
- 【PAT】B1009. 说反话(C++接受带有空格的字符串)
- PAT (Basic Level) Practise 的C++实现-1009. 说反话
- 1009. 说反话 (20)
- 1009. 说反话
- PAT-乙级B1009-说反话(将含有空格的字符串分类存储于二维字符数组中)
- PAT(乙):1009. 说反话
- PAT算法题Java实现(Basic)1009 说反话
- PAT-B 1009. 说反话
- 1009. 说反话 (20)
- 1009. 说反话 (20) python篇
- PAT_1009. 说反话 (20)
- 1009. 说反话 (20)
- PAT1009. 说反话
- PAT乙1009. 说反话 (20)解法2
- 1009. 说反话 (20)
- PAT乙类1009 说反话 (20 分)
- 1009. 说反话 (20)