c++求改正:将一个任意整数插入到一个已排序的整数数组中,插入后数组中的数仍然保持有序。 要用指针
答案:2 悬赏:50
解决时间 2021-03-14 07:20
- 提问者网友:呆萌心雨
- 2021-03-13 17:55
#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<}
编译没错,执行就停止工作。怎么错了?
最佳答案
- 二级知识专家网友:嗷呜我不好爱
- 2021-03-13 19:33
你数组只有10个长度, 你要加一个, 当然就越界了呀.
就是这句:
*(p+j+1)=*(p+j);
也就是对*(p + 10)或p[10]进行赋值操作, 能不越界么?
全部回答
- 1楼网友:苦柚恕我颓废
- 2021-03-13 20:45
一个简单的无错误检查的实现基本是这样的:
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
我要举报
大家都在看
推荐资讯