下沙论坛

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

用新浪微博连接

一步搞定

QQ登录

QQ登录

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

笔试题好多不会做~郁闷

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-6-2 16:46:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案7 R9 q* i7 t* h1 W
一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)
7 M3 O7 n7 J% d. ^0 A提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
2 O, _5 Q2 s# ]4 i; t    if ( n == 0 )& W% Z0 d) l: N) z: U3 q; R1 [3 E
    if ( n != 0 )
: [5 H# M7 c- x1 x以此类推。
& s7 _, i$ y# a/ u请写出 BOOL  flag 与“零值”比较的 if 语句:9 v2 U% B' H; p) @, j1 }
" K' q6 O# e% |: `4 V+ j' x0 Z
请写出 float  x 与“零值”比较的 if 语句:5 A) n% Q6 q0 c2 Q$ g

3 r! R+ k. _% v. N' h: e请写出 char  *p 与“零值”比较的 if 语句:# h2 Z6 l1 z  o7 C& V* S& X

/ O5 ?; f/ z" i! }8 \7 V7 q* t9 G二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
3 U/ C+ @, h9 b# P" D& rchar  str[] = “Hello” ;
4 t' L* d5 G1 G1 O. o+ b0 P; @! lchar   *p = str ;& n: j# M: S6 q
int     n = 10;' U( Z( |* ~7 Y: g. E1 P. v; ]# W
请计算+ }' N& n1 J6 R; C! V
sizeof (str ) =                 
  B; ?# T( t3 M( }* o! h1 R; Wsizeof ( p ) =                 9 o$ v; U8 ^! r6 R! p1 I- ^7 P
