为什么插入元素后数组中值被改变?
小弟今天学习一维数组时在下面的程序中插入一个元素后(我随便插入了一个元素值到第3位,发现原先的12,5,7,6,32,中7变成了6,这是为什么,是否是系统原因。#include<stdio.h>
#define MAXNUMBER 30
main()
{
int n=5;
int array[MAXNUMBER]={12,5,7,6,32};
int value; /*要插入或被删除的元素值*/
int location; /*要插入或删除的位置*/
int i;
printf("修改前的数组:\n");
for (i=0;i<5;i++)
printf("%5d",array[i]);
/*数值的插入操作*/
printf("请输入要插入的元素: ");
scanf("%d",&value);
printf("请输入要插入的位置(1..%d): ",n+1); //这里的(1...%d)编译后显示(1..6),前面不是只定义了5个数组元素吗/
scanf("%d",&location);
if ((location<1) || (location>n+1))
{ /*允许插入的位置是[0,n],允许在末端插入*/
printf("插入的位置超出范围!!\n");
return;
}
if (n==MAXNUMBER)
{ /*整个数组已达到最大长度,已不能再插入数据元素*/
printf("数组已达到最大长度,再插入将超出范围!!\n");
return;
}
n++;
for (i=n;i>location;i--)
array[i]=array[i-1]; /*向后移动元素*/
array[location-1]=value; /*插入点赋值*/
printf("插入后的数组为:\n"); /*输出插入后的数组*/
for (i=0;i<n;i++)
printf("%5d",array[i]);
/*数组的删除操作*/
printf("\n请输入要删除第几个元素(1...%d):",n);
scanf("%d",&location);
if ((location<1) || (location>n))
{ /*允许删除的位置是[0,n-1]*/
printf("删除的位置超出范围!!\n");
return;
}
value=array[location-1]; /*得到删除点的值*/
printf("将被删除的元素值为:%d\n",value);
for (i=location-1;i<n-1;i++)
array[i]=array[i+1]; /*向前移动元素*/
n--;
printf("删除后的数组为:\n"); /*输出删除后的数组*/
for (i=0;i<n;i++)
printf("%5d",array[i]);
printf("\n");
return;
}