中易网

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

答案:2  悬赏:50  
解决时间 2021-03-14 07:20
#include
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< i=0;
while(*(p+i) 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<}
编译没错,执行就停止工作。怎么错了?
最佳答案
你数组只有10个长度, 你要加一个, 当然就越界了呀.
就是这句:
*(p+j+1)=*(p+j);
也就是对*(p + 10)或p[10]进行赋值操作, 能不越界么?
全部回答
一个简单的无错误检查的实现基本是这样的: void insert(int *array, size_t size, size_t pos, int value) {   register size_t i;   for (i=size; i>pos; --i)     array[i] = array[i-1];   array[pos] = value; } void show(int *array, size_t size, const char *caption) {   register size_t i;   printf("%s: %zu elements\n   ", caption, size);   for (i=0; i
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