P1249-首字母大写
P1249-首字母大写
Description
输入一个英文句子,将每个单词的第一个字母改成大写字母。
Input
输入数据包含多个测试实例,每个测试实例是一个长度不超过100的英文句子,占一行。
Output
请输出按照要求改写后的英文句子。
Sample
Input
i like acm
i want to get an accepted
Output
I Like Acm
I Want To Get An Accepted
思路概况
这是一道比较典型的字符串问题,着重考虑题目中的细节问题
- 单个字符出现在段中如何解决
- 首字符原本就是大写如何解决
除此之外,由于是除此涉及算法题目,通过这道题,我们也可以学习到
- C++ String变量的输入输出
- C++ String变量的判空和置空
代码编写
ASCII码解题
#include
int main(){char s[100];while(gets(s)){int len = strlen(s);if(s[0]!=' '||s[0]!='\n'||s[0]!='\t')s[0]=s[0]-32;for(int i=1;i<len;i++){ int flag=0;if(s[i]>='a'&&s[i]<='z')flag=1;if((s[i-1]==' '||s[i-1]=='\t'||s[i-1]=='\n')&&(s[i+1]!=' '||s[i+1]!='\n'||s[i+1]!='\t')&&flag){s[i]=s[i]-32;}else if(i!=len&&(s[i-1]==' '||s[i-1]=='\t'||s[i-1]=='\n')&&(s[i]!=' '||s[i]!='\n'||s[i]!='\t')&&flag){s[i]=s[i]-32;}}for(int i=0;i<len;i++){printf("%c",s[i]); }printf("\n");}return 0;
}
String变量解题
#include
using namespace std;
//字符串解决首字母大写问题
int main(){string s;while(getline(cin,s)){if(s[0]==' '||s[0]=='\n'||s[0]=='\t'||s.empty())break;int len=s.length();if(s[0]!=' '||s[0]!='\n'||s[0]!='\t')s[0]=s[0]-32;for(int i=1;i<len;i++){ int flag=0;if(s[i]>='a'&&s[i]<='z')flag=1;if((s[i-1]==' '||s[i-1]=='\t'||s[i-1]=='\n')&&(s[i+1]!=' '||s[i+1]!='\n'||s[i+1]!='\t')&&flag){s[i]=s[i]-32;}else if(i!=len&&(s[i-1]==' '||s[i-1]=='\t'||s[i-1]=='\n')&&(s[i]!=' '||s[i]!='\n'||s[i]!='\t')&&flag){s[i]=s[i]-32;}}cout<<s<<endl;s.clear();}
}
收获总结
- C语言中,循环读入带空字符串使用的是gets()函数,而在C++中,我们可以使用string变量的getline()函数来解决这个问题;
- C++中判断String变量是否为空,我们可以使用s.empty()函数;
- C++中清空String变量,我们可以使用s.clear()函数;
- C++中判断String变量长度,我们可以使用s.length()函数;而在C语言中,我们可以使用strlen()函数;
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
