这个代码哪里出现了问题,希望可以讲详细一点

img


#include<stdio.h>
int b[100000];
int main()
{
    int a,j=0,i;
    scanf("%d",&a);
    while(1)
    {
        if(a==1)
        break;
        else
        {
            if(a%2==0)
            {
                a=a/2;
            }
            else
            {
                a=a*3+1;
            }
        }
        a=b[j];
        j++;
    }
    for(i=j-1;i>=0;i--)
    {
        printf("%d ",b[i]); 
    }
    return 0;
     
}

img


 
#include<stdio.h>
int b[100000];
int main()
{
    int a,j=0,i;
    scanf("%d",&a);
    while(1)
    {
        if(a==1)
        break;
        else
        {
            if(a%2==0)
            {
                a=a/2;
            }
            else
            {
                a=a*3+1;
            }
        }
        b[j]=a;//这里出错了
        j++;
    }
    for(i=j-1;i>=0;i--)
    {
        printf("%d ",b[i]); 
    }
    return 0;
     
}

修改如下,供参考:

#include<stdio.h>
int b[100000];
int main()
{
    int a, j = 0, i;
    scanf("%d", &a);
    while (1)
    {
        if (a == 1) {
            b[j++] = a;
            break;
        }
        else
        {
            b[j++] = a;
            if (a % 2 == 0)
            {
                a = a / 2;
            }
            else
            {
                a = a * 3 + 1;
            }
        }
    }
    for (i = j - 1; i >= 0; i--)
    {
        printf("%d ", b[i]);
    }
    return 0;
}