数组删除某个元素

<a["i<删除之后是:"/<删除的数是;key;"intkey;for(i=0;i<<<<endl,3;endl<cout<4;下标值是;请输入要删除的数;&l... <a[" i<删除之后是:"/<删除的数是;key;" int key; for(i=0;i<<<<endl,3;endl< cout<4;下标值是;请输入要删除的数;<.h><<,6};<""iostream;>;"endl;< /<< } a[i]=a[i+1]; for(int i=0; i< i++) { if(a[i] == key) { b=a[i];:"<<,2;void main() { int a[]={1;"endl;后面的数往前移一位 } cout<<]=":" int b;a[i]<i<< cin><#include<5,4; i++) { cout<a[i]<<:"<" cout< 展开
 我来答
枝旺敖晗玥
2020-05-03 · TA获得超过3765个赞
知道大有可为答主
回答量:3148
采纳率:33%
帮助的人:476万
展开全部
第一个for()里,这个语句

“a[i]=a[i+1];
//后面的数往前移一位”
不能放在那。。不管有没有执行你的if语句,整个for循环都会执行“a[i]=a[i+1];
//后面的数往前移一位
”,而且当i=4时,还会出现下标越位,a[4]=a[5],a[5]下标越位。应该在找到的位置后,才后面的数往前移。#include<iostream.h>
void
main()
{
int
a[]={1,2,3,4,6};
int
key;
cout<<"请输入要删除的数:";
cin>>key;
for(int
i=0;i<5;i++)
{
if(a[i]==key)
{
cout<<"删除的数是:"<<a[i]<<"下标值是:"<<i<<endl<<endl;
for(int
j=i;j<4;j++)
a[j]=a[j+1];//后面的数往前移一位
break;
}
}
if(i==5)
cout<<"未找到要删除的数"<<endl;
else
{
cout<<"删除之后是:"<<endl;
for(i=0;i<4;i++)
{
cout<<"a["<<i<<"]="<<a[i]<<endl;
}
}
}这种方法只会在数组里找最前一个数删除,而不是所有都==key的都删除。
阿四哥vlog
2021-04-29 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:607
采纳率:0%
帮助的人:27.7万
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式