2. <cstring>
#
点击查看考点
C 风格字符串
题上中文限制: 不允许使用字符串标准库函数 (<string>
, <cstring>
, <string.h>
), 只能使用字符数组.
Store two user input strings into c-style character arrays. Connect them, change the punctuation and convert the lowercase letters into uppercase letters for output.
翻译
将两个用户输入的字符串存储到 C 风格字符数组中. 连接两个字符串, 改变标点符号并将小写字母转换为大写字母, 然后输出.
For example,
1input:
2 Hello C++!
3 Happy New Year, 2021!
4output:
5 HELLO C++, HAPPY NEW YEAR, 2021!
点击查看解答参考
警告
此卷的所有解答参考都是笔者考试时实际写的代码的回忆版, 所以 相比于其他卷的解答参考可能更为超纲难懂.
主要是在展示以 "C++98 + Lambdas + range-based for + auto + STL" 为学习内容能如何秒杀转专业题目.
注意根据题意, 需要将第一个字符串最后的 "!\0"
换成 ", "
.
字符数组使用了 std::array<char, size>
而非 char a[size]
, 好处在于不会隐式类型转换为指向首元素的指针, 而需要显式调用 array.data()
得到.
面向输出编程
直接用长度足够长的字符串数组 (如 char a[10000]
) 即可, 无需计算字符串长度再用 new char[size + 1]
分配空间.
提示
也可以用 STL 算法简单实现.