华为笔试题含答案软件工程题

上传人:xt****7 文档编号:136151621 上传时间:2022-08-16 格式:DOC 页数:10 大小:43.50KB
收藏 版权申诉 举报 下载
华为笔试题含答案软件工程题_第1页
第1页 / 共10页
华为笔试题含答案软件工程题_第2页
第2页 / 共10页
华为笔试题含答案软件工程题_第3页
第3页 / 共10页
资源描述:

《华为笔试题含答案软件工程题》由会员分享,可在线阅读,更多相关《华为笔试题含答案软件工程题(10页珍藏版)》请在装配图网上搜索。

1、华为笔试题含答案 软件工程题写一个程序, 要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数。7 t% t6 b! : d: _7 h% T2 U+ h如:100个1是一个组合,5个1加19个5是一个组合。 请用C+语言写。: i0 k$ w m1 w Y$ J|# X; P7 m; H- C+ j4 m w答案:最容易想到的算法是: J9 N( 5 v8 z1 X9 W! e! S+ p 设x是1的个数,y是2的个数,z是5的个数,number是组合数/ l n& f! K 注意到0=x=100,0=y=50,0=z=20,所以可以编程为:. gw _% |2 u7 j;

2、l+ k0 _4 H( hD+ 9 % C( e! 2 & M# j$ o% U8 I2 U% E number=0;& C+ w9 A+ n1 m for (x=0; x=100; x+)$ I# d7 L7 Y$ K8 0 a1 j for (y=0; y=50; y+)% U/ o Y B* s for (z=0; z=20; z+)4 T3 B6 l+ y5 C B, r1 z& p if (x+2*y+5*z)=100), ; a2 N0 t m3 M) g) number+;# m3 L1 Q; suI& coutnumberendl;, |7 4 CI! e c) ?# q2 P

3、! 0 g% r: g5 h; D, q. n. j+ i% 上面这个程序一共要循环100*50*20次,效率实在是太低了( 1 s% 1 K6 o6 q 事实上,这个题目是一道明显的数学问题,而不是单纯的编程问题。我的解法如下: S: O+ m0 a: A3 N0 N3 w2 T 因为x+2y+5z=1006 u9 _* N7 I2 b 所以x+2y=100-5z,且z=20 x=100 y=50: R, p6 K4 h) p, M/ t7 5 s 所以(x+2y)=100,且(x+5z)是偶数8 OC: H. j/ M$ x 对z作循环,求x的可能值如下:1 T |) B( c% j. B

4、9 J 0 U9 & v9 J z=0, x=100, 98, 96, . 0, V8 l- i3 B9 n1 G0 K, - A2 l. J+ L z=1, x=95, 93, ., 1, G& l( F: H( * r z=2, x=90, 88, ., 0 a5 p- P O. m3 I z=3, x=85, 83, ., 11 o w. ?c/ g4 h% 9 N z=4, x=80, 78, ., 0( n0 G3 O/ V4 L8 d .5 u& t9 u; M4 o/ j z=19, x=5, 3, 10 K$ E3 |e g T0 f0 z=20, x=0. X5 K) L#

5、V5 Y X. 9 g! W nU i+ d( d. E% ( k5 U* |3 w 因此,组合总数为100以内的偶数+95以内的奇数+90以内的偶数+.+5以内的奇数+1,/ d N/ c( y. + 即为:f: E- X: s# J(51+48)+(46+43)+(41+38)+(36+33)+(31+28)+(26+23)+(21+18)+(16+13)+(11+8)+(6+3)+1- n6 c2 Z) w) T& n5 5 j# r r) V2 hz+ U3 B* c N n, ! q+ V! S+ _2 EO: FY* U2 dE 某个偶数m以内的偶数个数(包括0)可以表示为m/2+

6、1=(m+2)/23 c0 l4 N% Z B4 4 aE f6 K, 某个奇数m以内的奇数个数也可以表示为(m+2)/2! x i X% Y: f/ |, pr. N f: Y$ K J8 ! o2 NS F. . y 所以,求总的组合次数可以编程为:; j0 T ; E) 0 ! x( e, T o number=0;. P1 & _; ; h) for (int m=0;m=100;m+=5)* |. W, f1 U- _0 W& q# U. o0 B; M - s u; ws6 q( p8 D number+=(m+2)/2; # i2 Xz|& F2 N- g # T6 Q4 c0

7、U+ c3 6 m$ w2 d coutnumbernext = NULL;: v a) S6 ?. K2 u p=h;) N1 G C2 x; m( ! E/ b for(i=0;inext = s; G) t9 i- : F- & M+ O/ X printf(Please input the information of the student: name sex no age n);7 Z8 o6 m# r3 R* I( g& g scanf(%s %c %d %d,s-name,&s-sex,&s-no,&s-age);% A& u! B9 L3 X4 Y s-next = NULL

8、;% 1 A4 N0 J. D% |/ v2 M p = s;v, q7 _, : L2 c6 K 5 T* Q k; q: B J4 7 u3 h% f printf(Create successful!);8 o + L6 y; & l, l( u* a return(h);( 6 _ ?8 V/ 2 V0 P! s2 R9 |0 z) W# E# S/ E* ox% Jvoid deletelist(struct stu *s,int a); b; * m A/ q& FF3 + S. _5 X! q4 Vstruct stu *p; x0 o! r; l9 u7 c dwhile(s-

9、age!=a)+ y j/ e3 G) h0 Y/ T4 . Z% w6 s1 i: N$ wp = s;# N9 Q- L% m& 0 o ?. js = s-next;, : I % A2 x3 c7 B# . h% c# p% G$ 4 I7 Hif(s=NULL)/ Y* 3 ) e+ K, v0 kprintf(The record is not exist.);, I4 z2 E6 h/ b; x8 f& 6 Relse; C4 $ S, iR9 c, L3 O H2 d- y/ o6 y8 Ap-next = s-next;2 a, , J9 k0 lprintf(Delete

10、successful!);: p/ ?% m: y6 * S) # w9 E% 3 h) Y4 - h# b6 L- Q9 C* |: E3 H8 u% k9 Pvoid display(struct stu *s), L# U/ Z# z$ t3 o( t3 ) x8 P8 H; js = s-next; v- r1 q8 ?+ u9 S; v( U3 D7 o while(s!=NULL), A7 y8 U% R6 C% e8 Z; c + w6 B4 E h* t9 D7 T; ) m# V7 Y# u. I printf(%s %c %d %dn,s-name,s-sex,s-no,s

11、-age);. R Q4 D) L( y# H2 a* Sl1 w2 s = s-next;- ( s, D5 k# p+ _, A b 8 T$ F6 + k; U5 X+ j% ) 0 |# k; u0 N1 w) Gint main()% r9 r$ W z& z; K3 G+ X/ J0 5 t, S% L) Y struct stu *s; r, B5 u0 L* Eint n,age;9 H) z4 A6 t 6 % T6 t3 t2 Zprintf(Please input the length of seqlist:n);. i5 q8 X7 1 Euscanf(%d,&n);

12、9 J7 A& L2 r. X6 m s = creatlist(n); FN! z% T8 X- V0 H display(s); 5 * P7 s4 M7 + printf(Please input the age:n);7 r, ?# K/ A1 s1 a2 Z* a+ mscanf(%d,&age);+ t1 ?4 T4 2 A8 L* zdeletelist(s,age);2 b9 H6 K/ , n4 Z& fdisplay(s);: l: B7 F$ M; P) z return 0;1 7 0 t- N# # P4 O$ C. k. ) q. T B1 T% ?3 E, p4

13、s P# 4 j& _1 k9 p2、实现一个函数,把一个字符串中的字符从小写转为大写。1 e; ! 3 J1 t; q7 S( w; Y0 r/ # #include stdio.h7 W- e9 e+ O. & a* b4 Y#include conio.h6 Z7 oq6 b D$ c$ t K0 Y% j6 # A: u. U$ , D# bvoid uppers(char *s,char *us)# O/ e+ R7 s6 s( i( & B! v4 h% S& Z for(;*s!=0;s+,us+)( 7 Q+ ; |7 8 zT) W& W * & d( l2 Hp if(*s

14、=a&*s=z)4 X# R1 m# I2 p3 J/ t *us = *s-32;$ V: Y$ T6 2 f0 x& N( I! t! 3 K5 m else! p6 w: j3 R 4 d R *us = *s;# ?$ ?8 B1 1 d- L6 T8 S1 V 6 w+ C- x, y3 D. k2 Z *us = 0;: o c6 D$ Y* V* t3 I f4 B. m% u6 Y; y9 i# l, B: n7 J1 z5 rint main(). F% i Z/ b2 C9 D- 8 K8 G! P+ p$ o8 _/ v char *s,*us;0 y e8 , Q u#

