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

// 【输入】 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;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值