题目1121:首字母大写
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:1720
解决:510
-
题目描述:
-
对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。
在字符串中,单词之间通过空白符分隔,空白符包括:空格(' ')、制表符('\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.
这个题写起代码来没难度,但是我在理解题的时候没有考虑到 类似",,this type ...should be think of." , 不能想当然
#include "stdio.h" #include<string.h> #include <iostream> using namespace std; bool isLow(char c) { if(c>='a'&&c<='z') return true; else return false; } bool isBlank(char c) { if(c==' '||c=='\t'||c=='\r'||c=='\n') return true; else return false; } int main() { char s[100]; bool flag ; int i ; int len; while(gets(s)) { len = strlen(s); flag = false; if(s[0]>='a'&&s[0]<='z') { s[0]=s[0]-32; flag = false; } for(i = 1 ; i<len ; i++) { if(isLow(s[i])&&isBlank(s[i-1])) { s[i]=s[i]-32; } } cout<<s<<endl; } return 0; }