C语言删除数组指定元素

#include<stdio.h>main(){inti,j,n;inta[10];printf("请输入需要删除的数:\n");scanf("%d",&n);print... #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]);
}

这个是我扥代码。。。
但是试了不行。。。。。。
望大虾帮忙修改下。。。
谢谢了
我没财富积分了
有了绝对追分!!!谢谢了
展开
 我来答
小夏聊生活
高能答主

2019-12-07 · 专注于分享生活知识,热爱生活
小夏聊生活
采纳数:447 获赞数:114612

向TA提问 私信TA
展开全部

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;

}

lgao622
推荐于2017-10-08 · 知道合伙人软件行家
lgao622
知道合伙人软件行家
采纳数:1137 获赞数:6550
毕业于武汉工程大学邮电与信息工程学院通信专业,软件行业,4年工作经验。

向TA提问 私信TA
展开全部

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

#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;
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sssstar007
推荐于2017-10-14 · TA获得超过321个赞
知道小有建树答主
回答量:547
采纳率:0%
帮助的人:255万
展开全部
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]);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友782081c

2019-12-05 · TA获得超过4548个赞
知道大有可为答主
回答量:2.2万
采纳率:87%
帮助的人:1052万
展开全部
就是我们不会诉诉,也不会删除的一个软件吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanfustudio
2011-04-24 · TA获得超过1万个赞
知道大有可为答主
回答量:5513
采纳率:100%
帮助的人:3754万
展开全部
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!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式