首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

数组插值有关问题

2012-04-09 
数组插值问题有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。#includeiostream

数组插值问题
有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。
#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]<<" ";
}

运行出错 输入一个数 程序就死掉了 看了半天不知道什么原因 大家帮忙看看 谢谢

[解决办法]

C/C++ code
#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个元素肯定报错了。
[解决办法]
C/C++ code
#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;
懂了吧?? 不解释

热点排行