编排字符串 题目来源:牛客网
知识点:字符串的输入输出;容器stack的使用
题目描述
请输入字符串,最多输出4 个字符串,要求后输入的字符串排在前面,例如
输入:EricZ
输出:1=EricZ
输入:David
输出:1=David 2=EricZ
输入:Peter
输出:1=Peter 2=David 3=EricZ
输入:Alan
输出:1=Alan 2=Peter 3=David 4=EricZ
输入:Jane
输出:1=Jane 2=Alan 3=Peter 4=David
输入描述:
第一行为字符串个数m,接下来m行每行一个字符床,m不超过100,每个字符床长度不超过20。
输出描述:
输出m行,每行按照样例格式输出,注意用一个空格隔开。
题目分析:
(1)定义字符串数组,char a[100][20];
(2)设置变量使其最多输出4个字符串;
(3)后输入的字符排在前面;可以用变量控制,也可以考虑用栈;
代码:
方法一:
#include<iostream>
#include<string>
#include<string.h>
using namespace std;
int main(){
int m;
while(scanf("%d",&m)!=EOF){
char x[100][20];
int i,j,tmp;
for(i=0;i<m;i++){
scanf("%s",&x[i]);
for(j=i,tmp=1;tmp<=4&&j>=0;tmp++,j--){
printf("%d=%s ",tmp,x[j]);
}
printf("\n");
}
}
return 0;
}
代码分析:
(1)本题中字符串的输入输出以及定义;
(2)for循环输出,tmp保证最多输出4个,j=i j--保证后输入的先输出
for(j=i,tmp=1;tmp<=4&&j>=0;tmp++,j--){
printf("%d=%s ",tmp,x[j]);
}
方法二 : 用栈
#include <bits/stdc++.h>
using namespace std;
void printstack(stack <string> s){
int i=4;
while(i--){
if(s.empty()) break;
else cout<<4-i<<"="<<s.top()<<" ";
s.pop();
}
cout<<endl;
}
int main(){
int m;
while(cin>>m){
stack<string>s;
string str;
while(m--){
cin>>str;
s.push(str);
printstack(s);
}
}
return 0;
}
代码分析:
(1)使用STL容器stack;