笨笨孩子 2022-05-24 10:53 采纳率: 72.5%
浏览 28
已结题

一维数组与多重循环问题

#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));
}
这个程序怎么看啊 好多个括号 能帮忙把整个程序解释一下吗🥺

  • 写回答

3条回答 默认 最新

  • qfl_sdu 2022-05-24 11:03
    关注

    注意书写规范就好看一些,实际上就是把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));
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月1日
  • 已采纳回答 5月24日
  • 创建了问题 5月24日

悬赏问题

  • ¥15 ogg dd trandata 报错
  • ¥15 高缺失率数据如何选择填充方式
  • ¥50 potsgresql15备份问题
  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错