题记(36)--编排字符串(栈的应用)

目录

一、题目内容

二、输入描述

三、输出描述

四、输入输出示例

五、完整C语言代码


一、题目内容

请输入字符串,最多输入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

五、完整C语言代码

AC代码~

#include
#include
typedef struct Str {
    char s[25];  // 存储字符串
} str;


int main() {
    str stack[4]; // 容量为4的栈
    int top = -1; // 栈顶指针
    int m;
    char tmp[25];
    scanf("%d", &m);
    char ch = getchar();
    for (int i = 0; i < m; i++) {
        scanf("%s", tmp);
        if (top != 3) {
            top++;
            strcpy(stack[top].s, tmp);
        } else {  // 淘汰栈底的
            for (int j = 1; j < 4; j++)
                stack[j - 1] = stack[j];
            strcpy(stack[3].s, tmp);
        }        // 打印
        for (int i = top; i >= 0; i--)
            printf("%d=%s ", top + 1 - i, stack[i].s);
        printf("\n");
    }

    return 0;
}

你可能感兴趣的:(c语言)