c语言将数组元素倒置,想删除数组重复的元素。。。只保留第一个重

如何将A数组中的相同元素去掉,只保留一个,存在B数组_百度知道
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
如何将A数组中的相同元素去掉,只保留一个,存在B数组
我有更好的答案
建一个大数组c,容量为数组a和b的容量之和先将一个数组a的数据循环放入c, 放入时检验是否存在,存在则不放入继续将数组b的数据循环放入c,放入时检验是否存在,存在则不放入数组c为需要的合并数组
采纳率:87%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包js在数组中删除重复的元素自保留一个(两种实现思路)
投稿:whsnow
字体:[ ] 类型:转载 时间:
遍历要删除的数组arr, 把元素分别放入另一个数组tmp中,在判断该元素在arr中不存在才允许放入tmp中,具体实现如下,需要的朋友可以看看
例如:var student = [‘qiang','ming','tao','li','liang','you','qiang','tao'];
第一种思路是:遍历要删除的数组arr, 把元素分别放入另一个数组tmp中,在判断该元素在arr中不存在才允许放入tmp中
用到两个函数:for ...in 和 indexOf()
&script type="text/javascript"&
var student = ['qiang','ming','tao','li','liang','you','qiang','tao'];
function unique(arr){
// 遍历arr,把元素分别放入tmp数组(不存在才放)
var tmp = new Array();
for(var i in arr){
//该元素在tmp内部不存在才允许追加
if(tmp.indexOf(arr[i])==-1){
tmp.push(arr[i]);
第二种思路是:把目标数组arr的元素值和键的位置调换 自动就把重复的元素给删除掉了,调换后的样子:array('qiang'=&1,'ming'=&1,'tao'=&1)
&script type="text/javascript"&
var student = ['qiang','ming','tao','li','liang','you','qiang','tao'];
function unique(arr){
var tmp = new Array();
for(var m in arr){
tmp[arr[m]]=1;
//再把键和值的位置再次调换
var tmparr = new Array();
for(var n in tmp){
tmparr.push(n);
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具C语言问题 把一个数组中的重复元素去掉_百度知道
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
C语言问题 把一个数组中的重复元素去掉
#include&stdio.h&
int main()
int a[10],i,j,m=0;
printf(&输入数组:\n&);
for(i=0;i&=9;i++)
scanf(&%d&,&a[i]);
for(i=0;i&=9;i++)
for(j=i+1;j&=9;)
if(a[j]==a...
先排序,在进行遍历比较。#include&&stdio.h&//&升序数组srcvoid&sort(int&*src,&int&len){&&&&int&&&&&for&(int&i&=&0;&i&&&&i++)&&&&{&&&&&&&&for&(int&j&=&0;&j&&&len&-&i&-&1;&j++)&&&&&&&&&&&&if&(src[j]&&&src[j+1])&&&&&&&&&&&&{&&&&&&&&&&&&&&&&tem&=&src[j];&&&&&&&&&&&&&&&&src[j]&=&src[j+1];&&&&&&&&&&&&&&&&src[j+1]&=&&&&&&&&&&&&&}&&&&}}int&main(){&&&&int&num[10]&=&{0,&2,&5,&1,&1,&5,&4,&9,&2,&1},&d;&&&&int&i&=&0,&&&&&sort(num,&10);&&//&排序&&&&d&=&num[0];&&&&for&(i&=&1;&i&&&10;&i++)&//&遍历比较&&&&{&&&&&&&&if&(num[i]&!=&d)&&&&&&&&{&&&&&&&&&&&&printf(&%d&&,&d);&&&&&&&&&&&&d&=&num[i];&&&&&&&&}&&&&}&&&&if&(num[9]&==&d)&&&&&&&&printf(&%d\n&,&d);&&&&return&0;}
&nbsp:\n&&&&&&&for(i=0,j;&&&&i&=9;&&else&&&&&&&&&0;&i&=9-m;&&&a[j]=a[j+1];&&&&&&i&9-m;i++)//i&=9-m;)//j&=9----&j&&&&&&for(;j&&&&&&&=9-m&&&&&&&&&}&&&&&&&&&&&&&&&&m++;&&&&&&&&&&&&&&&&j=i+1;&&&&&&&&&&&&}&&&&&&&&{&&&&&&&&scanf(&%d&;for(i=0;,a[i]);&&&&}&printf(&输入数组;&=9----&&main(){&&&&int&&&&&&&&&&&=8----j&=8-m&&&&&&&&&&&&&&&&{&&a[10];&i++)&=8-m;j++)//j&&&&return&&&&&&&&j++;&&nbsp,&a[i]);&&&&}&{&&&&&&&&for(j=i+1;j&&&&&&);&&{&&&&&&&&printf(&&&&&&&&nbsp,i;&&nbsp,m=0;&{&&&&&&&&&&&&if(a[j]==a[i])&&&&&&&&&&&&{&&&&i&9-m&&&&&&&&i++)&&&&&&&&%d&&&&&&&}&&&&}&for(i=0;&&&&&&&nbspint&nbsp
本回答被提问者采纳
int&*&&nbsp!=&input[ii])&&{&nbsp,&nbsp./zhidao/pic/item/daafd6fc37d8f9edab;(,11,33基本思路先将数组排序拷贝数组去重#include&&}&return&size_ans&+&&int&b[16];int&&++size_&&&ans[size_ans]&&unique(int&}int&}int&&=&0||input==0||ans==0){&void&ii&less(void&*a;*&input,&const&nbsp,sizeof(int),16,b);=&input[ii];&&}&nbsp.h&int&nbsp,less),0;1;*((int&nbsp,-3,7,3};ans){&int&nbsp,88,23;size_ans&&{56;ii&a[]&=&return&0,12,88.*b){&}&qsort(a,size_*)(a))-*((int&*)(b)).jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http://c.hiphotos,209;}<a href="input[0];&for&return&ans[size_ans]&=&size_++ii)&nbsp,11,11.main(){&int&nbsp,33,54,&=&0;&int&nbsp://c;int&size_{&&if&(ans[size_ans]&.com/zhidao/wh%3D600%2C800/sign=e37cdccf0afa513d51ff64d80d5d79c3/daafd6fc37d8f9edab.jpg" esrc="http://c.size=unique(a;=&0;&if&(size_input&nbsp
为您推荐:
其他类似问题
c语言的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;千里之行 始于足下
欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 10792 人关注过本帖
标题://请编写函数fun,该函数的功能是:删去一维数组中所有相同的数,使之只剩下 ...
等 级:新手上路
结帖率:33.33%
&&已结贴√
&&问题点数:20&&回复次数:5&&&
//请编写函数fun,该函数的功能是:删去一维数组中所有相同的数,使之只剩下一个。函数返回删除后数组中元素的个数。
#include&stdio.h&
int fun(int a[],int n)
&&& int i,j,x,
&&& for(i=0;i&n-1;i++)
&&&&&&&&for(j=i+1;j&n;j++)
&&&&&&&&&&&&if(a[j]==a[i])
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& for(x=j;x&n-1;x++)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&a[x]=a[x+1];
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& n--;
&&&&&&&&&&&&&&& i--;
&&&&&&&&&&&&}
&&& num=n;
int main()
&int a[100],i,n,
&&& scanf(&%d&,&n);
&for(i=0;i&n;i++)
&&scanf(&%d&,&a[i]);
&num=fun(a,n);
&for(i=0;i&i++)
&&printf(&%5d&,a[i]);
不知道哪里错了,提交时总是出现1.main.c:8:Bounds error: attempt to reference an illegal pointer&&&2.main.c:8:&&Pointer value: 0xbf8622ac
搜索更多相关主题的帖子:
来 自:斗气大陆
等 级:贵宾
威 望:43
帖 子:2218
专家分:13561
我这里调试没有错误啊...
你的错误提示好像是数组越界了,可是我又没看到数组越界的地方
附件: 您没有浏览附件的权限,请
三十年河东,三十年河西,莫欺少年穷!
等 级:蒙面侠
帖 子:812
专家分:4151
初步没发现什么错误啊
一花一世界、一叶一追寻、片片花叶落、情系何人身。
等 级:新手上路
回复 2楼 韶志
作业提交的时候无结果,j最大取num-1, x=j也会取num-1,这时a[x+1]是不是越界了?可是不会改啊
来 自:斗气大陆
等 级:贵宾
威 望:43
帖 子:2218
专家分:13561
&&得分:20&
回复 4楼 笨蛋一个
确实是这地方越界了
你试试这样改&&& 红色部分
#include&stdio.h&
int fun(int a[],int n)
&&& int i,j,x,
&&& for(i=0;i&n-1;i++)
&&&&&&&&for(j=i+1;j&n;j++)
&&&&&&&&&&&&if(a[j]==a[i])
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& if(j&n-1){
&&&&&&&&&&&&&&&&&&&&for(x=j;x&n-1;x++)
&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&a[x]=a[x+1];
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& n--;
&&&&&&&&&&&&&&& i--;
&&&&&&&&&&&&}
&&& num=n;
int main()
int a[100],i,n,
&&& scanf(&%d&,&n);
for(i=0;i&n;i++)
&&scanf(&%d&,&a[i]);
num=fun(a,n);
for(i=0;i&i++)
&&printf(&%5d&,a[i]);
三十年河东,三十年河西,莫欺少年穷!
等 级:新手上路
回复 5楼 韶志
好的,谢谢你。
版权所有,并保留所有权利。
Powered by , Processed in 0.159286 second(s), 7 queries.
Copyright&, BCCN.NET, All Rights ReservedC语言合并两个数组并去重
0人收藏此代码,
给定含有m、n个元素的两个有序(非降序)整型数组a和b。
合并两个数组中的元素到整型数组c,要求去除重复元素并保持c有序(非降序)。
例子如下:
a = 2,3,4,6,8,9
b = 7,9,10
c = 2,3,4,6,7,8,9,10
// 合并两个含有nA、nB个元素的有序数组
void Merge(int *a, int *b, int *c, int nA, int nB, int& nCout)
int i = 0 ;
int j = 0 ;
int k = 0 ;
while (i & nA && j & nB)
if (a[i] & b[j])// 如果a的元素小,则插入a中元素到c
c[k++] = a[i] ;
else if (a[i] == b[j])// 如果a和b元素相等,则插入二者皆可,这里插入a
c[k++] = a[i] ;
else // a[i] & b[j] // 如果b中元素小,则插入b中元素到c
c[k++] = b[j] ;
if (i == nA) // 若a遍历完毕,处理b中剩下的元素
for (int m = m & nB; ++m)
c[k++] = b[m] ;
else//j == n, 若b遍历完毕,处理a中剩下的元素
for (int m = m & nA; ++m)
c[k++] = a[m] ;
//该代码片段来自于: /codes/cpp/8765
int main()
int* a= new int[6];
int* b= new int[3];
int nOut = 0;
int* output = new int[12];
Merge(a, b, output, 6, 3, nOut);
for (int i=0; i&nO i++)
cout && output[i] && &,& ;
output=NULL;
//该代码片段来自于: /codes/cpp/8765
测试结果:
2,3,4,6,7,8,9,10,
相关代码片段:
最新C/C++代码片段
合作网站:

我要回帖

更多关于 c语言数组元素的删除 的文章

 

随机推荐