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

相关推荐

宇算唯航:目测实缴资本不超100W的小公司
点赞 评论 收藏
分享
那一天的Java_J...:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务