一道关于string的c++编程
我的代码如下~~不知道哪里错了。。。
#include <string>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
string s;
getline(cin, s,'\n' );
if(s[0]>='a'&&s[0]<='z')
{
s[0]-=32;
}
for(int i=1;i<=s.size();i++)
{
if(s[i]==' ')
s[i+1]-=32;
}
for(int j=0;j<s.size();j++)
cout<<s[j];
cout<<endl;
return 0;
}
追问:那我的是为什么错的?
答案:运行截图:
程序:
#include <iostream>
#include <string>
using namespace std;
int main(void){
string s;
getline(cin, s, '\n');
for (size_t i = s.length() - 1; i > 0; --i)
// 如果是小写字母并且前一个字符是空格
if (s.at(i - 1) == 32 && (s.at(i) >= 'a' && s.at(i) <= 'z'))
s.at(i) -= 'a' - 'A';
// 首字母大写
if (s.at(0) >= 'a' && s.at(0) <= 'z')
s.at(0) -= 'a' - 'A';
cout << s << endl;
system("PAUSE>NUL");
return 0;
}
getline(cin, s,'\n' ); 改为: cin>>s;
acm的题目你那样的输入格式是不行的。你要多一次回车。
你换一个看看:
#include <string>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
char str[1000];
gets(str);
string s(str);
if(s[0]>='a'&&s[0]<='z')
{
s[0]-=32;
}
for(int i=1;i<=s.size();i++)
{
if(s[i]==' ')
s[i+1]-=32;
}
for(int j=0;j<s.size();j++)
cout<<s[j];
cout<<endl;
return 0;
}
上一个:寻找C++编程创始人书籍
下一个:C++编程中POSITON用法