当前位置:编程学习 > C/C++ >>

一道关于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用法

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,