舟桥居士 2021-11-01 18:53 采纳率: 100%
浏览 21
已结题

向数组中插入一个元素并输出,得不出结果,在主函数中加一条输出语句就能得出正确结果

1118: 数列有序
题目描述:一个非递减有序的整型数组有n个元素,给定一个整数num,将num插入该序列的适当位置,使序列仍保持非递减有序。
要求定义一个函数insert(),将整数num插入在数组a的适当位置上,函数原型如下:
int insert(int a[], int n, int num);
另外函数仍然调用以前定义过的函数PrintArr()输出数组所有元素。
输入:输入有三行。第一行是一个正整数n,n<=1000。第二行是n个整数,第三行是待插入整数num。
输出:输出非递减有序的n+1个整数,数据之间用空格隔开。输出占一行。
样例输入
5
1 2 4 5 6
3
样例输出
1 2 3 4 5 6
提示:元素之间有空格,最后一个元素后面没有空格。
思路:根据输入的n创建动态数组,为动态数组赋值,输入要插入的元素num,调用insert函数找到插入位置num,插入insert,调用PrintArr函数输出数组元素。
1.没有结果的做法
代码如下


#include <stdio.h>
#include <stdlib.h>
int insert(int a[], int n, int num){
    int i=0,j=n;
    while(i<n&&a[i]<num) i++;//查找插入位置,从0位到第n位,插入位置之前元素都小于num; 
    while(j>=i) {//从后往前移,直到移完第i位;
        a[j+1]=a[j];
        j--; 
    }
    a[i]=num;//插入元素; 

}
int PrintArr(int a[],int n){
    for(int i=0;i<n;i++){
        printf(" %d",a[i]);//逐个输出元素; 
    }
}
int main(){
    int *a,n,i,num;
    scanf("%d",&n);
    a=(int *)calloc(n+1,sizeof(int));//为a申请数组空间,为方便插入多申请一个整型空间 ;
    for(i=0;i<n;i++){//为数组赋值;
        scanf("%d",a+i);
    } 
    scanf("%d",&num);//输入要插入的整数; 
    insert(a,n,num);//调用插入函数;参数为数组首地址,数组中元素个数,要插入的元素; 
    PrintArr(a,n+1);//输出数组中n+1个元素 
    free(a);
}

运行结果

img

2.可以得到结果的情况
代码如下


#include <stdio.h>
#include <stdlib.h>
int insert(int a[], int n, int num){
    int i=0,j=n;
    while(i<n&&a[i]<num) i++;//查找插入位置,从0位到第n位,插入位置之前元素都小于num; 
    while(j>=i) {//从后往前移,直到移完第i位;
        a[j+1]=a[j];
        j--; 
    }
    a[i]=num;//插入元素; 

}
int PrintArr(int a[],int n){
    for(int i=0;i<n;i++){
        printf(" %d",a[i]);//逐个输出元素; 
    }
}
int main(){
    int *a,n,i,num;
    scanf("%d",&n);
    a=(int *)calloc(n+1,sizeof(int));//为a申请数组空间,为方便插入多申请一个整型空间 ;
    for(i=0;i<n;i++){//为数组赋值;
        scanf("%d",a+i);
    } 
    for(int i=0;i<n;i++){
        printf("%d ",a[i]);//逐个输出元素; 
    }
    printf("\n"); 
    scanf("%d",&num);//输入要插入的整数; 
    insert(a,n,num);//调用插入函数;参数为数组首地址,数组中元素个数,要插入的元素; 
    PrintArr(a,n+1);//输出数组中n+1个元素 
    free(a);
}

** 运行结果:**

img

我存在什么问题,是有什么地方没有掌握到位吗?

  • 写回答

1条回答 默认 最新

  • 舟桥居士 2021-11-01 19:13
    关注

    这是用DEVC++做的结果,我把没有结果的代码复制到pellesc上就得出正确结果了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月10日
  • 已采纳回答 11月2日
  • 创建了问题 11月1日

悬赏问题

  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答