2023年华为认证笔试题目.docx
《2023年华为认证笔试题目.docx》由会员分享,可在线阅读,更多相关《2023年华为认证笔试题目.docx(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 2023华为认证笔试题目 第一题【20分】:鉴定回文数组 给定一个数组推断是否是回文,这题没什么好说明,直接看代码: 1 #include 2 using namespace std; 3 4 bool isHuiWen(string s) 5 6 int length_s=s.length(); 7 int i=0; 8 for(i=0;i(length_s1);i+) 9 10 if(s.at(i)!=s.at(length_s-1-i) 11 return false; 12 13 return true; 14 15 16 int main() 17 18 string ss=ilo
2、veevolis; 19 if(isHuiWen(ss) 20 21 coutHuiwen 22 23 else 24 25 coutNo 26 27 return 1; 28 其次题【30分】:求两个整型数组的异集,即A+B-(A与B的交集)。 这里只是供应我的一个思路: 这个问题的求解可以简化为统计数组A B中任何字符的个数,A+B-(A与B的交集)的结果就是统计仅仅消失过一次的数字: 但是题目中没有限制是字符,而是整形,数据量太大,这里借用了map操作,进展简化内存: 针对这个思路程序如下: 1 #include 2 #include 3 using namespace std; 4 5
3、 map mi; 6 map:iterator mit; 7 int A10=1,2,3,4,5,6,3,2,8,9; 8 int B10=8,7,6,5,9,0,3,4,8,40; 9 int R20; 10 int RC=0; 11 12 13 void getAB(int* a,int na,int* b,int nb) 14 15 string re; 16 mi.clear(); 17 for(int i=0;i 18 19 mit=mi.find(ai); 20 if(mit!=mi.end() 21 22 mit-second+; 23 24 else 25 26 mi.inse
4、rt(make_pair(ai,1); 27 28 29 30 for(i=0;i 31 32 mit=mi.find(bi); 33 if(mit!=mi.end() 34 35 mit-second+; 36 37 else 38 39 mi.insert(make_pair(bi,1); 40 41 42 43 for(mit=mi.begin(),i=0;mit!=mi.end();mit+) 44 45 if(mit-second=1) 46 47 Ri+=mit-first; 48 49 50 RC=i; 51 52 53 int main() 54 55 getAB(A,10,B
5、,10); 56 for(int i=0;i 57 58 cout 59 60 return 1; 61 第三题【50分】:判定德州扑克的牌型。给5张牌,返回它的牌型,4个的,3个+对子,顺子,3个+2个单张,2对,1对,其他。 德州扑克我还是很喜爱玩的,其中牌型牌型可以有近10中结果,题目仅仅让我们推断七种。但是这七种结果不具有继承性,所以我们设计一个好的程序。 那么就要统一他们的表现形式,下面是我的思路: 排序 推断跳变次数 进展筛选结果 这样可以较为统一的处理各种结果,参考程序如下: 1 #include 2 #include 3 using namespace std; 4 5 str
6、uct Node 6 char type;/0 1 2 3四种花色,可以考虑用enum类型 7 int v;/面值 8 ; 9 10 Node N5= 11 0,5, 12 0,9, 13 0,2, 14 0,9, 15 0,9, 16 ; 17 18 int n_of_v5=0,0,0,0,0; 19 20 bool myCMP(Node a,Node b) 21 22 return a.vb.v; 23 24 25 bool myNCMP(int a,int b) 26 27 return ab; 28 29 30 /猎取每个的个数 31 int getN(Node* Nv) 32 33
7、int i=0; 34 int j=0; 35 int n=1; 36 for(i=0;i4;i+) 37 38 if(Nvi.v=Nvi+1.v) 39 40 n+; 41 42 else 43 44 n_of_vj+=n; 45 n=1; 46 47 48 n_of_vj+=n; 49 return j; 50 51 52 void showResult() 53 54 if(n_of_v0=4) 55 56 cout4+1 57 58 else if(n_of_v0=3n_of_v1=2) 59 60 cout3+2 61 62 else if(n_of_v0=3n_of_v1=1) 6
8、3 64 cout3+1+1 65 66 else if(n_of_v0=2n_of_v1=2) 67 68 cout2+2+1 69 70 else if(n_of_v0=2n_of_v1=1) 71 72 cout2+1+1+1 73 74 else if(n_of_v0=1) 75 76 /可能是顺子 77 if(N0.v=N1.v+1 78 N1.v=N2.v+1 79 N2.v=N3.v+1 80 N3.v=N4.v+1) 81 82 cout不好意思,出了个顺子 83 84 else 85 cout五张单牌 86 87 88 89 /传入大小为5的构造体数组 90 /进展推断 91
9、 int getType(Node* Nv) 92 93 /首先排序 94 sort(N,N+5,myCMP); 95 /提取个数 96 getN(Nv); 97 sort(n_of_v,n_of_v+5,myNCMP); 98 99 /依据n_数组进展推断 100 101 if(n_of_v0=4) 102 103 cout四个一样的哦 104 105 106 return 1; 107 108 int main() 109 110 getType(N); 111 showResult(); 112 return 1; 113 2023华为认证笔试题目二 1、通过键盘输入100以内正整数的加
10、、减运算式,请编写一个程序输出运算结果字符串。 输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。 补充说明: 1. 操作数为正整数,不需要考虑计算结果溢出的状况。 2. 若输入算式格式错误,输出结果为“0”。 要求实现函数: void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr); 【输入】 pInputStr: 输入字符串 lInputLen: 输入字符串长度 【输出】 pOutputStr: 输出字符串,空间已经开拓好,与输入字符串等长; 【留意】只需要完
11、成该函数功能算法,中间不需要有任何IO的输入输出 例如 输入:“4 + 7” 输出:“11” 输入:“4 - 7” 输出:“-3” 输入:“9 + 7” 输出:“0” 注:格式错误 复制代码 1 void arithmetic(const char *pInputStr,long lInputLen,char *pOutputStr) 2 3 assert(pInputStr!=NULL pOutputStr!=NULL lInputLen0); 4 int iOperand1=0; 5 int iOperand2=0; 6 char cSymbol; 7 long i; 8 for (i=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 年华 认证 笔试 题目
限制150内