您的位置:首页 > 其它

2014华为机试——按照升序排列返回整型数组中包含指定整数的元素

2014-07-17 17:34 330 查看
// 【输入】 num:整型数组;
//
// value 指定的整数
//
// 【返回】 按照升序排列返回整型数组中包含指定整数的元素
//
// 【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出
//
// 示例
// 输入:num = {12345,654123,98764,123654,9876,4,6,97,8,123} value = 123
//
// 返回:{123,12345,123654,654123}

#include<IOSTREAM>
using namespace std;
bool subInt(unsigned int dest, unsigned int src);
int compare(const void *p, const void *q)
{
return *(const int *)p - *(const int *)q;
}
int main()
{
unsigned int arr[10] = {12345,654123,98764,123654,9876,4,6,97,8,123};
unsigned int value = 123;
qsort(arr, 10, sizeof(int), compare);
for (int i=0; i<10; ++i)
{
if (subInt(arr[i], value))
{
cout << arr[i] << " " ;
}
}
cout << endl;
cout << subInt(123654,123);
}

//功能:在目标整数dest中寻找子整型src,即判定dest中是否包含src
//dest:目标整数
//src:指定的整数 (当src为0时,dest肯定包含的,因为123可看为0123)
//return:包含就返回true,否则false
bool subInt(unsigned int dest, unsigned int src)
{
unsigned int gewei1 = dest % 10;
unsigned int gewei2 = src % 10;
while (dest && gewei1 != gewei2)
{ //当dest不为0时,从其后往前,不断取个位,直到gewei1 == gewei2 或者dest==0
dest /= 10;
gewei1 = dest % 10;
}

if (!dest)
{
if (!src)
{//都为0,则表示二者一样
return true;
}
else
return false;
}
else
{//此时gewei1 == gewei2
do
{
dest /= 10;
gewei1 = dest % 10;
src /= 10;
gewei2 = src % 10;

} while (gewei1 == gewei2 && src);
if (!src)
{ //src走到尽头
return true;
}
else
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