杀入巅峰 2023-09-14 09:11 采纳率: 77.8%
浏览 3
已结题

在有序表中插入两个数相关问题


#include<stdio.h>
int main()
{
    int flag = 0;
    int x, y, i, j, n;
    int a[100] = {0};
    
    scanf("%d", &n);
    for(i=0; i<n; i++)
    {
        scanf("%d", &a[i]);
    }
    scanf("%d %d", &x, &y);

//将x y 有序插入到数组a中
/***********Begin***********/
   int t =0;
    t = x;
    while(flag != 2)
    {
        for(j=0;j<n;j++)
        {   
            if(t > a[n-1])
            {
                a[n] = t;
            }
            if(t == a[j]) 
            {
                break;
            }

            if(t < a[j])      
            {   
                
                for (int k = n;k > j; k--)
                {
                    a[k] = a[k-1];
                }
                a[j] = t;
                n++;
                break;             
            }
        }
        flag++;
        if(flag == 1)
        {
            t = y;
        }
    }
    
/************End************/ 

    for(i=0; i<n; i++)
    {
        printf("%d ", a[i]);
    }
    return 0;
}

测试输入:
2
4 6
8 13
—— 预期输出 ——
4 6 8 13
—— 实际输出 ——
4 6

求指点

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2023-09-14 10:14
    关注

    修改如下,改动处见注释,供参考:

    #include<stdio.h>
    int main()
    {
        int flag = 0;
        int x, y, i, j, n;
        int a[100] = { 0 };
    
        scanf("%d", &n);
        for (i = 0; i < n; i++)
        {
            scanf("%d", &a[i]);
        }
        scanf("%d %d", &x, &y);
    
        //将x y 有序插入到数组a中
        /***********Begin***********/
        int t = 0, k;
        t = x;
        while (flag != 2)
        {
            //for (j = 0; j < n; j++) 修改
            //{
                if (t > a[n - 1])
                {
                    a[n] = t;
                }
                //if (t == a[j])   //修改
                //{
                //    break;
                //}
                else {
                    for (k = n; a[k - 1] > t && k > 0; k--) //修改
                        a[k] = a[k - 1];
                    a[k] = t;
                    //break;
                    //}
                }
                n++;   // 修改
                flag++;
                //if (flag == 1) 修改
                //{
                t = y;
                //}               修改
        }
        /************End************/
    
        for (i = 0; i < n; i++)
        {
            printf("%d ", a[i]);
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月22日
  • 已采纳回答 9月14日
  • 创建了问题 9月14日

悬赏问题

  • ¥40 微信小程序 使用vant组件ActionSheet 下拉面板,内容区域滚动会触发。scroll-view自定义下拉刷!即使设置停止下拉刷新也不行。
  • ¥15 专业问题提问,7月5号2点之前
  • ¥15 使用rml 2016.10a数据集做半监督学习的自动调制识别
  • ¥25 使用cube ai 导入onnx模型时报错
  • ¥15 关于#微信小程序#的问题:用一个网页显示所有关联的微信小程序数据,包括每个小程序的用户访问量
  • ¥15 root的安卓12系统上,如何使apk获得root或者高级别的系统权限?
  • ¥20 关于#matlab#的问题:如果用MATLAB函数delayseq可以对分数延时,但是延时后波形较原波形有幅度上的改变
  • ¥15 使用华为ENSP软件模拟实现该实验拓扑
  • ¥15 通过程序读取主板上报税口的数据
  • ¥15 matlab修改为并行