#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
// 可以处理int类型
// n 指定后续参数的数量,可传递int参数.
// 存在相同元素则返回1,否则回返0
// 例子: equ(3, 6, 2, 8);
//
3个int数据,分别为6, 2, 8
int equ(int n, ...)
{
int i, j;
int * p;
va_list arg_ptr;
if (n < 1)
return 0;
va_start (arg_ptr, n);
p = malloc(sizeof(int) * n);
if (!p) {
// puts("Malloc error!\a");
exit(1);
}
for (i = 0; i < n; ++i) {
p[i] = va_arg(arg_ptr, int);
for (j = 0; j < i; ++j)
if (p[i] == p[j]) {
free(p);
return 1;
}
}
free(p);
return 0;
}
int main(void)
{
printf("%s\n", equ(5, 1, 2, 4, 5, 3)?"重复":"不重复" );
printf("%s\n", equ(3, 1, 2, 2)?"重复":"不重复" );
return 0;
}
传递一个判断数据是否相等的函数,和参数数据的指针来使equ更通用。(类似库函数qsort)
至少标准库函数中没有你要的函数
。/
[
本帖最后由 cosdos 于 2009-10-27 02:12 编辑 ]