将输入的两个字符串连接后,将串中全部空格移到串首后输出。

如题将输入的两个字符串连接后,将串中全部空格移到串首后输出。

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

int main()
{
    char s1[100], s2[100], result[200];
    int i, j;

    //获取两个字符串的输入
    printf("输入第一个字符串:");
    fgets(s1, sizeof(s1), stdin);
    printf("输入第二个字符串:");
    fgets(s2, sizeof(s2), stdin);

    //将两个字符串连接到一个字符串中
    strcpy(result, s1);
    strcat(result, s2);

    //将空格移到字符串首
    for (i = 0; result[i] == ' '; i++) 
    {
        for (j = i; j < strlen(result); j++) 
        {
            result[j] = result[j+1];
        }
        result[strlen(result)] = ' ';
    }

    //输出结果
    printf("连接后的字符串并移动空格:%s", result);

    return 0;
}

供参考:

#include <stdio.h>
#include <string.h>
int main()
{
    char s1[100], s2[100], res[200];
    int i, j;

    printf("第一个字符串:");
    gets(s1);
    printf("第二个字符串:");
    gets(s2);
    //将两个字符串连接到一个字符串中
    strcpy(res, s1);
    strcat(res, s2);
    for (i = 0; i < strlen(res); i++)
    {
        for (j = 0; j < strlen(res) - i; j++)
        {
            if (j && res[j] == ' ') {
                char ch = res[j];
                res[j]  = res[j - 1];
                res[j - 1] = ch;
            }
        }
    }
    printf("全部空格移到串首后输出:%s", res);
    return 0;
}

冒泡的写法:

#include <stdio.h>
#include <string.h>
int main()
{
    char s1[100], s2[100], res[200];
    int i, j;

    printf("第一个字符串:");
    gets(s1);
    printf("第二个字符串:");
    gets(s2);
    //将两个字符串连接到一个字符串中
    strcpy(res, s1);
    strcat(res, s2);
    for (i = 0; i < strlen(res) - 1; i++)
    {
        for (j = 0; j < strlen(res) - i - 1; j++)
        {
            if (res[j] != ' ' && res[j+1] == ' '){
                char ch = res[j];
                res[j]  = res[j + 1];
                res[j + 1] = ch;
            }
        }
    }
    printf("全部空格移到串首后输出:%s", res);
    return 0;
}