在数组中插入一个数

qingdong 2002-12-06 09:16:10
有一个已排好序的数组,今输入一个数。要求按原来的排诹的规律将它插入数组中。
#include <stdio.h>
void main()
{
int a[40],k,,i,n; /*数组a为已排好序的数组*/
scanf("%d",&n); /*n为输入的数*/
for (i=0;i<40;i++)
if(n>a[i]&&n<a[i+1]) /*对输入的数进行插入*/
{a[i+1]=n;
break;
}
for (k=i;k<40;k++) /*向后移一位*/
a[k+2]=a[k+1];
for (i=0;i<40;i++)
printf("%d",a[i]);
}

不知道我这个程序哪里有错的??
请高手指点指点
QQ:1676515
e-mail: mengqingdong@sd163.net
...全文
330 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
blue_coco 2002-12-06
  • 打赏
  • 举报
回复
要先后移, 再插入。
另外检查出界,
改:
#define MAX 40

#include <stdio.h>

void main()
{
int a[MAX],k,i,n; /*数组a为已排好序的数组*/

scanf("%d",&n); /*n为输入的数*/
for (i=0; i<MAX; i++)
{
if(n >= a[i]) /*对输入的数进行插入*/
{
memmove(a+i+1, a+i, sizeof(int)*(MAX-i-1))
a[i] = n;
break;
}
}
if (MAX == i)
printf("Overflow");
}

horse_h 2002-12-06
  • 打赏
  • 举报
回复
同意lbaby(永不停息)的看法。你在插入时应该重新分配内存空间。或者用动太数组吧。
lbaby 2002-12-06
  • 打赏
  • 举报
回复
内存出界了:
int a[40];

for (k=i;k<40;k++)

k=39;
a[k+2]=a[k+1];//????????????

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