首页 > 试题广场 >

NumberList是一个顺序容器,以下代码执行后,Numb

[单选题]
NumberList是一个顺序容器,以下代码执行后,NumberList里的元素依次为:
List<int> NumberList = new List<int>(){2,4,1,3,5};
for(int i = 0;i<NumberList.Count;++i)
{
    int v = NumberList[i];
    if(v%2 = = 0)
    {
        NumberList.Remove(v);//删除的是元素,而非下标
    }
}
  • 2,4,1,3,5
  • 2,1,3,5
  • 4,1,3,5
  • 1,3,5
推荐
选择C
初始时,{2,4,1,3,5}
v=NumberList[0]=2;
2是偶数,删除2。
{4,1,3,5}
v=NumberList[1]=1;
1为奇数,NumberList不变。
v=NumberList[2]=3
3为奇数,NumberList不变。
v=NumberList[3]=5
5为奇数,NumberList不变。
最后NumberList中的元素为{4,1,3,5}

编辑于 2017-08-15 13:58:15 回复(7)
选c,第一次循环删除元素2,因为是顺序容器,容器中后面所有元素需要向前移动一个位置,即{4,1,3,5}。进入第二次循环判断的是i=1位置的元素,并没有对4进行操作,所以4并没有被删除。所以答案选C
发表于 2017-08-13 03:15:07 回复(3)
类似于Java中的ArrayList,
初始时Arraylist为{2,4,1,3,5}
第一次循环 i=0;v=2;2是偶数,所以把2从ArrayList中移除
这时ArrayList变为{4,1,3,5}
第二次循环i=1;v=1(因为新的ArrayList中4的索引是0),1不是偶数,
依次  3和 5都不是偶数
所以只删除了元素2
那么剩下的就是{4,1,3,5}咯
发表于 2017-08-19 11:36:56 回复(1)
发表于 2019-04-15 16:36:26 回复(0)
这是什么语言,删除的是元素而不是下标,就是因为i++跳过了4。跟楼下++i还是i++没有关系。
改成java代码
List<Integer> NumberList = new ArrayList<>(Arrays.asList(2,4,1,3,5)); for (int i = 0; i < NumberList.size(); i++)
{ int v = NumberList.get(i);  if (v % 2 == 0)
    {
        NumberList.remove(i);  }
}
System.out.println(NumberList.toString());
发表于 2017-08-17 21:58:30 回复(0)
为什么不是D?
发表于 2017-08-12 01:41:09 回复(1)
顺序容器,删除元素会使其余整体前移。当i=0,2整除被删除,此时数组元素整体前移,当i等于1时,4没取到,所以只删除元素2.此题与i++和++i无关,for循环语句是从初始化值开始执行的,所以两者无区别,只有单独运算时会考虑i是先取值还是先运算。
发表于 2022-02-13 22:05:27 回复(0)
删除之后元素的个数发生了变化,对应的索引也发生了变化
发表于 2023-05-27 11:47:24 回复(0)
学到了 但是没用过这个容器 完全不知道有这个特性……
发表于 2022-03-16 20:43:20 回复(1)
???
List<int> N = new List<int>(){1,2,3,45,};
反正Java不支持这样,<>里面不能是基本类型
就看得人很难受

发表于 2019-12-14 17:10:16 回复(1)
注意是顺序容器,删除一个元素后,后面所有元素均需要前移一个位置
发表于 2017-10-12 20:06:21 回复(0)
应该是NumberList删去了第一个数,然后第二个的4前移到第一位,从i=1开始就跳过了第一位的4
发表于 2023-10-28 16:55:47 回复(0)
删除元素后对应的数组改变,对应的下标也改变了
发表于 2023-10-12 14:53:54 回复(0)
删了就往前面移动
发表于 2022-08-15 10:49:56 回复(0)
大概就是删除了2后4就是第零个元素
发表于 2022-07-27 19:51:42 回复(0)
删除0下标后,4就成了0下标,1下标变成了数字1
发表于 2022-07-27 13:09:17 回复(0)
注意审题,因为NumberList是一个顺序容器,删除一个数据元素,其他所有的数据元素都要移动,由{2,4,1,3,5}变为{4,1,3,5},而  i  是自加的,会由0改变成1,继续遍历是寻找数组下标为1的数据元素。
发表于 2022-04-14 18:53:42 回复(0)
不管是不是偶数都i++,所以4没有被删除
发表于 2020-07-31 00:15:02 回复(0)
每次进行remove操作。列表元素都会发生变化,所以第二次v=1而不是v=2
发表于 2019-07-24 07:27:19 回复(0)
删了2后 4就变成数组中的0位置了 把4给略了
发表于 2019-07-02 16:56:59 回复(0)
主要注意在循环的过程中,count在变化
发表于 2019-03-19 08:16:14 回复(0)