15、 T3 A, . G char ss20;8 7 g5 L4 N N0 $ z printf(Please input a string:n);3 h/ v: n# x: V5 K/ % , N8 F- o D/ 8 | scanf(%s,ss);/ B. k: G( s( a; p s = ss;2 s9 l, I2 _) H$ % W uppers(s,us);6 H u4 T9 t2 s$ E# J0 & i* K$ t! _6 X printf(The result is:n%sn,us);5 S4 M7 a; p+ P9 V o getch();+ Y: e6 q% S2 b3 _*

16、 qL8 g7 x5 Z$ . 2 3 OH o( A7 c随机输入一个数,判断它是不是对称数(回文数)(如3,121,12321,45254)。不能用字符串库函数 5 _7 1 ?0 z9 J A5 z( - c3 o + h F1 Z5 V0 h/*. y7 w% j U3 A a/ O1. s8 rl0 o( x, x4 o. |$ D7 y函数名称:Symmetry 4 6 i% g/ a( i E) n功能: 判断一个数时候为回文数(121,35653) 2 |% Q: N7 C9 x输入: 长整型的数 9 V3 F9 ?. b$ i3 d2 ! Zd7 Z输出: 若为回文数返回值为

17、1 esle 0 4 Q? H3 p C% w: w$ A+ z+ t*/) W) k/ E, E% l! h- U3 _6 cunsigned char Symmetry (long n)( x& F3 s/ a: p* e V% y6 y; L% J) |# 1 Y* 0 Ilong i,temp;/ g/ C; - p1 L3 z. Y) vi=n; temp=0;% t0 H# Z0 t& pYwhile(i) /不用出现长度问题,将数按高低位掉换% u6 m6 l5 s& D! x. K0 C. F6 K* Z/ j# R( u6 i temp=temp*10+i%10;! l/ J

