C++为什么会这样帮看一下

img

img

img

为什么输入图中的 可以正确输出 但是我一随便输出就不了呢 帮我看下


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

int main()
{
    char a[6] = { 0 }, b[6] = {0};
    char res[12] = {0};
    scanf("%s%s",&a,&b);
    int lena = strlen(a);
    int lenb = strlen(b);
    int lenc = lena + lenb;
    int n = lena;
    if (lena>lenb)
    {
        n = lenb;
    }
    if (lena < lenb)
    {

        for (int i = 0; i < 2*n; i += 2)
        {
            int j = i / 2;
            res[i] = b[j];
        }
        for (int i = 1; i < 2 * n; i += 2)
        {
            int j = i / 2;
            res[i] = a[j];
        }
        for (int i = 2*n; i < lenc; i++)
        {
            int j = i-n;
            res[i] = b[j];
        }
        res[lenc] = '\0';
    }
    else
    {

        for (int i = 0; i < 2 * n; i += 2)
        {
            int j = i / 2;
            res[i] = a[j];
        }
        for (int i = 1; i < 2 * n; i += 2)
        {
            int j = i / 2;
            res[i] = b[j];
        }
        for (int i = 2 * n; i < lenc; i++)
        {
            int j = i-n;
            res[i] = a[j];
        }
        res[lenc] = '\0';
    }
    printf("%s",res);
    return 0;
}
#include <stdio.h>
#include <string.h>

int main()
{
    char a[6];
    char b[6];
    scanf("%s", a);
    scanf("%s", b);
    const char *p;
    const char *q;
    if (strlen(a) > strlen(b))
    {
        p = a;
        q = b;
    }
    else
    {
        p = b;
        q = a;
    }
    while (*q)
        printf("%c%c", *p++, *q++);
    while (*p)
        printf("%c", *p++);
    printf("\n");
    return 0;
}