无情都市哪里看:为什么结果会不一样啊??

来源:百度文库 编辑:高考问答 时间:2024/05/10 12:02:15
//***************************************************
//10个数,已按从小到大顺序排列。在主函数中键入一个数*
//调用一个函数,它把键入的数插入到原有数列中,保持大*
//小顺序,输出插入前后的两个数组,并将被挤出的最大数*
//(有可能就是被插入数)返回给主函数输出。 *
//***************************************************

#include <iostream.h>

int insertfunc(int [], int, int);

void main()
{
int one,other;
int number[] = {8,29,34,56,72,83,88,91,93,99};
int len = sizeof(number)/sizeof(int);
cout <<"输入一个整数:" ;
cin >>one;
other = insertfunc(number, one, len-2);
for (int i=0; i<len-1; i++)
cout <<number[i] <<" ";
cout <<"被挤出的最大数为:" <<other <<endl;

}

int insertfunc(int a[], int x, int y)
{
if (x > a[y])
return x;
for (int i=y; i>=-1; i--)
{
if (x < a[i])
{
a[i+1] = a[i];
}
else
{
a[i+1] = x;
return a[y+1];
}
}
return a[y+1];
}

上面的代码是C++程序在VC++6。0中运行通过的,但是插入的数如果是小于第一个数组元素的话,输出就不对了,请帮忙看看是怎么回事,并详细指明。

因为最后一个循环,i=-1,a[i]会不确定。
循环一开头加个判断:
if(i == -1)
{
a[0] = x;
return a[y+1];
}