|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
复制代码 |
|