借鉴出处:https://blog.csdn.net/always2015/article/details/45364713
题目: http://acm.hdu.edu.cn/showproblem.php?pid=1062
个人问题:只懂单个整数的输入输出,但是对于字符串的了解太少,基本不会,记了就忘....缺乏练习和基础知识
大神代码:
#include<stdio.h> #include<string> #include<iostream> using namespace std; int main(){ int t,length,count=0; string input_str; cin>>t; getchar(); for(int i=0;i<t;i++){ getline(cin,input_str);//将字符串存储到string里 length=input_str.size();//获取字符串长度 input_str[length]=' ';//在字符串最后加一个空字符,在后面做结尾判断 for(int j=0;j<=length;j++){ if(input_str[j]!=' ') ++count; else{ for(int k=j-1;k>=j-count;k--) cout<<input_str[k]; if(j!=length) cout<<" "; count=0; } } cout<<endl; } return 0; }
自己根据上面代码自己码的代码:
大致具体的意思可以理解,但是有的地方容易出错
#include<iostream> #include<string> #include<cstdio> using namespace std; int main(){ int N,count=0; string str; cin>>N; getchar();//容纳‘\n’; while(N--){ getline(cin,str); int length=str.size(); str[length]=' '; for(int i=0;i<=length;i++){ //不要写成 i<length if(str[i]!=' ') count++; else{ for(int j=i-1;j>=i-count;j--) cout<<str[j]; if(i!=length) cout<<" "; count=0; } } cout<<endl; } return 0; }
大神分析:
这一道题不是很难,主要在于注意字符串的存取方式就成功了一大半,再者就是如何读取单个单词然后反向输出这也是关键。在输入字符串的时候我用到了getline()函数,这个函数的参数是一个输入和一个string对象,函数从给定的输入流中读入内容知道遇到换行符为止(注意换行符也被读进来了),然后把所有的内容都读入到那个string对象里面去(注意不存换行符),getline()只要遇到换行符就结束读取操作并返回结果,哪怕一开始就输入的是换行符也是如此。如果一开始输入的是换行符吗,那么所得的结果就是一个空串string