数组删除某个元素
<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<
展开
2个回答
展开全部
第一个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的都删除。
:
“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的都删除。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询