sizeof ( n ) =
' N" u8 K2 W9 p' Ivoid Func ( char str[100])
$ m! z# \6 E* D+ s$ ^" @9 r{
' d" u$ s5 K# t1 ~, P# h请计算 ' c; t' T$ _% X$ z2 M& C' @
sizeof( str ) =   
; k" e* S- d  j}  p, j. ~- s9 A8 {/ P+ L
void *p = malloc( 100 );
7 ?5 |9 T4 h0 v( f  q8 l) B请计算
' v7 l0 m( \6 gsizeof ( p ) =) V6 N- l/ m$ Z+ j% R* r
三、简答题(25分)
& W8 A' @7 u0 q. v  S! A1、头文件中的 ifndef/define/endif 干什么用?
$ p7 |* j# }$ u, Z) e6 d* p7 Q2、#include     和  #include  “filename.h” 有什么区别?* `$ u8 h: E: _$ z
3、const 有什么用途?(请至少说明两种)
% d; F: _& K# L0 P/ |4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?% T( ]" A8 G7 p9 ~% ]* y
四、有关内存的思考题(20分)
6 z$ E6 {+ l+ A2 Q+ J- pvoid GetMemory(char *p)7 I4 _7 k, @; K, e
{
$ V1 Q) |8 F2 ?  e- tp = (char *)malloc(100);
- |7 T9 t" N* b+ J- l7 J: s}
- C3 t: I; N' o5 W3 Nvoid Test(void)
( b; c5 N4 A5 k$ ]) [0 B: z, [{
; D0 J, L& L  t/ Mchar *str = NULL;# ^* d/ R% @( u
GetMemory(str); 1 A' G9 z0 z, ?4 ]# z
strcpy(str, "hello world");1 B; y3 Q7 _2 S7 E0 [8 M* Y5 z+ x0 N
printf(str);
' M& ]: l1 }0 `' C}9 n! q$ j0 h! G+ \$ m
请问运行Test函数会有什么样的结果?1 Y9 Y  j# N; Z
答:
# @$ i1 B& E$ \6 A+ i8 O. y2 ]4 O  ]0 [/ y: A
Void GetMemory2(char **p, int num)
- a4 w$ Q$ L5 B. j6 h{
/ j6 K/ v4 p# i& A! n*p = (char *)malloc(num);
) P/ G4 d2 X* p/ a! e. }5 }- P}  P+ m; l$ k. Y9 r
void Test(void)5 g6 J! `+ Q9 Y2 A( r6 v
{% a6 D3 H) ?7 z* E6 F& G1 y7 m! `/ w
char *str = NULL;
0 Q* A! d7 s# y( kGetMemory(&str, 100);
8 Y) a8 Z* g5 `2 C4 }2 m; nstrcpy(str, "hello"); 3 `3 L  y/ ]$ G8 ]' a, k+ u
printf(str); / [4 N6 e: A5 ?% f% t) K! t
}
+ }" }! X" m1 O5 V请问运行Test函数会有什么样的结果?- A, _- ?6 K9 j8 j, I7 r
答:) X* Z1 G: b5 G+ H' a- I; V
char *GetMemory(void)- M: n5 M' q' A
{ 2 W) I9 E+ k# M  q
char p[] = "hello world";1 z& S6 f+ X+ n) a/ W! c
return p;# q. G1 ^$ B: j% L* c
}# E2 o. J, a5 \4 c! i
void Test(void)
+ k- }  U' X. |: }3 d, P1 |3 L4 v{
7 F- a3 w3 F& v6 ]) H! u+ J5 Pchar *str = NULL;( W( l7 I- z  ~; c- n6 f
str = GetMemory();
9 B8 y+ ^  E: `9 J printf(str);
6 U8 [- K2 C/ N6 \}
, G3 G. i8 s# [/ L7 Q请问运行Test函数会有什么样的结果?, k% o- k; w) G0 q+ n
答:
( S) s+ d$ ~5 Z+ r; R+ G
/ c4 \6 m" t* c& L. Y; rvoid Test(void)1 g' b; d0 c, C) @
{
/ T) m, W& \) @, o. x+ [char *str = (char *) malloc(100);
8 G& A' _3 T& u( ~8 @) M* y  ostrcpy(str, “hello”); 3 n4 k7 r, ^" c6 S, B9 Z( U
free(str);     
% D4 A" v' c( [( vif(str != NULL) 3 n& E2 D* l  Z
{4 P2 }, M9 U3 [+ m. I6 h
strcpy(str, “world”);
  }' u  ~' {& P+ K& r! @3 nprintf(str);
/ W; c$ x- u% y; D1 u}
+ v7 j8 w) p) S% ^( M$ z+ h}$ N$ a$ i( r( u2 w# N! o' j
请问运行Test函数会有什么样的结果?: A5 E/ F  X; D) m4 D2 f7 L
答:) X6 E0 X; y0 U( @9 U
$ C9 r4 D& ~# S9 C0 Y
五、编写strcpy函数(10分)7 F" H" r# ~  B& }
已知strcpy函数的原型是
" w, L/ J2 f- v8 ~2 @- g char *strcpy(char *strDest, const char *strSrc);1 ^. e# |( a* T" ^* b
其中strDest是目的字符串,strSrc是源字符串。
& e0 @$ A: k) N" A# A3 N6 K(1)不调用C++/C的字符串库函数,请编写函数 strcpy$ x5 \6 O2 _4 z$ c; F! M( S; _/ E
3 Q- b+ c4 d; o3 ?+ o  ]& v2 |
2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
# y2 Q% R& z6 h
' Q; x* K1 G  b& t8 y$ ~六、编写类String的构造函数、析构函数和赋值函数(25分)
8 j& L' {8 |/ s- o9 ]已知类String的原型为:1 A* Z& _1 Y' N  d& h, O
class String$ m* g# I8 n5 K7 N. Q) s
{
$ ?% o) \8 L/ S4 z* d" O$ g   public:4 {6 u7 r. |2 z
  String(const char *str = NULL); // 普通构造函数
3 Y" i$ u* U. F3 F  String(const String &other);     // 拷贝构造函数2 q- ~7 D5 e4 |) }- {8 N
  ~ String(void);         // 析构函数
" N( e* T- |8 k  String & operate =(const String &other); // 赋值函数/ c, W4 W# U- d! u3 c4 Q" }
   private:
4 k) ^. T0 H6 x! O. r  char   *m_data;    // 用于保存字符串: c% [9 ]8 @5 T
};# N0 G1 D0 W  N* H7 J
请编写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的发言: 0 {6 k( `1 y# C8 w & s5 C, O2 `% p/ ^7 f

软考的?

* X) h2 \. ?5 D8 R

其实都是很基本的题目阿

& Y1 O3 k1 u. D* k k- [* `/ I3 _+ Q/ h1 Z ) a5 G! u0 A9 i; K; B `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的发言:. P* R3 }# f7 i ], z 7 H0 Z9 `& j* P& h1 H' d4 W

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

    ) m& a& U9 H+ U3 d

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

    / M6 h2 }* N ^/ w$ H ) U! g( m! Y8 C) X" N* _7 f 6 t; \* `9 A& r5 |7 fyes you are all right 1 e( J' A) b9 W' n 楼主这些题目实在太基础了,如果这些不会,需要去看基础的知识,推荐 C++ primer

    该用户从未签到

    6
    发表于 2005-6-3 19:14:00 | 只看该作者
    三、简答题(25分) + Y6 J* b; a9 R$ m" @* @) X" |& b2 W1、头文件中的 ifndef/define/endif 干什么用? " k) M/ c, \2 q! I# Y起码加上前缀(#)吧,其中 #ifnedf 就是说如果没有定义什么则…… 0 G% ^9 f2 }- D! D9 Z#define xxx yyy 就是把之后出现的yyy用xxx替换 7 V% }, K! Y3 P#endif 与#if系列配合使用 . U; }4 G, q, ]' \/ ~6 s2、#include 和 #include “filename.h” 有什么区别? ?/ o% W7 D& X 这个玩笑闹大了…… 估计前是用是指先在系统指定的包含目录中查找文件,""是在当前目录中,当然可以使用绝对路径 : z4 V8 X/ c5 q+ z' j/ V& F3、const 有什么用途?(请至少说明两种) * {! }! s0 y8 A+ ~' _6 [! n限制变量不被修改,保证函数不修改变量 & Y* f1 W) S2 R3 B. L, P% U4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明? 2 ~$ D& m# O" k% z指编译的时候使用C风格的函数名9 ~ v2 B! K- V4 e5 b% ~* f 8 w" W4 t3 P; q3 ^; T0 x 四、有关内存的思考题(20分) , |+ D& g# S( b5 ~) e3 ~void GetMemory(char *p) ; i8 x. e- p! i0 D- O! n' P9 w/ Z; `+ A{ 9 F, `7 G! g/ Np = (char *)malloc(100); 6 W) ]# D4 v. a+ v( B b J}' n/ F4 w& B! ^" z void Test(void) - [9 Y2 k+ X# D* w1 F{. X& d0 d7 J; W& l8 f char *str = NULL; $ j6 n1 [8 n. N2 R0 P% SGetMemory(str); / y6 r6 o* l" d5 s! g* lstrcpy(str, "hello world"); - ~, x2 b$ U, K! g7 b/ Oprintf(str); * H; j5 h" N. ^' p5 z} ' }% S T9 ` N& Q7 |; ]请问运行Test函数会有什么样的结果? G. C1 y: R! |' S 答:错误,str没有正确指向申请的内存地址 ( t* }' F2 j* e* S* ^+ ZVoid GetMemory2(char **p, int num) 0 C7 I5 ?+ g- u# I' ^( x{ * q& n+ y$ x& B) H; |6 ?- B*p = (char *)malloc(num);! g x* e7 B. K) J, Q" u } % {: o; w+ w Z' j/ H2 ivoid Test(void)( Y4 \( ], t- W' m$ l { 0 y ^$ J9 x; c) M9 Tchar *str = NULL; 7 b, [7 m3 t! E+ g& P5 d1 f$ ]3 JGetMemory(&str, 100);7 S' A7 N+ r4 m1 g1 A strcpy(str, "hello"); ) X6 l) r; ~2 vprintf(str); 2 I! J: U3 Q5 }1 A2 g} 3 q) B! G; c1 r请问运行Test函数会有什么样的结果?% Q% [/ _3 t2 f. ~ 答:正确执行,打印出“Hello” & A2 K; U6 T T$ }/ qchar *GetMemory(void) + L! f( s) Y! f# R{ 3 |. p: h) h2 G& schar p[] = "hello world"; " K2 j7 ]3 N& T& H# t: M* n" X& Yreturn p; # s o/ A; |: Y}! d7 x r" @# g4 d void Test(void) 3 B) ], m$ [& a& b# s% H{) R: f6 T' X& V2 @: _) o char *str = NULL; $ E0 {5 ^8 G- c6 ^! y6 k& ^! rstr = GetMemory();1 Q, d5 {; G0 j- Z+ o printf(str); 8 j7 M: q$ v' e6 x- i2 Z} f9 c9 c- m+ w |. i( n, Q6 `请问运行Test函数会有什么样的结果?! W8 O* x9 J( s) V5 |% o8 I 答:错误,str指向的内存地址已经被系统释放 9 t; _+ q* x% K. C7 z. G3 @void Test(void)$ _4 h5 T4 q2 B E0 H( `: N# H7 e {0 ]7 ~& V9 o, s/ m I) ?0 V char *str = (char *) malloc(100);3 \6 w4 T+ k' Q) u: E; i) u, a2 h strcpy(str, “hello”); 8 X& V v8 ?; Z' ~/ u free(str); 6 q( i. n( i8 k) T6 E4 q8 l6 G0 z if(str != NULL) 1 E5 _- Q2 H$ W3 }! L7 j; `{ & z+ E( }* P9 Jstrcpy(str, “world”); 1 } A4 g' v5 e) _7 x( q1 Bprintf(str);8 a1 S! {1 N7 L. v, z0 j }/ f) C; B8 h' R. s$ g' J } 2 Y- b/ q5 f+ j" T1 q, Q T, P' K! D请问运行Test函数会有什么样的结果?3 U L" j- ` O 答:错误,free函数不负责将str置0,故strcpy无法正确工作7 b4 @0 S1 M/ N& ^+ ` A 5 Q9 Y" K. H9 i: Z; Q' q五、编写strcpy函数(10分): g. Y: X- L, _3 i4 u6 @( i 已知strcpy函数的原型是 . `1 [) m1 Y4 q8 X: u0 tchar *strcpy(char *strDest, const char *strSrc);0 c0 G' j% P, u# f0 \ 其中strDest是目的字符串,strSrc是源字符串。% Q6 i, a0 B9 y% Y6 r, n (1)不调用C++/C的字符串库函数,请编写函数 strcpy 3 \1 O) N8 j1 m# L& G7 l" R: j9 tchar *strcpy(char *strDest, const char *strSrc)- `& _/ o% X0 h ] {! h6 |& Z* M2 O" ? if(strDest == NULL || strSrc == NULL) return 0;" w' E5 h; c. a; m7 N for(int i =0;(strDest[ I] = strSrc[I ]) != 0;i++);! G1 t+ [& t4 c# F; k return strDest;: B2 F, t i/ E5 b- b% ~ }. _2 u* m) T% j0 ~0 J 2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? . \, ]+ C( ]. M9 P4 T这个倒真不知道,大概是利于编程 ; c0 u; o5 z V; ~六、编写类String的构造函数、析构函数和赋值函数(25分)- ?8 y$ i2 k& N% d) e" o 已知类String的原型为: # [* B' j* k* s$ Y& L1 Nclass String" n; p& ~) C' i: [# B { , @! f0 y& m% {0 w public: ( a* g6 O5 c8 o( { String(const char *str = NULL) // 普通构造函数 3 w! k9 ?! v8 J/ e{) H4 ]! T4 w1 B3 A/ i if(str==NULL){ 9 l9 u& k) \" N1 Q0 u6 P. p w7 V" C m_data = new char[1];6 ~% r8 W2 A9 ^. T' } m_data[0] = 0; ! W2 h) Q) V( Y }; m2 \: l/ N# z$ k8 V( z$ S else/ Q1 \# U: `( T3 N+ d {# U8 a8 X* j" ^- ]% ~4 i7 G+ x m_data = new char[strlen(str) + 1]; 0 p) i; {9 _% t" X! K strcpy(m_data,str); 5 [. k/ b! {; X# c2 e }# Q' g1 ?4 F6 @3 u$ `' q }; c* D" i2 {- s2 R String(const String &other) // 拷贝构造函数 5 F. X- J( _3 C, A" ]- T/ l5 D{ + B6 S$ H2 A( _* t *this = other;' [8 A7 W7 r) g( T' ] }# o, t7 [) A& J ~ String(void) // 析构函数 + q/ [) d# W+ B{ c, u, v5 ]6 I4 t( Y- q, b delete [] m_data;9 K8 C5 w% L- M2 S } & d; Z4 |& t( c# z# F- T3 S String & operate =(const String &other) // 赋值函数 q. U7 m; n: k1 N9 K: ]4 p; m { ; p( A- F6 Z4 H% z4 A# }+ L m_data = new char[strlen(other.m_data) + 1];+ a/ B7 |, q/ s# s8 R strcpy(m_data,str); ( J. F' t7 i0 U5 @$ c; H" b return *this;, V0 c% Z! Q# e8 _3 H" b }% r$ d9 h+ v) _& J private:# K# s5 f$ W) K. L$ s char *m_data; // 用于保存字符串 ! [, s# C! P$ W8 P, [% |& Y};7 Q/ Y2 s, V8 o- G6 C2 D! E 请编写String的上述4个函数。# K3 w# U8 l; x3 Q2 R: o
    [此贴子已经被作者于2005-6-3 19:23:13编辑过]
    " t& _0 H4 I6 z7 r* e2 g3 T- t! K: R
  • TA的每日心情
    奋斗
    2015-9-17 00:58
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? 6 G4 j. t+ e: C这个倒真不知道,大概是利于编程

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

    该用户从未签到

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

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

    该用户从未签到

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

    本版积分规则

    关闭

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

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