单词排序(字符串函数总结)

版权声明:侵删 [email protected] https://blog.csdn.net/weixin_43350051/article/details/85029056

                                               问题 D: 单词排序(点击)

                                                              时间限制: 1 Sec  内存限制: 128 MB
                                                                         提交: 448  解决: 155
                                                              [提交] [状态] [讨论版] [命题人:admin]

题目描述

小红学会了很多英语单词,妈妈为了帮小红加强记忆,拿出纸、笔,把n个单词写在纸上的一行里,让小红看几秒钟后,将这张纸扣在桌子上。妈妈问小红:你能否将这些n个单词按照字典排列的顺序,从小到大写出来?小红按照妈妈的要求写出了答案。现在请你编写程序帮助妈妈检查小红的答案是否正确。注意:所有单词都由小写字母组成,开头字母全都不同,单词两两之间用一个空格分隔。

输入

有两行:第一行仅包含一个正整数n(0<n<27)第二行包含n个单词,表示妈妈写出的单词,两两之间用一个空格分隔。
单个单词长度不超过10。

输出

仅有一行:针对妈妈写出的单词,按照字典排列的顺序从小到大排成一行的结果,单词两两之间用一个空格分隔。 

样例输入

复制样例数据

4
city boy tree student

样例输出

boy city student tree

思路:

    开始把这个问题想复杂了没注意到所有单词开头都不同 但正因为想复杂了 让我想到了曾经问过学长的strcmp函数(字典序比较)

加上冒泡就把这个问题解决了。

代码:

#include<stdio.h>
#include<string.h>           //要加上字符串函数头文件
int main()
{
    int n,i,j;
    char a[35][15],temp[15];       //数组别开那麽大 刚才同学就是因为开大了总是错误
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%s",a[i]);           //使用二维数组会更方便  不然长度确实是不好确定
    }
    for(i=0;i<n-1;i++){
        for(j=0;j<n-i-1;j++){        //冒泡+strcmp函数+strcpy函数的完美组合(还没试结构体排序)
            if(strcmp(a[j],a[j+1])>0){
                strcpy(temp,a[j]);
                strcpy(a[j],a[j+1]);      //函数中出现的都是地址 千万不要把整个数组放进去
                strcpy(a[j+1],temp);
            }
        }
    }
    for(i=0;i<n;i++){
        printf(i==n-1?"%s\n":"%s ",a[i]);    //输出保证最后一位后面没有空格
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43350051/article/details/85029056