小白之神111 发表于 2019-11-6 23:18

c++删除制定下标的数组元素

本帖最后由 小白之神111 于 2019-11-6 23:19 编辑

是这样的,我看我们老师给我们的代码,看出了问题。但是没办法解决。代码很简单,所以我相信大神们肯定一眼就看出来了,帮帮忙,怎么解决这个问题?


代码如下:


#include <iostream>using namespace std;
int main()
{
      int a={1,4,7,10,13,16,19,22,25,28};
      int i,location;
      for(i=0;i<10;i++)
                cout<<a<<' ';
      cout<<endl;
      cout<<"请输入删除元素的位置(下标):";
      cin>>location;
      for(i=location;i<=8;i++)
                a=a;
      for(i=0;i<9;i++)
                cout<<a<<' ';
      cout<<endl;      
      return 0;
}

luanshils 发表于 2019-11-6 23:34

本帖最后由 luanshils 于 2019-11-6 23:37 编辑

这个语法,我看看,
我总觉得循环截止应该用数组的长度,
毕竟你是从查询的位置,依次将后一个元素移到前面

小白之神111 发表于 2019-11-6 23:39

本帖最后由 小白之神111 于 2019-11-6 23:41 编辑

luanshils 发表于 2019-11-6 23:34
这个语法,我看看,
我总觉得循环截止应该用数组的长度,
毕竟你是从查询的位置,依次将后一个元素移到前 ...
对 但是这个代码的意思就是要删除指定下标的元素。可是这个代码并不能从根本解决问题。大神。你能明白我在说什么吗。帮帮忙。看看怎么解决

luanshils 发表于 2019-11-6 23:42

for(i=location;i<=8;i++)
                a=a;
你的结果图呢

小白之神111 发表于 2019-11-6 23:44

luanshils 发表于 2019-11-6 23:42
for(i=location;i

大神。代码是正确的。你可能没明白我是什么意思。我的意思是。如果我删除最后一个元素会怎么样。你明白吗?

luanshils 发表于 2019-11-6 23:45

本帖最后由 luanshils 于 2019-11-6 23:48 编辑

小白之神111 发表于 2019-11-6 23:44
大神。代码是正确的。你可能没明白我是什么意思。我的意思是。如果我删除最后一个元素会怎么样。你明白吗 ...
嗯,那你就再设定一个,当下标为末尾的时候
你们学链表了吗

小白之神111 发表于 2019-11-6 23:48

luanshils 发表于 2019-11-6 23:45
嗯,那你就再设定一个,当下标为末尾的时候

对。所以我的问题就是。如果我删除最后一个元素。并不能真正删除。你看到的只是由循环变量控制的。真正的最后一个元素依然在那里没动。如何解决这个问题?

小白之神111 发表于 2019-11-6 23:50

luanshils 发表于 2019-11-6 23:45
嗯,那你就再设定一个,当下标为末尾的时候
你们学链表了吗

没用的。即使你再怎么赋值都不能删除最后一个元素。所以这就是问题所在。怎么解决

luanshils 发表于 2019-11-6 23:51

就直接判断if location为最末的9的时候干啥呗,然后数组刚学有一个缺陷,就是他不能随意更改大小,要等学到后面的内容才行,一般是赋0

hafeng45 发表于 2019-11-6 23:52

你的意思是这段代码运行到最后,数组依然是10个元素,且最后两个元素相等,只是最后显示的时候仅显示前9个元素,看上去像删除了指定元素,但实际上并没有达到从数组中删除元素的效果,对吗?
页: [1] 2 3 4
查看完整版本: c++删除制定下标的数组元素