题解 | #字符串排序#C语言#硬算#用sprintf和strcmp简化程序

字符串排序

http://www.nowcoder.com/practice/5af18ba2eb45443aa91a11e848aa6723

#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{

    char in[1000][200]={0};
    int sig[1000]={0};
    int a;
    scanf("%d",&a);
    int i,j,k,len;
    for(i=0;i<a;i++)
    {
        int p=0;
        scanf("%s",in[i]);
        len = strlen(in[i]);
        for(j=0;j<len&&j<8;j++)
        {
            if(in[i][j]>=97)
            {
                p=p+(in[i][j]-'a'+36)*pow(72,4-j);
            }
            else
            {
                p=p+(in[i][j]-'A')*pow(72,4-j);
            }

        }
        sig[i]=p;
    }
    char h[200]={0};
    for(i=0;i<a-1;i++)
    {
        for(j=0;j<a-i-1;j++)
        {
            if(sig[j]>sig[j+1])
            {
                k=sig[j];
                sig[j]=sig[j+1];
                sig[j+1]=k;
                memcpy(h,in[j],100);
                memcpy(in[j], in[j+1], 100);
                memcpy(in[j+1], h, 100);
            }
        }
    }
    for(i=0;i<a;i++)
    {
        printf("%s\n",in[i]);
    }
    return 0;
}
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{

    char in[1000][200]={0};
    int a;
    scanf("%d",&a);
    int i,j,k,len;
    for(i=0;i<a;i++)
    {
        scanf("%s",in[i]);
    }
    char h[200]={0};
    for(i=0;i<a-1;i++)
    {
        for(j=0;j<a-i-1;j++)
        {
            if(strcmp(in[j],in[j+1])>0)
            {
                sprintf(h, "%s", in[j+1]);
                sprintf(in[j+1], "%s", in[j]);
                sprintf(in[j], "%s", h);
            }
        }
    }
    for(i=0;i<a;i++)
    {
        printf("%s\n",in[i]);
    }
    return 0;
}
全部评论

相关推荐

10-15 03:05
门头沟学院 Java
CADILLAC_:凯文:我的邮箱是死了吗?
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务