题解【B2122 单词翻转】
这道题目是考字符串的操作。
声明一个字符串:
char s_c[k]:可以声明一个最大长度为k-1 的 C 字符串。其中k是常量表达式。只有结尾是'\0'(空字符)时才可以用作字符串,否则就是普通的字符数组。string s_cpp:这是 C++ 字符串,在<string>头文件中(或者直接用万能头文件<bits/stdc++.h>)。
读入:
本题读单词最好用 scanf("%s", s_c) 或 cin >> s_cpp。
输出:
用 puts(s_c)(会输换行) 或 cout << s_cpp << endl。
示例代码:
C++:
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
while(cin >> s) // 一直读入单词直到文件末尾
{
reverse(s.begin(), s.end()); // STL 大法好!
cout << s << endl;
}
return 0;
}
C:
这里用到了 strlen 函数,用来求字符串长度。它在 <string.h> 头文件中。
#include <stdio.h>
#include <string.h> // 用了 strlen
int main()
{
char s[101]; // 注意数据范围!要给空字符留下位置(说不定整个句子就一个单词呢)
while(~scanf("%s", s)) // 不加 &!
{ // 多组数据读入固定格式
for(int i = strlen(s)-1; i >= 0; --i)
putchar(s[i]); // 输出字符
/* 其实不用真正翻转,倒着输出就可以了 */
putchar('\n');
}
return 0;
}