下沙论坛

 找回密码
 注册论坛(EC通行证)

QQ登录

QQ登录

下沙大学生网QQ群8(千人群)
群号:6490324 ,验证:下沙大学生网。
用手机发布本地信息严禁群发,各种宣传贴请发表在下沙信息版块有问必答,欢迎提问 提升会员等级,助你宣传
新会员必读 大学生的论坛下沙新生必读下沙币获得方法及使用
查看: 2431|回复: 8
打印 上一主题 下一主题

笔试题好多不会做~郁闷

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-6-2 16:46:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案
8 |. f+ ]! z" n/ A; ~+ ~一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)
/ T! V% ^9 P% S提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
7 g! N, E& u1 Z' k9 y. L2 e    if ( n == 0 )' B7 R' H1 Z1 C2 F7 `
    if ( n != 0 )5 e1 n% e) F$ @: R$ l3 ]' A: J
以此类推。
3 v. W1 t% x% ]2 o, a2 P' ~请写出 BOOL  flag 与“零值”比较的 if 语句:: T* W9 V9 [1 G, E; |
% q% l( h, Z& F5 ~* K+ r! q, X3 n
请写出 float  x 与“零值”比较的 if 语句:/ `% |& }) W8 y2 y0 H

( w7 J& }; b- v$ p, Q- y+ _请写出 char  *p 与“零值”比较的 if 语句:1 g' R+ B& B8 @, A: ]  D

$ A" X( H8 {, N二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
) ?3 t& M. {+ S( q0 y/ ychar  str[] = “Hello” ; 5 N7 D8 i9 \" Q/ W7 |
char   *p = str ;2 S& D0 C  C+ [  y( \
int     n = 10;8 Z! m! T+ ^7 y
请计算; B& a$ e  X: O4 [& ]6 p! ?8 C( D2 ?
sizeof (str ) =                 6 w3 p9 `/ g, `4 ]+ I4 |7 j
sizeof ( p ) =                 
, P) j! i) n# _8 t& Esizeof ( n ) =; w) g( T/ _6 J
void Func ( char str[100])! n( u" {6 J- D- J/ |
{8 F8 s) }( C% p, x/ A
请计算 - W; N9 W- ~9 g7 J
sizeof( str ) =   
7 y, t2 a% V& E% _0 W* K5 R}! T6 O# A  n8 G
void *p = malloc( 100 );
$ B5 T- p& b1 |' v请计算- T' B, C8 ?7 R, J1 H6 j$ G2 L& W
sizeof ( p ) =( O# W2 e- v0 y/ w! w- f# ~9 h8 Y
三、简答题(25分)
5 {; x' t6 V7 h* r& P4 `" U8 R- Z1、头文件中的 ifndef/define/endif 干什么用?- R$ ]/ w) ?$ J
2、#include     和  #include  “filename.h” 有什么区别?$ p' I& o9 ~9 K1 C% x( ~, n- _
3、const 有什么用途?(请至少说明两种)
5 B2 p1 q4 j3 F- i4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?
: P4 o. j0 u/ E% N" y1 ?四、有关内存的思考题(20分)* F: u: J4 K+ o6 F' M$ ~- D
void GetMemory(char *p)
! q4 H/ h+ [2 g& F2 l{
* x1 @5 ~% ~9 I5 hp = (char *)malloc(100);
* k- H# O, e* Z+ x1 k}( V) F& @1 ]% H9 L; F
void Test(void) # q" P3 e0 q, d% X8 K; h" ]  A# b
{$ K$ g3 N  y- b" z; Q3 G
char *str = NULL;
% P" n1 J! n  I) y/ KGetMemory(str);
/ p7 Q0 Y; Y/ w3 l; I$ ]strcpy(str, "hello world");% r+ Z% s6 t; g% s7 U3 `8 U3 q
printf(str);
& U/ S  }+ L6 O}- ]- M, n$ O% L/ m
请问运行Test函数会有什么样的结果?5 `" }% I6 ^. y/ g+ s* \! g% A
答:
$ U3 \* R4 `' {: K" Z& p/ C7 [: n6 d8 P' e
Void GetMemory2(char **p, int num)
: O6 r3 ~- H( P' c( q{* g" Y8 P5 S. k5 x: [9 j0 v
*p = (char *)malloc(num);
+ ~4 ?; e) h0 a# o}
  R3 z# F. ]  D- e9 K2 i& uvoid Test(void)
3 m' o- c& i2 X/ `7 C/ r{
/ ^$ T3 q/ h6 D3 o& u1 Ychar *str = NULL;: _. T$ F3 n8 o0 a
GetMemory(&str, 100);
9 ~" V( [/ C5 d8 u' Z0 \7 }) f8 Astrcpy(str, "hello");
8 N* a+ q7 t. Z& V. rprintf(str); 8 u  P: r: c6 z
}8 }9 b% B4 |3 l2 H3 F
请问运行Test函数会有什么样的结果?5 h6 b- x# @/ }5 i' J
答:
! k1 w" q/ ~) ^, ochar *GetMemory(void)
2 Y4 w# ~) j5 r/ g{ 9 L7 ^/ T9 J) {: F4 h# F) ^
char p[] = "hello world";, i- F2 C6 F# l# t( ^* `. R
return p;6 Y' t9 a$ K  ~% S" G7 w
}
# l! W8 h/ o- g# E1 B$ M+ S8 g4 Mvoid Test(void)
" x: F! Z' v: {; |, U. |: A{
2 V' F& j5 D8 _9 O( Jchar *str = NULL;3 O& ]+ n4 Q* |7 N; d
str = GetMemory();- r; q& r; {; j9 i
printf(str);7 S) ]9 N1 N) j; v! Y; T
}( ]3 }" {, Y! {2 \
请问运行Test函数会有什么样的结果?& ~2 d' S8 k2 p/ _) ], m
答:
: {1 e. S9 O- o# t/ \5 B- A
$ S% h' [1 `: Fvoid Test(void)$ ]/ C6 B; @& U
{; W$ H9 r/ \/ v7 A% ^1 Y2 e% ?
char *str = (char *) malloc(100);
3 k7 h3 p+ _- pstrcpy(str, “hello”); / w2 ^) K5 R9 k- a% u. A8 ~
free(str);     
$ \% i( `2 X) Eif(str != NULL)
) O# G1 D+ `! X" ^2 y; z{, T" W$ }( g+ X, A. g8 `
strcpy(str, “world”);
7 b# b! Q8 Q" k3 Y# x: Y$ z2 U; jprintf(str);
1 {3 R% w1 K8 _0 f) H}
- F& O8 e  r3 N9 T, H$ C6 i/ Y}5 m. v% o$ X. p7 d" H/ Y6 F
请问运行Test函数会有什么样的结果?6 K+ [4 H$ f$ d
答:
. }7 ^0 s: _9 m
5 i. x. x5 y5 f$ Y6 `) p0 _五、编写strcpy函数(10分)
* }. ~, W/ t- y* z7 N/ {" b+ N% m+ q已知strcpy函数的原型是2 f0 _; Y9 L  d' s# L9 c4 O
char *strcpy(char *strDest, const char *strSrc);
7 O4 @+ b1 G9 m4 ~4 b9 p0 i 其中strDest是目的字符串,strSrc是源字符串。" U/ e- @( Q9 @+ l- m- g) r0 P$ G
(1)不调用C++/C的字符串库函数,请编写函数 strcpy
, f' m  Y; @) _& p+ N" t: \7 B- V% F0 {+ z) J
2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
5 l, {6 ^' a5 h2 {  ?5 W0 @. i  U+ I
六、编写类String的构造函数、析构函数和赋值函数(25分)' f5 w: U/ U! |, `7 l; i
已知类String的原型为:
& Q7 D2 [: ~3 p" a8 Z4 e/ x# Y+ G1 I class String
9 y4 B( o& b2 s2 w! f {+ B' G/ V1 c/ Y6 O6 M4 }
   public:
, b0 b0 X) P. y( {8 y  String(const char *str = NULL); // 普通构造函数" }# ~- f7 G8 e' x
  String(const String &other);     // 拷贝构造函数
; T$ }: F. u  a/ M( b2 V+ `  ~ String(void);         // 析构函数8 [- A3 |" C; C9 t
  String & operate =(const String &other); // 赋值函数' L1 U6 M1 y3 }5 E# M6 L. w& {
   private:
9 e$ `8 ~8 j: w  char   *m_data;    // 用于保存字符串
1 h2 ^5 f3 u; l) |3 x9 j' y };- V0 W! t! ~/ K: P) D
请编写String的上述4个函数。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶 踩

该用户从未签到

2
发表于 2005-6-2 18:59:00 | 只看该作者

软考的?

其实都是很基本的题目阿

该用户从未签到

3
 楼主| 发表于 2005-6-2 21:59:00 | 只看该作者
以下是引用游侠无极限在2005-6-2 18:59:15的发言:- k$ X! Y. z% t! S # x3 c7 F; I2 p4 C+ [

软考的?

! \$ K+ J4 {5 U# t- H

其实都是很基本的题目阿

* C% i, r& c {! q' F+ r+ @: Y6 I3 L# m # p$ e8 F8 m" ^, c4 J3 o8 s C有N年没看了。。大哥给几道答案吧

该用户从未签到

4
发表于 2005-6-3 10:54:00 | 只看该作者

都很简单啊,要比较0值你只要注意它的范围和精度就可以了。

sizeof除了第一个为6,其余的都应该为4,因为它们事实上都是在对指针进行sizeof操作,而不是指针指向的数据区。

  • TA的每日心情
    奋斗
    2015-9-17 00:58
  • 签到天数: 1 天

    [LV.1]初来乍到

    5
    发表于 2005-6-3 15:04:00 | 只看该作者
    以下是引用Eagle在2005-6-3 10:54:17的发言: 5 y0 v( }! |2 l" ?% k& r! k& J# u0 F) m" I0 l3 B \4 `

    都很简单啊,要比较0值你只要注意它的范围和精度就可以了。

    ( w4 L5 W. z( l# C u7 F

    sizeof除了第一个为6,其余的都应该为4,因为它们事实上都是在对指针进行sizeof操作,而不是指针指向的数据区。

    $ Q# y2 a6 D3 d, r7 l! b% ], Q8 W9 U , h7 q6 Y8 h0 {, j9 p9 P- V; E! Y6 o yes you are all right ' I+ c' \ X' x1 y楼主这些题目实在太基础了,如果这些不会,需要去看基础的知识,推荐 C++ primer

    该用户从未签到

    6
    发表于 2005-6-3 19:14:00 | 只看该作者
    三、简答题(25分)4 T5 U9 l- F [9 z- w 1、头文件中的 ifndef/define/endif 干什么用? $ R& y) [8 q2 T8 p, G起码加上前缀(#)吧,其中 #ifnedf 就是说如果没有定义什么则……) m1 L5 ^0 B6 y, z #define xxx yyy 就是把之后出现的yyy用xxx替换 5 n+ C8 e7 i$ V, a* }( t' y+ f#endif 与#if系列配合使用8 g; J3 J7 L; }: d 2、#include 和 #include “filename.h” 有什么区别?- J% z M+ ~! k# T7 k- E 这个玩笑闹大了…… 估计前是用是指先在系统指定的包含目录中查找文件,""是在当前目录中,当然可以使用绝对路径 3 v7 E% L$ ~' s 3、const 有什么用途?(请至少说明两种): g; M3 ^5 L- Y4 Q 限制变量不被修改,保证函数不修改变量 ) W" l6 l% _* U4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明? : [3 a& Q% J5 Q& }, ~指编译的时候使用C风格的函数名" ?4 ]! Q% ?) f8 `9 D5 d& [ 3 t: e/ k6 b$ [2 n. m) t' M四、有关内存的思考题(20分)3 z& p- s8 {$ N void GetMemory(char *p)1 r! U+ u& ^* R s {$ w5 T: t: l2 D) z) x5 y5 M p = (char *)malloc(100); " t% P4 R5 S1 K& R} 1 d* C) T5 h H' Vvoid Test(void) 9 }0 e5 J$ R" W; o1 q# ]# t, ^- V{6 Q1 o2 c( x5 R* e2 T char *str = NULL; 7 g/ T% ^3 I5 Y" I! Z; _& a% @GetMemory(str); 7 f) }" u& F) V. V% W) K; m: q strcpy(str, "hello world"); , U. p- @( f$ k* I7 _3 ~4 _printf(str); # P. w6 E) M+ U* R' [2 u0 b}8 h8 S% \* j$ o, d. l3 C; T 请问运行Test函数会有什么样的结果? | C/ U$ G: y答:错误,str没有正确指向申请的内存地址8 ]3 V& B3 Z8 Y# F: g! R: y Void GetMemory2(char **p, int num)2 m. Y4 e" d# C/ I/ p' [) V6 @# R! q { ( n- A' Y6 H4 {) f* ^*p = (char *)malloc(num);2 a. i( k9 r8 F% Z0 s* a }* f E: Y/ O5 n0 g9 } void Test(void); a$ M- P& h; | O) s { 8 f9 l5 T& U! y1 O( p6 `char *str = NULL; " D7 x$ s w5 S3 w$ ]GetMemory(&str, 100);2 {" e8 _% E+ [3 W strcpy(str, "hello"); ' D5 Y' C3 W# h, n* ^ printf(str); 1 X8 w$ H1 W" Q3 O: ?0 \1 m- t; C }4 G8 e0 |% b- r5 D% w8 L P& m( d 请问运行Test函数会有什么样的结果?' `2 T5 \( Y( f 答:正确执行,打印出“Hello”) _' Z( T7 m# |! f9 }# r N char *GetMemory(void) 6 a% ~: R! p. t; Y# P{ ; g. m- R' n7 e$ I3 ]char p[] = "hello world"; I/ g9 F1 q' B# h+ oreturn p; 8 X9 u$ r" l9 O1 G. W} @6 q) }0 V7 a- h0 r: K. ivoid Test(void) & R- f. F" p, O! s! x{2 E, O* K6 b- t char *str = NULL;/ T8 _4 h. u8 d str = GetMemory();- g8 s# a# j) o printf(str);1 C& U: D5 v6 Q- ^! {% ]1 q }* m# l& V* F3 b5 [+ a( H$ s2 q 请问运行Test函数会有什么样的结果?+ O7 H7 o9 _7 y+ k% J 答:错误,str指向的内存地址已经被系统释放3 F5 P( `7 w* R; v void Test(void) 0 T- j2 s M. m s6 e8 Y" ^0 M{- _- q" Y6 C; t/ A0 b8 y char *str = (char *) malloc(100); , j1 n1 a9 u1 Istrcpy(str, “hello”); 4 T. z; L* H9 \8 t- i0 Q7 a free(str); 9 @( O k: L2 N" O3 B& tif(str != NULL) 7 F, n, P3 @7 A' [4 C9 P7 x! q8 d { # n* Q# R& f4 Q* Dstrcpy(str, “world”); " I0 z3 Y: _, i% f6 [printf(str); ! M* t+ ^/ D+ s. a9 b* u& A- o: m8 ~}& a9 ?" Y% u' q } , e# ^3 j3 l* b0 S' V3 T& i4 o$ s请问运行Test函数会有什么样的结果? * _3 \. E" K! \$ v答:错误,free函数不负责将str置0,故strcpy无法正确工作1 B0 n& Z( a; M2 Q. d3 C 8 s5 A9 |7 T& m5 A P) R 五、编写strcpy函数(10分) . u8 u" @1 r: `9 }- s2 ?, s" q, G/ D已知strcpy函数的原型是3 y5 A" X0 ^& |! U: y char *strcpy(char *strDest, const char *strSrc); ) x& R2 i% _& ^7 B! e其中strDest是目的字符串,strSrc是源字符串。( [) J. h# s9 c. b3 h (1)不调用C++/C的字符串库函数,请编写函数 strcpy6 c2 d+ j8 k5 ]9 M* A3 {8 C char *strcpy(char *strDest, const char *strSrc)" X: {, u% Q n! a {1 s, G5 I6 t5 g6 s: y& \" Z if(strDest == NULL || strSrc == NULL) return 0; 0 r6 @. u, V) M: d! l for(int i =0;(strDest[ I] = strSrc[I ]) != 0;i++); & l: N4 |0 L+ W: z5 L, I9 E return strDest; 8 t; D+ o' B# D& G}8 q% W( w! L7 S' t9 i" x 2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? 4 Z' U4 n# {5 k, g& `这个倒真不知道,大概是利于编程 ; Y8 ^" v; ]6 p* j1 r+ q六、编写类String的构造函数、析构函数和赋值函数(25分) 3 b/ Y4 `( q/ h* X3 ~已知类String的原型为:; B& |3 C+ l( V; ^1 w6 e B class String # N* W6 B! x; l) R4 N, E{" s# p. u; m; O3 A! { ]. i1 L2 F7 a public: 2 u. u! d- ?2 I# n3 D( v5 a String(const char *str = NULL) // 普通构造函数& ^! ]: C: C! i' u& Z! W { % B/ i$ [! Y2 k if(str==NULL){ # Z6 L T' b+ a0 F4 R, X t m_data = new char[1]; 9 z: t( x' S9 H8 k+ ?% M$ g( r0 K- g- h m_data[0] = 0; # X( v1 u" g& m }% b+ ]7 ~/ @ K( m+ R) ?- G- t else 6 `. p0 M; z9 o6 F: Z { & K7 P/ E0 K4 C7 t( Q2 U. U m_data = new char[strlen(str) + 1]; , ~8 D- @8 S# F4 \3 ?6 z# P strcpy(m_data,str);2 j+ T+ ^, l. F$ A- G, W2 K c } 1 `2 z: j9 q- g. P4 a$ @5 s* A4 O}, A9 }* v F* k) t String(const String &other) // 拷贝构造函数* Z( J0 f" }3 i4 s6 ? { - e8 g1 z! f8 G) _) r1 w+ Z( n8 W H) F *this = other;7 J* A) S* n3 l9 F2 K! m( g3 x& F# j' R }2 T. x& O" g q; I ~ String(void) // 析构函数4 R' C7 I! e3 r; X* } { 6 q! d$ y' h" r delete [] m_data; 1 x% |8 H* E" j} 7 ]9 c& \2 I2 k- V4 R* D' u2 w String & operate =(const String &other) // 赋值函数 8 u h& O! {1 v+ _% A{6 l# p0 m& \- E& a0 I6 s m_data = new char[strlen(other.m_data) + 1]; # C, H2 ?. l% ?9 t' O) r8 @ strcpy(m_data,str); a$ C+ l. {4 ?& y s. z8 x return *this; z2 e: E* H0 R( T% [( b5 }3 ~4 Q9 d} 1 u& h* V7 x1 z+ o3 a6 ] private: 7 q. l; z7 {& _0 \3 a char *m_data; // 用于保存字符串 ) t4 u Y- y/ C; ]4 e# _. k};4 ?& p f/ p; Y6 ^0 `0 K3 l$ a$ D 请编写String的上述4个函数。# I( {' v3 j; a1 D+ ]. T& {/ k/ N
    [此贴子已经被作者于2005-6-3 19:23:13编辑过]
    ( s1 z/ w5 G# K+ T
  • TA的每日心情
    奋斗
    2015-9-17 00:58
  • 签到天数: 1 天

    [LV.1]初来乍到

    7
    发表于 2005-6-3 22:33:00 | 只看该作者

    2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? ( P4 Q1 f& S. H3 {; d6 L% j+ ?3 Q这个倒真不知道,大概是利于编程

    返回的是 strDest 指针,如果没有返回这个指针则说明函数执行失败(这个函数也是有可能失败的,比如溢出了,或者指针不可读等等)

    该用户从未签到

    8
    发表于 2005-6-3 23:06:00 | 只看该作者

    不过只要有返回值就可以判断是否执行成功吧,比如bool,BOOL都可以

    该用户从未签到

    9
    发表于 2005-6-4 22:39:00 | 只看该作者
    才初学C++,还没入门,只知道sizeof(p)的值~~

    本版积分规则

    关闭

    下沙大学生网推荐上一条 /1 下一条

    快速回复 返回顶部 返回列表