18、$ ( w; Q1 o i/=10;, RB. V# Ej2 |) S1 o7 k& i( 5 V) C4 y2 g H0 wreturn(temp=n);2 w4 v6 i- f! 0 D - E) L! o7 N7 F( i( J方法一 6 Y. F2 7 U; J4 U: B) k. y5 j. J2 /* - 5 0 F8 k: V1 E5 F) L & ( Q功能: ( D( M- F7 q! Y3 k判断字符串是否为回文数字 9 R4 W4 x$ M* O r7 N0 D实现: a! w x) U- L% p先将字符串转换为正整数,再将正整数逆序组合为新的正整数,两数相同则为回文数

19、字 - F& |% I$ 2 b) n/ c2 i输入: 5 + U2 z% e* _% C) P5 Z4 z, Zchar *s:待判断的字符串 4 f4 o$ ?# F6 h?# i D输出: ) Z+ s. q% _! # B: v& 7 无 0 Y/ s) ?8 e# R8 o返回: 2 o W9 u3 ?- ) W6 _9 m0:正确;1:待判断的字符串为空;2:待判断的字符串不为数字; 1 * K$ C c! H- s6 X$ J5 A) w3:字符串不为回文数字;4:待判断的字符串溢出 ) _6 M- g0 W% S# k- */ 6 FD+ Q: Y) t/ z5 U# Q-

