马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
明明是同一种功能,但因为传入的类型不一样就写了3个只有参数不同的函数,请问有更好的办法吗??
//整理由小到大之正整数的数组,使其中任意数均不为任意数的倍数
//要求以零标示结束,参数为指向首元素的指针
//回传值为整理后的数组长度,不再以零标示结束
int DivisorArrayUnsignedShort(unsigned short* a);
int DivisorArrayUnsignedInt(unsigned int* a);
int DivisorArrayUnsignedLongLong(unsigned long long* a);
DivisorArrayUnsignedShort(unsigned short* a)
{
int num = 1, i, j;
if (!a[0]) return 0;
for (i=1;a[i];)
{
for (j=0;j<num;)
{
if ( ! (a[i]%a[j++]) ) goto next;
}
a[num++]=a[i];
next: i++;
}
return num;
}
DivisorArrayUnsignedInt(unsigned int* a)
{
int num = 1, i, j;
if (!a[0]) return 0;
for (i=1;a[i];)
{
for (j=0;j<num;)
{
if ( ! (a[i]%a[j++]) ) goto next;
}
a[num++]=a[i];
next: i++;
}
return num;
}
DivisorArrayUnsignedLongLong(unsigned long long* a)
{
int num = 1, i, j;
if (!a[0]) return 0;
for (i=1;a[i];)
{
for (j=0;j<num;)
{
if ( ! (a[i]%a[j++]) ) goto next;
}
a[num++]=a[i];
next: i++;
}
return num;
}
|