c语言-C语言数组删除指定数值问题....

问题描述

C语言数组删除指定数值问题....

int b;
int a[5] = { 1, 2, 3, 4, 5 };

scanf_s("%d",&b);
int r = 0;
int i;

for ( i = 0; i<5; i++){
    if (b == a[i]){//要删除的数据
        a[i] = r;
    }
    else{
        printf("%dn",a[i]);
    }
}//这样的话确实能删除一个数,但是如果我真的想把数值0肤赋值给数组中的元素呢?怎么办?

解决方案

应该不算删除数组元素,只是把要删除的元素赋值为0值了
if (b == a[i]){//要删除的数据
a[i] = r;
}
输出显示是,输出了所有不需要删除的元素,这样从输出显示来看貌似删除数据,但内存中数据仍存在,占有内存空间,只不过此时值被修改为0。
对数组,或者顺序空间元素删除,一般需要数据搬移,需要把后面的数据往前搬移,覆盖删除的空间,这样使内存空间紧凑,不至于零散碎片化。正是由于搬移的原因,有时数据存储采用链表结构,而不采用顺序表~

解决方案二:

不明白你想怎么删除!!!

解决方案三:

不知道你什么意思?数组中所有的元素都赋值为0还是别的?

解决方案四:

可以设置r=65535,代表元素值无效。如果还是觉得不是很好,只能是设计一个数据类型
typedef struct data{
int len=0;//数组长度
int a[5];
}

解决方案五:

不用定义 r ,直接赋值 a[i] = 0 即可。
这样的赋值方法,已经将数组中的元素赋值为零了。

解决方案六:

那就在循环了面加 if(i==3){
a【i】 = 0;}

解决方案七:

这不需要定义r吧,直接赋值0,但是如果遇到数据位0的呢,该怎么办吧,直接将后排的覆盖之前删除的那一位,也是可行的

时间: 2024-09-17 04:12:56

c语言-C语言数组删除指定数值问题....的相关文章

浅析jquery数组删除指定元素的方法:grep()_jquery

遇到的问题 今天遇到一个问题,删除数组中的一个指定元素,并返回新的数组. 我定义的js数组是这样的: var sexList=new Array[3]; sexList[0]="1"; sexList[1]="2"; sexList[2]=""; 想达到的效果 我想达到的效果是这样的: 删除索引=1的元素,并返回新数组. 返回的结果是: var sexList=new Array("1",""); 我们知道

VC实现批量删除指定文件的方法_C 语言

本文所述实例主要实现了删除某个盘符下指定位置的文件,可以是TXT.doc.jpeg等格式,只要选定格式后,再定义好盘符,即可一键删除所有指定类型的文件.再次提示删除前请确认,且删除后不可恢复. 以下是最主要的核心代码,其它代码读者可以自己添加. SHFILEINFO shInfo; memset(&shInfo,0,sizeof(SHFILEINFO)); HIMAGELIST hImage = (HIMAGELIST)SHGetFileInfo("C:\\",0,&s

深入理解Go语言中的数组和切片_Golang

一.类型 数组是值类型,将一个数组赋值给另一个数组时,传递的是一份拷贝. 切片是引用类型,切片包装的数组称为该切片的底层数组. 我们来看一段代码 //a是一个数组,注意数组是一个固定长度的,初始化时候必须要指定长度,不指定长度的话就是切片了 a := [3]int{1, 2, 3} //b是数组,是a的一份拷贝 b := a //c是切片,是引用类型,底层数组是a c := a[:] for i := 0; i < len(a); i++ { a[i] = a[i] + 1 } //改变a的值后

C语言中全局数组和局部数组的问题

 今天同学遇到一个在C语言中全局数组和局部数组的问题,卡了许久,我也没有第一时间看出问题,现在把问题梳理一下,并给出解决方案. 问题描述: 在全局声明的数组与在局部声明的数组有着不同的效果. 首先来看一个程序: 代码如下: #include <stdio.h> #include <stdlib.h> #define MAX 10 char a[MAX]; int main() { int i; char b[MAX]; char *c=(char *)malloc(MAX * si

编程-如何用C语言的一维数组对一个元素的增删改

问题描述 如何用C语言的一维数组对一个元素的增删改 今天老师讲了C语言的一维数组,就是大批量处理数据的一个工具,他说自己回去 思考增删改查,唯独删除我理解不到,哪位大神可否指点迷津!多谢多谢啦 解决方案 比如,你确认你的数组中存放的都是整数,你可以将这个元素置为-1表示删除.增加就是先检查你的数组中有没有-1的元素,如果有,就设置为你的值.如果全部都满了,就开一个更大的数组,把数据拷贝过去. 解决方案二: 数组是数据结构中的顺序存储结构,删除就是将其下标所在位置的中的内容置为空(也就是0),然后

二维数组-关于C语言的指针数组的问题

问题描述 关于C语言的指针数组的问题 老师说过 传递一个二维数组时 必须指定 第二维的 个数 才能正确索引 数组1维+1的位置 函数参数传递 都是写成这样 abc(int* array[10]) 但是看到main函数的 参数确是 int main(int argc, char* argv[], char* env[]) 这样写 能索引argv+1 的位置吗? 解决方案 当然可以,C语言是一种简陋和原始的语言,它简陋的程度对于用惯了高级编程语言的人来说匪夷所思,比如你完全可以越界访问数组,至于结果

动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有

 1定义接口: Num.h #ifndef_NUM_H_ #define_NUM_H_   #include<stdio.h> #include<stdlib.h>   /************************************************************************/ /*数组的结构体类型                                                    */ /***************

c语言 设计一个找出同数值部分排列的程序

问题描述 c语言 设计一个找出同数值部分排列的程序 定义一行的整数的输入有相同连续的地方为"同数值部分排列"找出有最长的同数值部分排列,并输出排列长度及这个数字的程序.最长的同数值部分排列有两个以上的时候,输出最后那个.输入的数字用空格或者换行区别 例1输入:0 1 1 1 2 0 0输出:3 1 例2输入:1 1 1 31 2 223输出:3 2 解决方案 #include <stdio.h>int main(){ int x; int c = 0; int px = -

c语言-C语言使用随机分布函数rand()%100;但是二维数组a[0][0]的值大于100,其他正常

问题描述 C语言使用随机分布函数rand()%100;但是二维数组a[0][0]的值大于100,其他正常 #include #include #define M 5 #define N 4 void china(int a[][N],int b[M]);/*给二维数组随机分配数值,并求二维数组每行数值之和*/ void orange(int a[][N],int b[M]);/*将付好值得数组和求和打印出来*/ void main() {int a[M][N],b[N]; china(a,b);