解题思路:
先讲数组排序,再删除重复内容,没有算法基础的人也可以搞定
注意事项:
注意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 人评分
C语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:734 |
C二级辅导-同因查找 (C语言代码)浏览:663 |
2006年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:468 |
C语言训练-斐波纳契数列 (C语言代码)浏览:1174 |
不容易系列 (C语言代码)浏览:668 |
Hello, world! (C++代码)浏览:1744 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:473 |
A+B for Input-Output Practice (C语言代码)浏览:468 |
C二级辅导-统计字符 (C语言描述——用函数求解)浏览:1181 |
母牛的故事 (C语言代码)浏览:503 |