C++有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中

#include<iostream.h>
void main()
{int a[5]={2,4,6,8,10},x;
cin>>x;
for(int i=0,i<5,i++)
if(x>a[5])
a[6]=x;}
else
if(a[i]>x)
break;
for(int j=5,j>i,j--)
a[j+1]=a[j];
a[i]=x;}
for(int k=0,k<=5,k++)
cout<<a[k]<<'\t'<<endl;}
哪错了

首先,a[5]已经越界了,a[6]就更不用说了,
在这种问题上,最好多定义一个字符,也就是说,定义a数组的时候,想插入数据,必须至少多出一个空位,也就是定义a[6]={2,4,6,8,10},这样是不会错的

代码这样就好了,给你改一下

cin>>x;
a[5]=x; //直接把字符放在最后一个
for(i=4,i>=0,i--) //建议不要用到变量的时候再定义,在前面都定义好
if(a[i+1]<a[i]) //如果后面的小于前面,交换一下
{
x=a[i]; //这里x已经没用了,可以用来做交换的缓冲,
a[i+1]=a[i]; //要是怕混了,可以多定义一个变量做交换的缓冲
a[i+1]=x;
}
else
break; //没有交换退出循环就好了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-12
首先,你定义的这个数组肯定是越界了,a[5]只能存储5个数,你加入一个就成6个了存不了了。还有就是你用这个数组的时候也错了,a[5]数组中是没有a[5]这个元素的,它的元素是a[0],a[1],a[2],a[3],a[4]这5个数,那个a[6]就不说了是越界了的数。你可以把数组定义的大一点,或者使用链表就不会出现这些问题了。
第2个回答  2012-04-12
大括号的问题吧
顺便要插入数值到数组中时,数组的大小是需要注意的,不然越界了就不好玩了=w=
相似回答