C语言删除数组指定元素

#include<stdio.h>
main()
{int i,j,n;
int a[10];
printf("请输入需要删除的数:\n");
scanf("%d",&n);
printf("请输入10个元素的数组: \n");
for (i=0;i<10;i++)
scanf("%d",&a[i]);
for (i=0;i<10;i++)
if (a[i]==n)
for (j=0;i+j<9;j++)
a[i+j]=a[i+j+1];
for (i=0;i<10;i++)
printf("%5d",a[i]);
}

这个是我扥代码。。。
但是试了不行。。。。。。
望大虾帮忙修改下。。。
谢谢了
我没财富积分了
有了绝对追分!!!谢谢了

C语言删除数组指定元素的源代码如下:

#include <stdio.h>

main()

{

char s[80],c;

int j,k;

printf("\nEnter a string: ");

gets(s);

printf("\nEnter a character: ");

c=getchar( );

for(j=k=0;s[j]!= '\0';j++)

if(s[j]!=c)

s[k++]=s[j];

s[k]= '\0';

printf("\n%s\n",s);

system("pause");

}

扩展资料

自定义函数代码如下

function delarrayval2($arr,$v){

$keyarr = array_keys($arr, $v); 

if(count($keyarr)){ 

foreach ($keyarr as $key) { 

unset($arr[$key]); 

}

return $arr;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-08

只要将删除后的数据元素像前移动一位即可。

#include <stdio.h>

// 删除长度为len的数组dat中索引为idx的元素。
void remove(int *dat, int *len, int idx)
{
    (*len)--;
    if (idx < 0 || idx >= *len)
        return;
    for (int i = idx; i < *len; i++)
        dat[i] = dat[i+1];
}

void output(int *dat, int len)
{
    for (int i = 0; i < len; i++)
        printf("%d ", dat[i]);
    printf("\n");
}

int main()
{
    int a[10]= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, len = 10;
    remove(a, &len, 5);
    output(a, len);
    remove(a, &len, 2);
    output(a, len);
    return 0;
}

第2个回答  推荐于2017-10-14
void main()
{
int i,j,n;
int a[10];
int k=0; //记录删除数据的个数

printf("请输入需要删除的数:\n");
scanf("%d",&n);
printf("请输入10个元素的数组: \n");
for (i=0;i<10;i++)
scanf("%d",&a[i]);
for (i=0;i<10;i++)
if (a[i]==n)
{
for (j=0;i+j<9;j++)
a[i+j]=a[i+j+1];
k++;//删除数据的个数加1
a[10-k] = 0; //清除最后一个已经前移过的数据
}

for (i=0;i<10-k;i++)//输出剩余的数据,后面的数据为0代表已经被删除的无意义数据,不必再输出了。
printf("%5d",a[i]);
}本回答被提问者采纳
第3个回答  2019-12-05
就是我们不会诉诉,也不会删除的一个软件吧
第4个回答  2011-04-24
for (j=0;i+j<9;j++)
a[i+j]=a[i+j+1];
这段不对

for(j =i; j <9; j++)
{
a[j] = a[j+1];
}追问

你们两位写的都一样。。。。
但是这个我也试过了。。。
不行
比如数组:
1 2 3 3 3 4 5 6 4 3
删除元素3,但是会出现结果还是有3!!!

c语言中怎么删除数组中的一个元素
答案:在C语言中,直接删除数组中的一个元素是不可行的。因为数组在内存中是连续存储的,删除一个元素会导致其他元素的内存地址发生变化,可能引起程序错误。但可以通过其他方式间接实现“删除”数组元素的效果。详细解释:1. 数组的特性:在C语言中,数组是一块连续的内存区域,用于存储相同类型...

C语言数组——删除数组中的某个值
在处理数组时,如何高效地删除特定元素成为关键。在Python中,利用简洁的代码轻松实现这一操作。而C语言则需要通过手动构建函数,参数包括数组名与数组长度。无需直接指定元素数量,而是先为数组赋值。删除元素前,需要了解数组内容,同时定义一个变量,将目标元素赋值给该变量。核心步骤在于移除指定元素后的操...

C语言,从数组中删除一个指定元素。
C语言删除数组指定元素的源代码如下:include <stdio.h> main(){ char s[80],c;int j,k;printf("\\nEnter a string: ");gets(s);printf("\\nEnter a character: ");c=getchar( );for(j=k=0;s[j]!= '\\0';j++)if(s[j]!=c)s[k++]=s[j];s[k]= '\\0';printf("\\n%s\\...

C语言中怎么删除数组中的一个元素
删除就是将其下标所在位置的中的内容置为空(也就是0),然后从此位置开始,后面的内容前移,再把最后那个位置的置为空(就是0)。前移无非就是 类似 arr[ i - 1] = arr[ i ] 这个意思。当可以确认数组中存放的都是整数,你可以将这个元素置为-1表示删除。增加就是先检查你的数组中有没有-...

C语言数组中删除给定下标的元素,哪里不对?该怎么改?谢了!!
C语言数组 不能直接删除元素,只能清零 int mdele(int *p,int n,int j);int main(){

C语言 数组 实现删除一数组中的某指定元素。
include <stdio.h>int main(){ int a[10] = {1,1,2,6,5,6,3,5,7,3}; int v,i,n; scanf("%d",&v); for(i=n=0;i<10;i++) if(a[i]!=v) a[n++]=a[i]; for(i = 0; i<n; i++) printf("%d ", a[i]); return 0;} ...

C语言中删除一个数组元素
如果数组里全是3 那我输入要删除的3之后 楼主想要一个什么结果呢 是9个3 还是一个元素也不输出?下面的程序可能能实现楼主的意思 include<stdio.h> void main(){ int a[10]={1,3,7,61,86,12,75643,8989,1,3},n,i;printf("input the number to delete:");scanf("%d",&n);for(...

C语言 如何删除数组的某一项,不是把这一项的数据清0,而是直接删除
在C语言中数组时在内存中是线性存储的,比如a[i]就是找到数组a的地址,然后+i,就是这个位置的数拿出来就好了。如果要删掉一个,那么相应的地址对应的数据也要前移。所以数组和指针操控的结构体的区别,前者固定到某一个位置的数字的时候时间复杂度是O(1),但是增减的复杂度就是O(n),而后者...

C语言编程,删除数组a中值为x的第一个元素。
int BitSearch(int a[], int x, int left, int right) { \/*在数组a的从left到right的区域内二分查找x第一次出现的位置,如果不存在返回-1*\/ int mid, i;while(left <= right) { mid = (left + right) \/ 2;if(a[mid] == x) break;if(a[mid] > x) right = mid - 1;i...

C语言编写函数,从一个排好序的整型数组中删去某数
int x){int i; for(i=0;i<n&&a[i]<x;i++); if(i==n||a[i]>x) {printf("fail!\\n"); return;} for(;i<n;i++)a[i]=a[i+1]; n--; for(i=0;i<n;i++) printf("%d ",a[i]); printf("\\n"); }int main(){int n,i,x,a[200]; char c=' '...

相似回答