用C语言编写一个在数组中删除指定值函数

作者&投稿:澹码 (若有异议请与网页底部的电邮联系)
c语言 数组以及指针问题:3. 编写一个程序实现在一个一维数组中,删除指定的数据,删除数据用函数实现。~

#include
#define N 10
int main()
{
int i,a[N]={ 0 },n,x;//这里,把数组初始化一下
void cancle(int p[ ],int n);
printf("Enter the number of your data:
");
x=getchar()-'0';//getchar()读取的是字符,要转化成整数要减去'0'也就是48
printf("Enter your data:
");
for(i=0;i<x;i++)
{
printf("Please put in a[%d] element",i);//加一个这个好看些。
scanf("%d",&a[i]);
getchar( ); //这里要添加一个getchar,用来吃掉多余的'
'
}
printf("Enter the number you manna cancle:
");
scanf("%d",&n);
cancle(a,n);
for(i=0;i<N;i++)
printf("%d,",a[i]);
return 0;
}
void cancle(int p[ ],int n)
{
int i,j;
for(i=0;i<N;i++){//这里是小于,不是小于等于,因为索引是从0开始的,所以数组是a[0]到a[N-1]
if(p[i]==n){
j=i;
while( j<N -1)
{
p[j]=p[j+1];
j++;
}//这个while循环用来把数组剩下的元素往前挪。
}
}

}

如果是最后一个 那么直接长度减一
如果不是最后一个,那么把所有后面值依次前移一位,然后长度减一

#include <stdio.h>
#include <stdlib.h>

/**
*** value - 指定值
*** arr - 数组
*** arr_len - 数组长度的地址(指针)
**/
int delete_node(const int value, int *arr, int *arr_len)
{
int i = 0;
while (i < *arr_len) {
if (arr[i] == value) {
int j = i;
while (j < *arr_len - 1) {
arr[j] = arr[j+1];
++j;
}
--(*arr_len);
}
else {
++i;
}
}
}

int main()
{
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int arr_len = sizeof(arr)/sizeof(arr[0]);

delete_node(4, arr, &arr_len);
for (int i=0; i<arr_len; ++i)
printf("%d ", arr[i]);
printf("\n");

delete_node(6, arr, &arr_len);
for (int i=0; i<arr_len; ++i)
printf("%d ", arr[i]);
printf("\n");
}



跟你的问题一模一样
http://zhidao.baidu.com/question/47145683.html


怎么用c语言编写出一个在数组中删除最大和最小的元素后显示其他的数
include "stdio.h"void del(int d[],int i,int n){for(;i<n-1;i++){d[i]=d[i+1];}}int main(){int d[]={2,4,0,9,1,3,6,7,8,5};int max,min;int i,j;max=0;min=0;for(i=1;i<10;i++){if(d[i]>d[max]) max=i;if(d[i]<d[min])min=i;}\/* \/\/...

C语言编写从键盘输入一个数再
include <stdio.h>int main(){int i,n,s=1;scanf("%d",&n);for(i=1;i<=n-1;i++)s=s*i;printf("%d",s); return 0;}

c语言 输入一个整数 统计该整数的位数
include <stdio.h> main() { unsigned long num=0; int i=1,j=0; printf("请输入一个数:"); scanf("%d",&num); while((num\/i)>=1) { i=i*10; j++; } printf("该数为%d位数\\n",j); }有什么看不懂的问我,望采纳 ...

用c语言编写从键盘输入一个数,判断是否在数组a里(1~10的整数)
printf("%d不在数组里\\n",data);}

编写c语言程序,输入两个整数,输出包含他们在内及他们之间的奇数及个数...
要编写一个C语言程序,实现输入两个整数并输出它们之间以及包含它们的所有奇数及其个数,首先,打开DEV C++软件,新建一个源代码文件。在程序中,关键在于处理整数输入和输出,以及利用if-else语句进行奇数的判断。在程序开始,定义输入的两个整数变量,确保它们的类型为整数,对应输出函数中的“%d”。然后...

c语言问题 任意输入其中一个数,查找它在数组中的位置
int i,b,c;char t,y,n;do{ printf("请输入20,40,50,70,80,10,15,25,45,100十个数中任意一个:\\n");scanf("%d",&b);printf("b=%d\\n",b);for(i=0;i<=9;i++){ if(a[i]==b)c=i+1;} printf("第%d位数\\n",c);printf("是否继续y\/n:");fflush(stdin);scanf("%...

C语言 编写一个程序,输入一个正整数,求出它是几位数。
1、首先在打开的C语言软件窗口中,在Main函数的上方,写上阶乘函数的框架,如下图所示。2、然后定义一个变量【result】,如下图所示。3、然后输入if判断语句,就可以写下程序的关键语句,如下图所示。4、接下来就可以调用输出,如下图所示。5、最后点击运行,如下图所示,就可以运行测试。

用C语言编写程序:给你一个三位正整数,输出相应读法的汉语拼音,每个音之 ...
include <math.h>#include <stdio.h>#include <string.h>#define MIN(a, b) ((a) < (b) ? (a) : (b))char *numpinyin(char *buf, unsigned int n){switch (n){case 0: strcpy(buf, "líng"); return buf; break;case 1: strcpy(buf, "yī"); return buf; break;case 2:...

编写程序,从键盘输入一个3位的正整数,输出它的百位数,十位数和个位数...
voidmain(){inta;intb,c,d;\/\/各个位数上的数字printf(请输入一个三位数:);scanf(%d,a);b=a\/100;\/\/百位c=(a-b*100)\/10;\/\/十位d=a%10;\/\/个位printf(百位:%d,十位:%d,个位%d\\n,b,c,d);printf(它们的和是:%d\\n,b+c+d);} 世界上第一种计算机高级语言是诞生于1954年的...

用C语言写:有10个数由大到小顺序存放在一个数组中,输入一个数,_百度...
if(n

抚宁县13794842384: 用C语言编写一个在数组中删除指定值函数 -
熊试更昔: #include <stdio.h> #include <stdlib.h> /** *** value - 指定值 *** arr - 数组 *** arr_len - 数组长度的地址(指针) **/ int delete_node(const int value, int *arr, int *arr_len) { int i = 0; while (i < *arr_len) { if (arr[i] == value) { int j = i; while (j < *arr_len - 1) { arr[j...

抚宁县13794842384: c语言:从数组中删除数据怎么做? -
熊试更昔: #include<stdio.h> #define N 10 void main( ) { int a[N] , num ,i , *p , n=N; int j;/*输入N个数到数组a中;*/ for(i=0;i<n;i++) {scanf(“%d”,&num);a[i]=num; } /*在数组a中删除指定的数num;*/ for(i=0;i<n;i++) {if(a[i] == num){//a[i]=a[n];//如果不...

抚宁县13794842384: 用C语言实现一维数组中删除第N个元素的程序怎么写 -
熊试更昔: #include<stdio.h> int main() { int arr[]={1,3,10,5,4,} ; int delect=0; int i=0,j=0,k=0,t; int n;//n为数组长度 n=sizeof(arr)/sizeof(int); //printf("%d\n",n);//测试n printf("删除前数组为:"); for(k=0;k<=n-1;k++) { printf("%4d",arr[k]); } printf("\n"); ...

抚宁县13794842384: 给定一个数组,完成对某个元素的删除操作(c语言) -
熊试更昔: #define N 5 #includevoid main() { int i,*p,*q,a[N],e,k,count; count=N; printf("Enter the numbers:"); for(i=0;i=q;++q) { *(q-1)=*q; } --count; printf("the new array is :"); for(i=0;i

抚宁县13794842384: C语言“在字符串中删除指定的字符”?怎么编写程序 -
熊试更昔: 从字符数组中删除特定的字符,即输入要删除的指定字符,利用for循环找到非指定字符,将非指定字符输出即可.以下为具体的实现方法: #include<stdio.h> int main() { char str[100],c; int j,k; printf("please input a string:"); gets(str); printf("\...

抚宁县13794842384: C语言编程:删除整型数组中指定位置的元素 -
熊试更昔: 这个程序只需要一个for语句就可以了. 假设你的数组名称为array() 删除数组中的任意一个元素i PS:c的语言记得不是很清楚了,用c#来表示 for(j=i;i

抚宁县13794842384: C语言中怎样将数组中的一个数删除?
熊试更昔: 用覆盖的方法, 先用FOR循环遍历数组,然后在从你要删除的数据那截断,将后面的依次覆盖从你要删除数据.就OK.

抚宁县13794842384: 怎么在c语言字符数组中删除一个字符? -
熊试更昔: 字符数组中删除指定字符的方法: 输入一个字符串,以回车结束 输入指定字符 定义一个遍历字符串的下标变量和一个新的字符串下标变量 循环遍历字符串, 如果当前字符与指定字符不同,则将当前字符写入新下标位置,新下标+1 (相同则不处理) 遍历下标+1检测下一个 遇到字符串结束符,结束循环 循环结束后,新下标位置字符串结束符 输出新的字符串 参考代码:

抚宁县13794842384: c语言中,删除数组中的指定字符 -
熊试更昔: string str="abcdefghijklmn"; char del='a'; for(int i=0;i{if(str[i]==del) { for(int j=i;j str[j]=str[j+1];} } C++的核心实现部分,C语言大同小异

抚宁县13794842384: 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:*, ...

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