20、Aunsigned IsSymmetry(char *s) T/ q) i# X% F5 g. O ! 4 A; X3 b* L6 E/ ; m+ ichar *p = s; 2 Q9 q* _) o4 ?; rlong nNumber = 0; ; Y$ I) c7 P+ U8 N# K/ m& flong n = 0; $ L v9 Y/ H$ Y% v0 _0 G v7 Q8 Jlong nTemp = 0; - O% C9 O+ f& T$ U5 d( U$ w) T; D& k- c, T/*判断输入是否为空*/ 6 n& K# ?/ a7 * ? d% ?if (*s = 0) %

21、 K8 M* V J, R/ N7 N , P& sreturn 1; / J e; ! & T0 T7 E( Q/ 8 x4 q3 j( O0 ?4 _/ D- i/ /*将字符串转换为正整数*/ & e, E0 % ! M# + s! P6 G& w8 Ewhile (*p != 0) ! m: K2 _4 T5 b/ m: e6 a 7 i1 R# _) j( 6 I/ h/*判断字符是否为数字*/ 2 k# M7 x D P& S3 h& q3 $ Oif (*p9) % e8 j; I0 C$ Breturn 2; 6 H, H3 O( I w6 y( g: c# a; $ R, y

22、5 9 M& R/*判断正整数是否溢出*/ 6 N- % v. E t1 O: uif (*p-0) (4294967295-(nNumber*10) 8 l+ ! A: G# X, N/ X% : hreturn 4; 6 P) z8 I k* * 7 w2 / V4 o6 N3 b6 c5 $ , k. ZnNumber = (*p-0) + (nNumber * 10); 5 ?( L; pw4 P- 0 $ |2 y( p) j3 kp+; ! R$ b% x q3 + P/ . & A $ B G/ a5 v9 n+ v, u6 c- ! A/ Ea5 k; R# W7 7 _/*将

23、数字逆序组合,直接抄楼上高手的代码,莫怪,呵呵*/ / j6 Q+ k: S! r/ n = nNumber; ; f h( E+ N$ w) r6 W+ I5 z8 m3 twhile(n) 6 z+ A! X( y1 G8 z 3 K& # $ q. + r/*判断正整数是否溢出*/ , 0 f, C P& Y( 7 B# iif (n%10) (4294967295-(nTemp*10) 9 S+ $ p# ? u: p$ Vreturn 3; + Y% W6 F$ m* z1 y0 # 8 ) 9 D% Z$ p+ MnTemp = nTemp*10 + n%10; 3 Y& : e

24、oE6 In /= 10; 4 U( o- ! o5 + M o& E J5 B6 u9 z* : P8 w+ k8 x* h7 g$ C% A) C/*比较逆序数和原序数是否相等*/ 3 m- E f, w/ Cif (nNumber != nTemp) 9 o # 9 Qreturn 3; $ b# b0 U9 B6 2 U X# o4 _# M! g! y% W8 Q/ 9 M6 ireturn 0; 5 _* m! 0 T( k5 n ; I$ J; Mq. z, s% F. x4 X8 g$ : h, x5 4 F h方法二 ) t4 m2 Z3 CJ: t/* - # Z ?6 ?

25、9 u. h3 o. |( _* Y功能: 5 Q3 n T/ m8 p) F7 R判断字符串是否为回文数字 0 G- W( n9 V, d& 6 n实现: 6 v6 o9 h5 S. P& J) k r2 R9 Q先得到字符串的长度,再依次比较字符串的对应位字符是否相同 , r4 f4 2 S! # N, N输入: # # y- w! k6 T7 P) u1 1 a0 char *s:待判断的字符串 3 + a8 S* _e输出: - x* r9 w! Qh, S8 u/ l无 0 ?4 o& T& l1 Z& ?9 PZ. j% g. n返回: 1 V1 w7 x! c0 V( M, W)

26、 S0:正确;1:待判断的字符串为空;2:待判断的字符串不为数字; p8 v6 a, _2 r: S( C3:字符串不为回文数字 * k6 i9 4 N- O# 1 N5 z; - */ 5 + d+ x( M1 T2 ?5 Ounsigned IsSymmetry_2(char *s) 0 S4 - l6 I1 L+ : v , z5 7 l! 5 X5 d( v1 mgchar *p = s; - H0 W. o* 0 int nLen = 0; ( M Q# 6 a, N) W$ Bv, Rint i = 0; 2 y; M6 n* |+ x8 ; t- E. ? i* S c4 w4

27、Y/*判断输入是否为空*/ 0 U+ y* l! C& U l) y4 o2 if (*s = 0) , K: e3 c8 l; mR, Breturn 1; 2 U( H) Y6 R% q) l& U1 ZG. cR( V8 q7 ?. Aa7 T1 S: g1 M4 q! y/*得到字符串长度*/ & C: r1 m Z4 owhile (*p != 0) 4 + f! ) J% 9 D7 o s8 A- j, B: t2 d+ I& R/*判断字符是否为数字*/ 5 p( m2 z9 u! T3 r! n* if (*p9) / u4 c! Mu1 |return 2; , h t7 o

28、$ e+ 3 l( V# G+ F: h$ G2 d9 ! V: Y; nLen+; / / / h5 U- _y2 _9 jp+; & q5 z0 Z* U5 P 0 g3 d. R: G, H+ R( d8 z2 a$ * 6 V, o$ A1 _: J/*长度不为奇数,不为回文数字*/ 0 % G( z: Z) W: + ln/ M/ tif (nLen%2 = 0) 7 5 B: ; s+ E: a, zreturn 4; & X1 g+ g8 D. / G# H. l9 A7 ?& e3 F1 w! /*长度为1,即为回文数字*/ ! i: S, h) h& A: L n fif (

29、nLen = 1) / w; ! _8 / d4 creturn 0; ; Z1 Y: X% v; E O+ p/ C: - B# c0 c/ , W5 E+ f% w( s, |: V/*依次比较对应字符是否相同*/ / |# T9 V- E# ?5 Up = s; : / T; * _. r6 A6 Z: ki = nLen/2 - 1; 9 C $ ?5 ; O W$ P* o3 owhile (i) 8 r/ j! _, V- lO 2 X% O* V% g: 1 ?5 gif (*(p+i) != *(p+nLen-i-1) $ X+ j2 F4 d. D8 p6 oreturn 3

30、; : H, j) b0 y; q4 d0 h7 k/ O: 3 Q& x* yi-; . . z& H/ rv+ w V : n; S/ . V5 o( o4 K% z- k6 a3 7 g# h# o! d0 t, l% Rreturn 0; , 8 g V( s5 J ( U8 s: / G6 M! E& I0 _% ?/ d& t6 P2 j* y* j/ v求22000的所有素数.有足够的内存,要求尽量快& - |# p 7 y: k2 d6 g7 I7 H. U0 I# T- _! u# 8 MO答案:+ z, A% _- 4 T2 i& N$ Z9 r$ T$ Zint find

31、value2000=2;4 |5 P8 7 U9 f# g- dstatic int find=1;% t oB8 mbool adjust(int value)9 L8 ) Tc6 r6 V, i2 K2 J( E) g/ m) s9 T1 s- P6 Xassert(value=2); c4 Q) p7 F8 Gif(value=2) return true;( Q, 1 i4 P7 X2 U1 Z0 6 , F5 ?8 Ufor(int i=0;i=find;i+)0 i H7 i& q( w! Q# c0 7 X, H, + U Z/ L$ : f6 if(value%findvalue=0)6 h+ 7 L: A) Dreturn false;0 t# R A6 h+ b- v0 g B, G* H0 8 o. Hu( t: M1 afindvaluefind+;0 Q; # M; W; U1 g3 T5 Sreturn true;, j6 I; ; ?7 v7 & 1 Z3 D

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!