UDP广播协议叫吃饭


私信TA

用户名:Mustenaka

访问量:136338

签 名:

个人博客www.mustenaka.cn

等  级
排  名 12
经  验 23888
参赛次数 8
文章发表 197
年  龄 3
在职情况 学生
学  校 Sky_box
专  业 NE

  自我简介:

欢迎光临我的博客www.mustenaka.cn,Python,C#,U3D,C/C++开发合作可以找我

解题思路:
    先讲数组排序,再删除重复内容,没有算法基础的人也可以搞定
注意事项:
    注意remove函数系统自带,所以要稍微改一下变量名,比如下面的代码我原本自定义函数名字就是remove()的,后来修改成了wowremove(),需要使用stdlib函数库,借助qsort函数进行快排序,再使用自定义函数进行删除。


int compare ( const void *a , const void *b )

{

  return *(int *)a - *(int *)b;  //升序排序

//return *(int *)b - *(int *)a; //降序排序

/*可见:参数列表是两个空指针,现在他要去指向你的数组元素。所以转型为你当前的类型,然后取值。

        升序排列时,若第一个参数指针指向的“值”大于第二个参数指针指向的“值”,则返回正;若第一个参数指针指向的“值”等于第二个参数指针指向的“值”,则返回零;若第一个参数指针指向的“值”小于第二个参数指针指向的“值”,则返回负。

        降序排列时,则刚好相反。

此函数用于qsort函数中的第四个参数。


参考代码:

#include<stdio.h>

#include<stdlib.h>

#define MAX 100

int cmp(const void *a, const void *b) 

     return(*(int *)a-*(int *)b);  //升序 

}

void wowremove(int *dat, int *len, int idx)

{

    (*len)--;

    for (int i = idx; i < *len; i++)

        dat[i] = dat[i+1];

}

int main()

{

int a[MAX],number,i,j;

scanf("%d",&number);

for(i=0;i<number;i++)

scanf("%d",&a[i]);

qsort(a,number,sizeof(int),cmp);

for(i=0;i<number-1;i++)

if(a[i]==a[i+1])

{

wowremove(a,&number,i+1);

i--;

}

printf("%d\n",number);

for(i=0;i<number;i++)

printf("%d ",a[i]);

return 0; 

}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区