数组插值问题
有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。
#include<iostream>
using namespace std;
void main()
{
int i,j,num;
int a[10]={1,2,3,5,7,12,15,18,30,44};
for(i=0;i<10;i++)
cout<<a[i]<<" ";
cout<<"input the number:";
cin>>num;
for(i=0;i<10;i++)
{
if(num>a[9])
a[10]=num;
else
if(a[i]>num)
{
for(j=9;j<=i;j--)
a[j+1]=a[j]; //后移一位
a[i]=num;
}
}
cout<<"the sort is:"<<endl;
for(i=0;i<11;i++)
cout<<a[i]<<" ";
}
运行出错 输入一个数 程序就死掉了 看了半天不知道什么原因 大家帮忙看看 谢谢
[解决办法]
#include<iostream>using namespace std;void main(){ int i,j,num; int a[11]={1,2,3,5,7,12,15,18,30,44}; //要插入一个数长度就为11了,所以至少数组长度要为11 for(i=0;i<10;i++) cout<<a[i]<<" "; cout<<"input the number:"; cin>>num; for(i=0;i<10;i++) { if(num>a[9]) a[10]=num; else if(a[i]>num) { for(j=9;j>=i;j--) a[j+1]=a[j]; //后移一位 a[i]=num; break; //找到位置了就应该跳出循环 } } cout<<"the sort is:"<<endl; for(i=0;i<11;i++) cout<<a[i]<<" ";}
[解决办法]
这题要考的是链表把,。你的数组生命的时候已经确定了大小,不可以再往里面差值了。
你数组大小是10,你往了面插11个元素肯定报错了。
[解决办法]
#include<iostream>using namespace std;void main(){ int num; int a[20]={1,2,3,5,7,12,15,18,30,44}; //尽量设大一点 int cnt=10;//当前元素个数 for(int i=0;i<cnt;i++) cout<<a[i]<<" "; cout<<endl; cout<<"input the number:"; cin>>num; int j; for(j=0;j<cnt;j++) //查找位置 if(a[j] > num) break; if(j == cnt) a[cnt++]=num; else// 向后移动数据 { for(int i=cnt-1;i>=j;i--) a[i+1]=a[i]; a[j]=num; cnt++; } cout<<"the sort is:"<<endl; for(i=0;i<cnt;i++) cout<<a[i]<<" ";}
[解决办法]
看你程序中的两行代码:
1.int a[10]={1,2,3,5,7,12,15,18,30,44};
2.a[10]=num;
懂了吧?? 不解释