杭电ACM1062 字符串的输入输出

借鉴出处: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

猜你喜欢

转载自blog.csdn.net/qq_40728285/article/details/80181311
今日推荐