题解 | #字符串排序#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;
}
全部评论

相关推荐

11-27 17:35
已编辑
蚌埠坦克学院 C++
深信服 后台开发 n×12
点赞 评论 收藏
分享
11-18 15:57
门头沟学院 Java
最终归宿是测开:这个重邮的大佬在重邮很有名的,他就喜欢打92的脸,越有人质疑他,他越觉得爽😂
点赞 评论 收藏
分享
斑驳不同:还为啥暴躁 假的不骂你骂谁啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务