c程序,有序数组插数问题 在线等

来源:百度知道 编辑:UC知道 时间:2024/05/31 10:19:17
有序(从小到大)数组插入数据,然后再按从小到大输出。这里数组给定,插入的数为e.
#include "stdio.h"
void main()
{
int a[3]={2,4,6}; //原数组
int b[4]; //插入后的数组
int i,j;
int e=5; //所插数据,此时应插在4后面
for(i=0;i<3;i++)
b[i]=a[i];
if(e>b[2]) b[3]=e; //若e比最大数还大,则插在最后
if(e<=b[0])
{
for(j=2;j>=0;j--)
b[j+1]=b[j];b[0]=e;
} //若e小于或等于最小数,则插在最前

if(e>b[i]&&e<=b[i+1])
{
for(j=2;j>=i+1;j--)
b[j+1]=b[j];
b[i+1]=e;
} //此时插在之间位置

for(i=0;i<=3;i++)
printf("%d\t",b[i]); //输出
printf("\n");
getch();
}
运行时,当更改e的值,1,7 能正常输出。但当e=5时 运行结果在最后位置输出一个地址。 问题在哪? 谢谢~!不好意思没积分了

你既然要用到两个数组了,为什么还要那么麻烦呢?直接读取a[i]与e比较(本来还想比较a[i]和a[i+1]的,但你的原数组都已经排好序了,就没必要的),小的就先写进b[]里面,这样不就可以了么?