算法笔记字符串处理问题H:编排字符串(2064)

题目描述

请输入字符串,最多输入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行,每行按照样例格式输出,注意用一个空格隔开。

样例输入

5
EricZ
David
Peter
Alan
Jane

样例输出

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

思路:字符串数组逆序输出的问题,用二维字符数组表示一个字符串数组。注意点是只需要输出四个,输入第i(假设i大于4)个字符串后,一次输出的分别是s[i - 0],s[i-1],s[i-2],s[i-3]。按照题目要求的1=s[i - j]的格式输出。用变量first表示是否是第一个,若不是第一个,输出字符串之前要先输出一个空格。

下面是C语言代码。

#include<stdio.h>
#include<string.h>
int main()
{
    int n,first,index;
    char str[100][100];
    while(scanf("%d",&n) != EOF){
        for(int i = 0;i < n;i++){
            scanf("%s",str[i]);
            first = 0;
            if(i < 3)
                index = i + 1;
            else
                index = 4;
            for(int j = 0;j < index;j++){
                if(first)
                    printf(" ");
                first = 1;
                printf("%d=%s",j+1,str[i-j]);
            }
            printf("\n");
        }
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/maximusyoung/p/10753545.html