本题目要求编写程序,输入一行字符,将每个单词的首字母改为大写后输出。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
输入格式:
输入给出一行字符。
输出格式:
在一行中输出已输入的字符,其中所有单词的首字母已改为大写。
输入样例:
How are you?
输出样例:
How Are You?
代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
AC代码:
#include <iostream>
#include <cctype> // 包含用于字符处理的头文件
using namespace std;
int main() {
string line;
getline(cin,line);
bool newword = true;
for(char& c : line){
if(newword && isalpha(c)){
c = toupper(c);
newword = false;
}else if(c == ' '){
newword = true;
}
}
cout<<line<<endl;
return 0;
}
注意:
char c : line
和 char& c : line
在 C++ 中有很大的不同。
-
char c : line
:这是错误的写法,应该是char c;
或者char c = line;
。这表示声明一个char
类型的变量c
,如果是第二种写法,它会被初始化为line
字符串的第一个字符。但这不是用来遍历字符串的正确方法。 -
char& c : line
:这是一种正确的写法,表示c
是一个引用,引用到line
字符串中的每个字符。这样的写法可以直接修改line
中的字符,例如在代码中修改首字母为大写。
在前面的代码示例中,我们使用的是 char& c : line
,这允许我们通过引用来修改字符串中的字符,以达到将单词首字母改为大写的目的。这是正确的遍历和修改字符串的方法。