c++中如何删除数组中特定的值,求大佬帮忙提示一下一下。刚开始学这门语言
8条回答 默认 最新
- CSDN专家-cpp_learner 2021-05-15 09:40关注
给你思路和代码,你先按着思路自己去写,实在写不出来,再来参考代码,这让对你的成长帮助很大!
思路:遍历数组,找到需要移除数值对应数值中的索引位置。然后从索引位置开始遍历数组,将数组索引后面的值往前挪一个位置,以达到覆盖删除效果。
代码:
#include <iostream> using namespace std; // 移除数组特定的值 bool removeArrayAppointData(int *arrays, int length, int data); int main() { int arrays[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int length = sizeof(arrays) / sizeof(arrays[0]); // 计算数组的长度 int data = -1; cout << "数组元素:" << endl; for (int i = 0; i < length; i++) { cout << arrays[i] << ", "; } cout << endl; cout << "请输入需要移除的元素:" << endl; cin >> data; // 移除指定元素 removeArrayAppointData(arrays, length, data); cout << "移除元素后:" << endl; for (int i = 0; i < length - 1; i++) { // 长度length - 1,后续遍历就不会将最后一个数值打印出来,但其还是存在于数组中 cout << arrays[i] << ", "; } cout << endl; return 0; } bool removeArrayAppointData(int *arrays, int length, int data) { int indexs = -1; // 存储数值对应数值的索引下标 // 合法性检查 if (arrays == NULL || length < 1) { cout << "数据不合法!" << endl; return false; } // 寻找数值对应数组的下标 for (int i = 0; i < length; i++) { if (arrays[i] == data) { indexs = i; } } // 如果indexs还是等于-1,说明数组中没有与之对应的值 if (indexs == -1) { cout << "没有找到值!" << endl; return false; } // 将数组索引后面的值都往前诺动一个位置,以达到删除效果(弊端:数组最后一个值还是存在的) for (int i = indexs; i < length; i++) { arrays[i] = arrays[i + 1]; } return true; }
有不懂的再评论提问!
如果问题解决,请点个采纳,谢谢!
解决 1无用
悬赏问题
- ¥100 复现论文:matlab仿真代码编写
- ¥15 esp32驱动GC9A01循环播放视频
- ¥15 惠普360g9的最新bios
- ¥30 这个功能用什么软件发合适?
- ¥60 微信小程序,取消订单,偶尔订单没有改变状态
- ¥15 用pytorch实现PPO算法
- ¥15 关于调制信号的星座图?
- ¥30 前端传参时,后端接收不到参数
- ¥15 这是有什么问题吗,我检查许可证了但是显示有呢
- ¥15 机器学习预测遇到的目标函数问题