| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1186 人关注过本帖
标题:为什么插入元素后数组中值被改变?
只看楼主 加入收藏
不惑不获
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-3-17
收藏
 问题点数:0 回复次数:5 
为什么插入元素后数组中值被改变?
小弟今天学习一维数组时在下面的程序中插入一个元素后(我随便插入了一个元素值到第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;
}
搜索更多相关主题的帖子: 中值 元素 
2006-03-20 17:12
crazyrabbit
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:150
专家分:0
注 册:2006-3-15
收藏
得分:0 
for (i=n;i>=location;i--)
array[i]=array[i-1]; /*向后移动元素*/
把FOR循环里面的>改成>=号,

因为你移动的时候也要把正处在那个位置的数移动,故需要把它向后移动.

http://www./bbs/boke.asp?crazyrabbit.index.html 欢迎大家来此讨论问题!
2006-03-20 17:23
不惑不获
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-3-17
收藏
得分:0 

成功了
我将printf("请输入要插入的位置(1..%d): ",n+1);改成了printf("请输入要插入的位置(1..%d): ",n);这样应该没有影响吧。


2006-03-20 17:30
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 

我觉得这个问题使用指针会好一些


2006-03-20 17:32
不惑不获
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-3-17
收藏
得分:0 
是吗,不过我还没看到指针,我会加油的,现在一天一章,进度还比较满意,就是周围没人教我,只有在论坛找人问,多谢大家了。

2006-03-20 17:51
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 
比我好多了,我真惭愧

2006-03-20 18:04
快速回复:为什么插入元素后数组中值被改变?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016304 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved