c语言数组中一个数的删除与插入

作者&投稿:陀临 (若有异议请与网页底部的电邮联系)
C语言数组的删除,插入~

建议加一个全局变量用于存储当前有多少有效数据。
就先假设是CURRENT_NUM好了
删除的话:
//假设删除第target位
//(数组下标为从0~CURRENT_NUM-1 如果不一样的话稍微改下就好)
if(target=CURRENT_NUM)
{
//越界处理
}else{
for(int i=target+1;i<CURRENT_NUM;i++)
s[i-1]=s[i];
CURRENT_NUM--;
}插入的话思想类似
//假设插入第target位
//(数组下标为从0~CURRENT_NUM-1 如果不一样的话稍微改下就好)
if(targetCURRENT_NUM) //target可以等于CURRNET_NUM是因为可以插入到数组尾
{
//越界处理
}else{
for(int i=target;i<CURRENT_NUM;i++)
s[i+1]=s[i];
//对s[target]进行赋值
CURRENT_NUM++;
}

C语言删除数组指定元素的源代码如下:
#include
main()
{
char s[80],c;
int j,k;
printf("
Enter a string: ");
gets(s);
printf("
Enter a character: ");
c=getchar( );
for(j=k=0;s[j]!= '\0';j++)
if(s[j]!=c)
s[k++]=s[j];
s[k]= '\0';
printf("
%s
",s);
system("pause");
}

扩展资料
自定义函数代码如下
function delarrayval2($arr,$v){
$keyarr = array_keys($arr, $v);
if(count($keyarr)){
foreach ($keyarr as $key) {
unset($arr[$key]);
}
}
return $arr;
}

bool binary_search(int * arr, int size, int v){
if((arr == NULL) || (size <= 0)){
return false;
}
int bIndex = 0;
int eIndex = size - 1 ;
for(int curIndex = size / 2; eIndex != bIndex; curIndex = (bIndex + eIndex) /2){
if(v < arr[curIndex]){
eIndex = curIndex;
}else if(v > arr[curIndex]){
bIndex = curIndex;
}else{
for(int j = curIndex + 1; j < size; ++j){
arr[j - 1] = arr[j];
}
return true;
}
}
return false;
}
int _tmain(int argc, _TCHAR* argv[]){
int arr[20] = {0};
for(int i = 0 ; i < 20; ++i){
arr[i]=i;
}
for(int i = 0; i < 20; ++i){
cout << arr[i] << "";
}
if(binary_search(arr, 20, -116)){
for(int i = 0; i < 19; ++i){
cout << arr[i] << "";
}
}else{
cout << "not found" << endl;
}
system("pause");
//AGCDB::uninstallAPI();
return 0;
}


#include<<a href="https://www.baidu.com/s?wd=stdio.h&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Yvuym1PyczPHmYn101nh7h0AP8IA3qPjfsn1bkrjKxmLKz0ZNzUjdCIZwsrBtEXh9GuA7EQhF9pywdQhPEUiqkIyN1IA-EUBtdPjTznj6YPjc" target="_blank" class="baidu-highlight">stdio.h</a>>
#define MAX 50
int insert(int a[],int n,int i,int x)
{
int j;
if(n+1>MAX)
printf("无插入空间\n"); //数组只能存MAX个数
else if(i<1||i>n+1)
printf("插入位置非法\n"); //插入位置的范围为1..n+1
else
{
for(j=n-1;j>i-2;j--)
a[j+1]=a[j]; //将数组中i位置及其后面的数,依次向后移动一格
a[<a href="https://www.baidu.com/s?wd=i-1&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Yvuym1PyczPHmYn101nh7h0AP8IA3qPjfsn1bkrjKxmLKz0ZNzUjdCIZwsrBtEXh9GuA7EQhF9pywdQhPEUiqkIyN1IA-EUBtdPjTznj6YPjc" target="_blank" class="baidu-highlight">i-1</a>]=x; //在i位置插入x
n++;
}
return n; //返回当前数组大小
}
int del(int a[],int n,int i)
{
int j;
if(i<1||i>n)
printf("删除位置非法\n");
else
{
for(j=<a href="https://www.baidu.com/s?wd=i-1&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Yvuym1PyczPHmYn101nh7h0AP8IA3qPjfsn1bkrjKxmLKz0ZNzUjdCIZwsrBtEXh9GuA7EQhF9pywdQhPEUiqkIyN1IA-EUBtdPjTznj6YPjc" target="_blank" class="baidu-highlight">i-1</a>;j<n-1;j++)
a[j] = a[j+1];
n--;
}
return n;
}
int search(int a[],int n,int x)
{
int i;
for(i=0;i<n;i++)
{
if(a[i]==x)
return i+1;
}
return -1;
}
void printArray(int a[],int n)
{
int i;
for(i=0;;i++)
{
if(i==n-1)
{
printf("%d\n",a[i]);
break;
}
printf("%d ",a[i]);
}
}
void main()
{
int n,i,a[MAX];
int index,x;
printf("输入数组中的元素个数\n");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("请输入要插入的位置和插入的数\n");
scanf("%d %d",&index,&x);
n = insert(a,n,index,x);
printArray(a,n);
printf("请输入要删除元素的位置\n");
scanf("%d",&index);
n = del(a,n,index);
printArray(a,n);
printf("请输入要查询的元素\n");
scanf("%d",&x);
i = search(a,n,x);
if(i!=-1)
printf("%d的位置:%d\n",x,i);
else
printf("未找到%d\n",x);
}


c语言如何判断一个数组中重复元素的个数,并输出这个个数的值?
i < n; i ++){ if(tmp == a[i]) { count ++; } else { if(count > 1) { printf("数组共有%d个数字%d\\n", count, a[i - 1]); } tmp = a[i]; count = 1; }}if(count > 1){ printf("数组共有%d个数字%d\\n", count, ...

如何在C语言中输入一维数组?
要先给输入的每一个数字给予它的地址,便于访问,最后拿得到的数计算出平均值输出,程序就编写完成了:3、代码全部编写成功之后编译运行,在弹出的输入面板中输入任意5个整数,按回车键,即可得出平均值,以上就是用C语言输入一个数组,关键点是数组的获取要用指针:

有一个数组,输入一个数值,如果该数在数组中,则删除这个数值,如果不在...
数组是顺序存储的连续空间,严格来讲删除是不存在的,因为大小固定,题主可以考虑方法是:1,定义一个变量标记数组长度(不是声明的长度,是操作过元素后的长度),初始长度等于你赋值的长度 2,当删除元素时候,将它后面的所有元素往前往前挪一位,最大长度减1 来实现删除。或者标记特殊的,绝对不会出来...

C语言编程题,将一组数组中几个整数按相反的顺序输出,最后一个与前一个...
array[i-1]=array[i-2];array[i-2]=temp;} 楼主的意思是交换之后才输出,还是输出后才交换,没弄清楚??上面是反序输出,再交换最后一个和倒数第二个数。若要交换后再输出,则为:void shuchu(int i,int array[])\/\/i表示数组中数的个数 { int j;int temp;temp=array[i-1];array[...

C语言 如何用二分法在已排序的数组中插入一个数(C CODE)
\/\/调整元素个数 n++;\/\/输出 for(i=0;i<n;i++)printf("%d ",a[i]);return 0;} 其它补充:(1)因为这是数组,数组插入元素时必须移动从插入位置往后所有的元素,所以用两分法一点也不高效。想高效地用两分法插入应该使用二叉树。(2)高效地往已排序的数组中插入元素应该直接从后往前一边...

C语言菜鸟求教:请问下面这段解释中“*(a+1)表示的是数组a[1]中第一...
他没错,你也没说错,但你理解不到位。(a+1)是数组元素。但a是二维数组,那你就要再进一步理解了。因为a是二维数组名,即是一维数组a[0] 、a[1] 、a[2] 的首地址。a+1就是 a[1]的地址。是取指针的值。那么*(a+1)就是取 a[1]的值。它是什么呢?它又是一个数组: a[1][0],...

在C语言中,1表示什么?
在C语言中,数字1表示一个整数值。C语言是一种通用的、过程式的计算机编程语言,支持结构化编程、词汇变量作用域和递归等功能,其设计提供了低级别的存取权限,并且要求程序员管理所有的内存细节。在C语言中,数字1被视为一个整型常量,通常用于算术运算、条件判断或作为数组索引等。例如,在算术运算中,...

C语言中一维数组的最长维数是多少?谢谢!
ANSI C89标准中规定,一个数组的尺寸(下标)必须是一个整型常量表达式以便于在编译时计算大小,而这里的所谓常量(或者常量表达式的运算结果),一般是指unsigned int。16位编译器(比如Turbo C)中,unsigned int为16位,因此数组最多32767个数据。32位编译器(比如Visual C++ 6.0)中,unsigned int为...

C语言 判断一个数是否是数组中的成员 用C语言编程
思路:依次遍历该数组,把每个数和需要判断的数进行比较如果相等则退出循环输出存在,如果遍历结束都找不到则不是其成员。参考代码:include "stdio.h"#define N 5int main(){int a[N]={1,2,3,4,5},i,t;scanf("%d",&t);for(i=0;i<5;i++)if(a[i]==t){printf("%d是其成员!",...

c语言问题,有一个已排好序的数组,现输入一个数,要求按原排序的规律将它...
【例】把一个整数按大小顺序插入已排好序的数组中。为了把一个数按大小插入已排好序的数组中,应首先确定排序是从大到小还是从小到大进行的。设排序是从大到小进序的,则可把欲插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素i时,该元素之前即为插入位置。然后从数组最后一个元素...

日土县13367169501: 在c语言编程中,如何将一个元素插入数组中,如何将一个元素从数组中删除 -
舟卖塞诺: 把要插入的位置后面的所有元素均向后移一位,数组长度增加1;把需要删除的元素后面所有元素均向前移动一位,这是要删除的元素已经被覆盖了,同时数组长度减去1

日土县13367169501: c语言数组元素的删除与增加. -
舟卖塞诺: C语言中的数组本质上是在计算机内存中分配的连续空间. 如果需要对元素进行插入和删除,并不能直接将内存中为该数组分配的空间进行插入/新增和删除,而是只能通过数据复制的方式将本来不在这个位置的元素进行移动,看起来像是元素...

日土县13367169501: 教教我用C语言编一程序在一个排好序数组中删去一个数,或插进去一个数,按照原来的顺序输出,求详细的解悉
舟卖塞诺: 比如你已经定义了一个数组(从小到大排)a[n] 删除: 删除数据 X for(i=0;i&lt;n;i++) {if(x==a[i]) break;}//定位到X的位置 if(i==n-1) {printf("删除错误,没有%d这个元素.",x);return for(j=i;j&lt;n-1;j++) {a[j]=a[j+1];}//向前移一位 插入: 插入数据 X for(i=0;i&lt;n;i++) {if(x&lt;=a[i]) break;} for(j=n;j&gt;i-1;j--) a[j+1]=a[j];//后移一位 程序主要部分就是这样了

日土县13367169501: 急!c语言对数组元素的删除,添加操作 -
舟卖塞诺: 删除函数,删除ptr中的ptr[in]元素,n是数组原来的长度. void rmv(int *ptr,int in,const unsigned int n) {unsigned int i;for (i=in; i<n-1; i++) {*(ptr+i)=*(ptr+i+1);}realloc(ptr,sizeof(int)*(n-1)); }-----------------------------------------------插入函数,在整形...

日土县13367169501: 能不能在数组里 减去一个元素 -
舟卖塞诺: C语言中,对于数组的删除与插入,其实现的基本原理是:1若是删除,则是将这个元素a后边的所有元素都向前移动一个位置,然后将该数组的数组元素个数减1;2:若是插入,则是先在定义该静态数组的时候就考虑到将要插入的新的元素的位置,即在定义的时候多开辟一个数组元素的位置,然后再插入的 时候先将插入位置之后所有的数组元素都向后移动一个位置,然后再将空出来的那个数组元素的位置上赋予该插入的元素即可!希望可以被采纳,谢谢!

日土县13367169501: C语言数组的删除,插入 -
舟卖塞诺: 建议加一个全局变量用于存储当前有多少有效数据. 就先假设是CURRENT_NUM好了删除的话: //假设删除第target位 //(数组下标为从0~CURRENT_NUM-1 如果不一样的话稍微改下就好)if(target<0||target>=CURRENT_NUM) {//越界处理 }...

日土县13367169501: C语言删除数组中一个数.急急急!!!! -
舟卖塞诺: 两种方法,一种不改变原数组,返回原数组 function arraypushat(obj:*, index:uint, arr:array):array { var new_arr:array = arr.slice(0, index); new_arr.push(obj, arr.slice(index, arr.length)); return new_arr; } 另一种在原数组中添加 function pushat(obj:*, ...

日土县13367169501: 急求C语言中,怎么编写一段程序,其中包括了对数组中的数据进行删除,插入,查找,排序的功能!!! -
舟卖塞诺: int n; printf("1.插入2.删除3.查找4.排序"); scanf("%d",&n); switch(n) { case 1: ...; break; case 2: ...; break; case 3: ...; break; case 4: ...; break; } 在每个case里加上对数组操作的代码就行了

日土县13367169501: C语言中,如何删去一维数组中的元素,再将剩下的表示出来? -
舟卖塞诺: 例6-2 将10个整数存入数组,删除数组中的某个元素.例如,数组中有1,2,3,4,5,6,7,8,9,10共10个元素,删除第5个元素后,数组中剩下9个元素1,2,3,4,6,7,8,9,10. 首先定义一个长度为的int型数组,用来存放10个整数.用循环输入数组的每个...

日土县13367169501: C语言中怎样将数组中的一个数删除?
舟卖塞诺: 用覆盖的方法, 先用FOR循环遍历数组,然后在从你要删除的数据那截断,将后面的依次覆盖从你要删除数据.就OK.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网