༄༊࿆水下月ོྂཾ࿆࿐ 2022-11-20 12:09 采纳率: 98%
浏览 496
已结题

将数字按序插入数组(要求指针做法)

这是题目
有10-90这9个整数,已按升序存放于长度为10的一维数组中。要求将一整数35插入其中,并保持数组元素仍然有序。
输入说明:
整数35插入其中后
输出示例:
10 20 30 35 40 50 60 70 80 90
我的代码:

#include <stdio.h>
int main()
{
    int *p,a=35,i=0,t,n,j;
    int m[10]={10,20,30,40,50,60,70,80,90};
    p=&a;
    while(i<9)
    {
        if(*p>*(m+i))
        {
        i++;
        if(*p>*(m+8))
        *(m+9)=*p;
        }
        else if(*p<*(m+i))
        {
            *(m+i)=*p;
            for(j=8;j>i;j--)
            {
                t=*(m+j);
                *(m+j+1)=*(m+j);
            }
            break;
        }
    }
    for(i=0;i<10;i++)
    printf("%d ",*(m+i));
    return 0;
}

运行结果:

img


我知道i已经被赋值为4,怎样让if语句里的i变回3,才能输入40?
可以以我的基础改一下吗?

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-11-20 15:30
    关注

    供参考:

    //升序序列
    #include<stdio.h>
    #define N 10
    int main()
    {
        int n = 9, m, i, a[N]={10,20,30,40,50,60,70,80,90};
    
        //scanf("%d", &n);        //n:有序数列的个数
        //for (i = 0; i < n; i++) // 输入n个有序数列元素
        //    scanf("%d", &a[i]);
    
        scanf("%d", &m);       //m:待插入的数
    
        if (m > a[n - 1]) {    //插入操作
            a[n] = m;
        }
        else {
            for (i = n; m < a[i - 1] && i > 0; i--) {
                a[i] = a[i - 1];
            }
            a[i] = m;
        }
    
        for (i = 0; i < n + 1; i++)//输出 插入数 m 后的有序数列
            printf("%4d", a[i]);
        printf("\n");
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月26日
  • 已采纳回答 11月26日
  • 修改了问题 11月20日
  • 修改了问题 11月20日
  • 展开全部

悬赏问题

  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?