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();}
}

收获总结

  1. C语言中,循环读入带空字符串使用的是gets()函数,而在C++中,我们可以使用string变量的getline()函数来解决这个问题;
  2. C++中判断String变量是否为空,我们可以使用s.empty()函数;
  3. C++中清空String变量,我们可以使用s.clear()函数;
  4. C++中判断String变量长度,我们可以使用s.length()函数;而在C语言中,我们可以使用strlen()函数;


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部