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:37 编辑
这个语法,我看看,
我总觉得循环截止应该用数组的长度,
毕竟你是从查询的位置,依次将后一个元素移到前面 本帖最后由 小白之神111 于 2019-11-6 23:41 编辑
luanshils 发表于 2019-11-6 23:34
这个语法,我看看,
我总觉得循环截止应该用数组的长度,
毕竟你是从查询的位置,依次将后一个元素移到前 ...
对 但是这个代码的意思就是要删除指定下标的元素。可是这个代码并不能从根本解决问题。大神。你能明白我在说什么吗。帮帮忙。看看怎么解决 for(i=location;i<=8;i++)
a=a;
你的结果图呢 luanshils 发表于 2019-11-6 23:42
for(i=location;i
大神。代码是正确的。你可能没明白我是什么意思。我的意思是。如果我删除最后一个元素会怎么样。你明白吗? 本帖最后由 luanshils 于 2019-11-6 23:48 编辑
小白之神111 发表于 2019-11-6 23:44
大神。代码是正确的。你可能没明白我是什么意思。我的意思是。如果我删除最后一个元素会怎么样。你明白吗 ...
嗯,那你就再设定一个,当下标为末尾的时候
你们学链表了吗 luanshils 发表于 2019-11-6 23:45
嗯,那你就再设定一个,当下标为末尾的时候
对。所以我的问题就是。如果我删除最后一个元素。并不能真正删除。你看到的只是由循环变量控制的。真正的最后一个元素依然在那里没动。如何解决这个问题? luanshils 发表于 2019-11-6 23:45
嗯,那你就再设定一个,当下标为末尾的时候
你们学链表了吗
没用的。即使你再怎么赋值都不能删除最后一个元素。所以这就是问题所在。怎么解决 就直接判断if location为最末的9的时候干啥呗,然后数组刚学有一个缺陷,就是他不能随意更改大小,要等学到后面的内容才行,一般是赋0 你的意思是这段代码运行到最后,数组依然是10个元素,且最后两个元素相等,只是最后显示的时候仅显示前9个元素,看上去像删除了指定元素,但实际上并没有达到从数组中删除元素的效果,对吗?