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

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

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 11:13
    关注

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

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

报告相同问题?

问题事件

  • 系统已结题 11月9日
  • 已采纳回答 11月2日
  • 创建了问题 11月1日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部