一维数组与多重循环问题

#include <stdio.h>
int main()
{ int i,k,j,t,n=3;
int x[10]={1,5,7}, y[3]={9,6,5};
for(k=0;k<3;k++)
{ for(i=0;i<n;i++)if(y[k]<=x[i])break;
if(i<n)
{ if(y[k]!=x[i])
{ for(j=n-1;j>=i;j--)
{ t=x[j+1];x[j+1]=x[j];x[j]=t; }
x[i]=y[k];
n++;
}
}
else
{ x[n]=y[k];
n++;
}
}
for(i=0;i<n;i++)printf("%2d",*(x+i));
}
这个程序怎么看啊 好多个括号 能帮忙把整个程序解释一下吗🥺

注意书写规范就好看一些,实际上就是把y中所有不等于x中的元素按照从小到大的顺序插入x中。

img

代码:

#include <stdio.h>
int main()
{
    int i, k, j, t, n = 3;
    int x[10] = { 1,5,7 }, y[3] = { 9,6,5 };
    for (k = 0; k < 3; k++) 
    {
        for (i = 0; i < n; i++) //判断x中的元素是否比y[k]小或者相等,如果是,返回i的位置
            if (y[k] <= x[i])
                break;

        if (i < n)
        {
            if (y[k] != x[i])
            {
                for (j = n - 1; j >= i; j--) //这个地方实际是把x的元素后移一位
                {
                    t = x[j + 1]; 
                    x[j + 1] = x[j]; 
                    x[j] = t;
                }
                x[i] = y[k]; //把y[k]插入x[i]位置
                n++;
            }
        }
        else
        {
            x[n] = y[k]; //把y中大于所有x中元素的值插入x中
            n++;
        }
    }
    //输出x中的所有元素
    for (i = 0; i < n; i++)
        printf("%2d", *(x + i));
}

你可以先利用编辑器自动排版

编码注意编程规范,可以百度找一些看一看

#include <stdio.h>
int main()
{ 
    int i,k,j,t,n=3;
    int x[10]={1,5,7}, y[3]={9,6,5};
    for(k=0;k<3;k++)
    { 
        for(i=0;i<n;i++)
            if(y[k]<=x[i])
                break;
        if(i<n)
        { 
            if(y[k]!=x[i])
            { 
                for(j=n-1;j>=i;j--)
                { 
                    t=x[j+1];
                    x[j+1]=x[j];
                    x[j]=t; 
                }
                x[i]=y[k];
                n++;
            }
        }
        else{
            x[n]=y[k];
            n++;
        }
    }
    for(i=0;i<n;i++)
        printf("%2d",*(x+i));
}