题解 | #字符串合并处理#

字符串合并处理

https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f

#include <stdio.h>
#include <string.h>

int printStr(int n[])
{
    int num = 0;
    for (int i = 3; i >= 0; i--)
    {
        num = 2 * num + n[i];
    }

    if (num >= 0 && num <= 9)
    {
        printf("%d", num);
    }
    else if (num >= 10 && num <= 15) {
        printf("%c", num + 55);
    }
    else {
        printf("错误数据");

    }
    return 0;
}


int exChange16(char str)
{
    int num=0;
    int n[4];
    if (str >= '0' && str <= '9')
    {
        num = (int)str - 48;
    }
    else if (str >= 'a' && str <= 'z')
    {
        num = (int)str - 97 + 10;
    }
    else if (str >= 'A' && str <= 'Z')
    {
        num = (int)str - 65 + 10;
    }
    int j = 3;
    for (int i = 0; i < 4; i++)
    {
        n[j] = num % 2;
        num = num / 2;
        j--;
    }
    printStr(n);
    return 0;
}



int main() {
    char str1[101] = { 0 };
    char str2[101] = { 0 };
  
  //注意 这里用gets(str1);gets(str2);会发生错误  不知道为什么  但是visual上不会
    scanf("%s",str1);
    scanf("%s",str2);

    int len1 = strlen(str1);
    int len2 = strlen(str2);


    // 第一步
    char allstr[201] = { 0 };
    for (int i = 0; i < len1; i++)
    {
        allstr[i] = str1[i];
    }
    for (int i = 0; i < len2; i++) 
    {
        allstr[i + len1] = str2[i];
    }

    int len = strlen(allstr);
    //第二步 排序
    for (int i = 0; i < len; i = i + 2)
    {
        for (int j = i; j < len; j = j + 2)
            if (allstr[i] > allstr[j])
            {
                char temp = allstr[i];
                allstr[i] = allstr[j];
                allstr[j] = temp;
            }
    }

    for (int i = 1; i < len; i = i + 2)
    {
        for (int j = i; j < len; j = j + 2)
            if (allstr[i] > allstr[j])
            {
                char temp = allstr[i];
                allstr[i] = allstr[j];
                allstr[j] = temp;
            }
    }
    //第三步
    for (int i = 0; i < len; i++)
    {
        if ((allstr[i] <= '9' && allstr[i] >= '0') || (allstr[i] >= 'a' && allstr[i] <= 'f') || (allstr[i] >= 'A' && allstr[i] <= 'F'))
        {
            //printf("&&&&&&");
            exChange16(allstr[i]);
        }
        else {
            printf("%c", allstr[i]);
        }

    }
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务