题目描述
对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。
在字符串中,单词之间通过空白符分隔,空白符包括:空格(' ')、制表符('\t')、回车符('\r')、换行符('\n')。
输入
输入一行:待处理的字符串(长度小于100)。
输出
可能有多组测试数据,对于每组数据,
输出一行:转换后的字符串。
样例输入
if so, you already have a google account. you can sign in on the right.
样例输出
If So, You Already Have A Google Account. You Can Sign In On The Right.
思路:
通过gets读入一整行字符,运用二维数组进行存储,通过空白符将单词分开放置;
通过判断每个单词首字母,进行大小写改写;B1009与之类似;
代码如下:
#include <cstdio>
#include <cstring>
int main()
{
char data[100];
while (gets (data)) {
char ans[100][100] = {};
int len = strlen (data), row = 0, col = 0;
for (int i = 0; i < len; i++) {
if ( data[i] != ' ' && data[i] != '\t' && data[i] != '\r' && data[i] != '\n') {
ans[row][col++] = data[i];
}
else {
ans[row++][col] = '\0'; //遇到空白符认为单词结束;
col = 0;
}
}
for (int i = 0; i <= row; i++) { //对首字母修正;
if (ans[i][0] >= 'a') {
ans[i][0] = ans[i][0] - 32;
}
}
for (int i = 0; i <= row; i++) { //顺序输出;
printf ("%s", ans[i]);
if (i < row) printf (" ");
else printf ("\n");
}
}
return 0;
}