教教我用C语言编一程序在一个排好序数组中删去一个数,或插进去一个数,按照原来的顺序输出,求详细的解悉

我是大一的新生,实在搞不懂,那位大侠告诉我啊。我先谢谢了。我刚玩百度空间,没多少分,不好意思

比如你已经定义了一个数组(从小到大排)a[n]
删除: 删除数据 X
for(i=0;i<n;i++)
{if(x==a[i]) break;}//定位到X的位置
if(i==n-1) {printf("删除错误,没有%d这个元素。",x);return
for(j=i;j<n-1;j++)
{a[j]=a[j+1];}//向前移一位

插入: 插入数据 X
for(i=0;i<n;i++)
{if(x<=a[i]) break;}
for(j=n;j>i-1;j--)
a[j+1]=a[j];//后移一位

程序主要部分就是这样了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-10
要上课了, 只做了一部份

#include "stdio.h"
#define num 5
int main()
{
void deletes(int arrays[num]);
void insert(int arrays[num]);
int arrays[num];
int n,i;
printf("输入%d个数:\n",num);
for(i=0;i<num;i++)
scanf("%d",&arrays[i]);

printf("选择 1 删除一个数,选择 2 添加一个数: ");
scanf("%d",&n);
if(n==1)
{
i=0;
deletes(arrays);
while(arrays[i]!=0)
{
printf("%d ",arrays[i]);
i++;
}
}
else if(n==2)
{
insert(arrays);

}

else
printf("intput error!\n");
return 0;
}
void deletes(int arrays[num])
{
int a,i,j;
printf("输入要删除的数的值:\n");
scanf("%d",&a);
for(i=0;i<num;i++)
if(a==arrays[i])
{ if(i<num-1)
{
for(j=i;j<num-1;j++)
arrays[j]=arrays[j+1];
}
arrays[num-1]=0;
}
}
void insert(int arrays[num])
{
}
第2个回答  2011-05-10
先找到刚好比这个数小或者大的数,也就是确定位置,然后把之前那些数在数组中全部前移或者后移一位,最后把留出来的那位给要插入的数。删掉就更简单了,直接从这个数后一个开始向前覆盖就可以了...
相似回答