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

来源:互联网 发布:手机信号屏蔽软件下载 编辑:程序博客网 时间:2024/06/15 20:48
// 【输入】 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,否则falsebool 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==0dest /= 10;gewei1 = dest % 10;}if (!dest){if (!src){//都为0,则表示二者一样return true;}elsereturn false;}else{//此时gewei1 == gewei2do {dest /= 10;gewei1 = dest % 10;src /= 10;gewei2 = src % 10;} while (gewei1 == gewei2 && src);if (!src){ //src走到尽头return true;}elsereturn false;}}

0 0