做题背景:
- 做题--暑假告急
- 从今天开始每天一道题发到CSDN上(加油!加油!加油!)
问题分析:
- 利用STL里的栈实现(或直接用数组实现一个栈)
- 首先读懂题目,是翻转了每一个单词,而非翻转句子
- 注意往数组中存储数据时,下标的处理
- 出栈的条件是遇到空格
代码:
#include<iostream>
#include<stack>
using namespace std;
int main()
{
int n;
char c,k;
stack<char>st;
char ch[1000];
int len=0;
//数据个数
scanf("%d",&n);
//读回车符
scanf("%c",&k);
while(n--)
{
len=0;
while(true)
{
scanf("%c",&c);
//换行就跳出循环
if(c=='\n')
{
int length = len + st.size();
for(int i=len;i<(length);i++)
{
ch[i]=st.top();
st.pop();
}
len=length;
break;
}
//遇到空格就出栈放到数组中
else if(c==' ')
{
int length = len+st.size();
for(int i=len;i<(length);i++)
{
ch[i]=st.top();
st.pop();
}
ch[length]=' ';
len =length+1;
}
//不是就入栈
else
{
st.push(c);
}
}
//输出数组中的内容
for(int i=0;i<len;i++)
printf("%c",ch[i]);
printf("\n");
}
return 0;
}