问题 H: 编排字符串
[命题人 : 外部导入]
时间限制 : 1.000 sec 内存限制 : 32 MB
题目描述
请输入字符串,最多输入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行,每行按照样例格式输出,注意用一个空格隔开。
样例输入 Copy
5 EricZ David Peter Alan Jane
样例输出 Copy
1=EricZ 1=David 2=EricZ 1=Peter 2=David 3=EricZ 1=Alan 2=Peter 3=David 4=EricZ 1=Jane 2=Alan 3=Peter 4=David
提示
代码:
#include<cstdio>
#include<cstring>
const int maxn=210;
/*
思路:字符串数组逆序输出的问题,用二维字符数组表示一个字符串数组。
注意点是只需要输出四个,输入第i(假设i大于4)个字符串后,一次输出的分别是s[i - 0],s[i-1],s[i-2],s[i-3]。按照题目要求的1=s[i - j]的格式输出。
用变量first表示是否是第一个,若不是第一个,输出字符串之前要先输出一个空格。
*/
int main(){
char str[maxn][maxn];
int n,size;
int i,j;
int first;
while(~scanf("%d",&n)){
for(i=0;i<n;i++){
scanf("%s",str[i]);
first=0;
if(i<3) size=i+1;//size表示存入几个字符串
else size=4;
for( j=0;j<size;j++){
if(first==1) {
printf(" ");
}//first=1表示先输出一个空格
first=1;
printf("%d=%s",j+1,str[i-j]);
}
printf("\n");
}
}
return 0;
}