c++求改正:将一个任意整数插入到一个已排序的整数数组中,插入后数组中的数仍然保持有序。 要用指针

#include<iostream>
using namespace std;
void main( )
{
int i,j,number,*p;
int a[10]={1,5,10,20,50,100,200,300,400,500}; //初始化数组
p=&a[0];
cout<<"输入一个数:";
cin>>number;
cout<<"原数组为:";
for(i=0;i<10;i++) //输出数组原有元素
cout<<*(p+i)<<" ";
cout<<endl;
i=0;
while(*(p+i)<number&&i<10) //找到插入的位置
i++;
for(j=9;j>=i;j--)
*(p+j+1)=*(p+j); //插入位置之后的数全往后移一个
a[i]=number;
cout<<"新数组为:";
for(i=0;i<11;i++)
cout<<*(p+i)<<" ";
cout<<endl;
}
编译没错,执行就停止工作。怎么错了?

你数组只有10个长度, 你要加一个, 当然就越界了呀.
就是这句:
*(p+j+1)=*(p+j);
也就是对*(p + 10)或p[10]进行赋值操作, 能不越界么?
温馨提示:内容为网友见解,仅供参考
无其他回答

C语言实验六实验报告——指针
 2.编程实现:将一个任意整数插入到一个已排序的整数数组中,插入后数组中的数仍然保持有序。要求:(1)整数数组由初始化方式输入。任意整数由scanf函数输入;(2)实现过程采用指针处理;(3)输出原始数组数据以及插入数据后的数组数据并加以相应说明。3.编写函数newcopy(char*new,char*old...

C语言求助,把一个数插入到一个已排好序的数组中
1、可以用下面代码把数插入一个排好序的数组,数组进行迭代取值。2、下面是数组排序的代码,这里是按大小排序的,每次取值和输入的数比较,比输入的数小,就往后移动移位,直到移出输入数该放的位置,反之也是。3、或者用下图的代码实现,有一个已排好序的数组,现在插入一个数字。4、按原来已排好的...

C程序编写,将一个数插入到一个已经有序的数组里,要求保持有序
int i, j, t, k;\/\/定义循环变量 const int n = 10;\/\/定义数组元素个数 int a[n], b[n + 1];\/\/定义两个数组 printf("您喜欢的有序数组:\\n");\/\/输入数组序列文字提 for (i = 0; i < n; i++){ scanf("%d", &a[i]);\/\/循环输入数组元素 } printf("请输入想插入的数...

...整型数组中插入一个数,使得插入后的数组元素仍然有序
\/\/等待输入插入数值 scanf("%d",&x); \/\/找到数值要插入的坐标位置 (从0开始,下标递增查找,满足数组的值<插入的数值,继续查找,找到第一个比插入数值大的数) for(i=0;a[i]<x&&i<N;i++) ;\/\/从第K各开始到第N个数值,倒序赋值,其实就是向后移动一位. for(k=N;k>i;k--) a[k]=a[k-1];...

C++:题目:“有一个已排好序的数组,今输入一个数,要求按原来排序的规律将...
总结:一组数组,直到找到大于或等于输入数的时候,找到插入数的下标,a[i+1]=a意思是将a的值给a[i+1],往后移一个(插入一个数,后面元素依次往后移动一个)方法二、include<stdio.h> void main(){ int data,temp,k;static int a[9]={-10,2,4,8,10,15,25,50};printf("\\nEnter a ...

C语言中,怎样把一个整数按大小顺序插入已经排好序的整形数组中?
\/*整体思路是先将输入的十个数从小到大排列好,然后再将单独输入的数与数组比较大小并将其插入数组中,这部分是关键。需要注意的是我们在刚开始时将数组长度定义为11,就是为后面插入一个数预留的空位*\/#include <stdio.h>void main(){ int a[11]; \/*数组长度为11*\/ int n=10,i,j,k,t; int x,count...

什么是插入法?
插入法的核心思想是将某个元素插入到已经排序的数组中,从而得到一个新的有序数组。这种算法在数据量大且部分数据已经排序的场景下非常有效。以下是关于插入法的 1. 基本概念 插入法是一种简单的排序算法,适用于数据量相对较小的情况。它的基本思想是将一个数据元素逐一与已排序序列中的元素进行比较,...

已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入...
为了把一个数按大小插入已排好序的数组中,应首先确定排序是从大到小还是从小到大进行的。设排序是从大到小进序的,则可把欲插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素i时,该元素之前即为插入位置。然后从数组最后一个元素开始到该元素为止,逐个后移一个单元。最后把插入数...

已有一个排好序的序列,输入一个数插入到该序列中,使其仍然保持有序.
假设原序列名为a,要插入的数为b.如果数字是从小到大排列的.for(int i=n,;i>=0;i--)\/\/n为数组a的元素个数 { if(a[i]>=b){ a[i+1]=a[i];a[i]=b;} else continue;}

已有一个已排好序的整数数组, 要求输入一个数后, 按照原来排序的规律...
从最小的数的一边开始逐个与所输入的数比较,将该数插入第一个大于该数的数前面 插入方法,首先把插入处之后的所有数后移一位,然后插入。我不知道你要什么语言的所以只给你说方法

相似回答