下沙论坛

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

QQ登录

QQ登录

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

笔试题好多不会做~郁闷

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-6-2 16:46:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案8 f2 D( b  _7 \/ A% n" w
一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)* ^3 A0 d1 D( \5 y
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
: Z; D# v- o0 [, R* b0 R1 x    if ( n == 0 )
$ k- h2 O  ~3 K8 p9 Y) u    if ( n != 0 ), _! |! w* c& ^0 @( G* M. P+ W* A
以此类推。
- l4 |$ n. y, B5 y" O' @: o2 L+ F  g请写出 BOOL  flag 与“零值”比较的 if 语句:
4 D6 R3 \6 u8 f3 j- c
, s8 W8 P- w" h* X+ f; w. h: R请写出 float  x 与“零值”比较的 if 语句:
/ i8 f: }$ x+ n: h, B/ @4 E6 `; ~% M2 l- N2 r' `( X" V
请写出 char  *p 与“零值”比较的 if 语句:
0 ]! T4 V4 b# [# Y/ E1 N; c* j* K' f+ z. G
二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)" ?4 |: D$ D$ H  d* ]" ~  O# y
char  str[] = “Hello” ;
: X* q8 |) R* [( @8 I- \7 A8 C7 Hchar   *p = str ;
/ v  x+ n: Z  ?; K' }& [int     n = 10;
) q# L2 l% V$ y0 p+ v请计算
$ v  f2 y5 S% _7 dsizeof (str ) =                 2 j7 W6 z& X; B. \! I
sizeof ( p ) =                 
  n* \' G7 A6 A( osizeof ( n ) =
1 @3 p% s4 c/ N3 [% s( h- I2 `. Yvoid Func ( char str[100])
. J& e& w* Y3 S- I  @9 J{
4 X. z3 ]/ e* R4 ~$ \( G请计算 / D; ^+ w9 t: V2 m5 r" N( b& p
sizeof( str ) =    ) W+ V5 z/ Y7 D7 V6 W' J6 U
}/ D: w. y: a5 ^1 ~3 w
void *p = malloc( 100 );
$ d  ^8 l! j, I' ?4 O' L请计算
0 B) r8 i/ q4 f% t; R& I! Jsizeof ( p ) =" W9 ?; j' t+ v7 ]# j* _2 K# ^
三、简答题(25分)' Y/ x$ Y  g4 Y% q& t
1、头文件中的 ifndef/define/endif 干什么用?
4 A7 c$ W8 B9 L' S2、#include     和  #include  “filename.h” 有什么区别?
9 E6 R1 y7 S. [- S/ b2 L3、const 有什么用途?(请至少说明两种)6 s' ~8 \& c! Z* }" ?
4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?0 I1 t+ U! m6 ?  G* |" r2 s
四、有关内存的思考题(20分)
: |9 c! }8 S: G" X7 w* m7 J3 ?9 ?void GetMemory(char *p)
6 a2 v0 O2 f+ @{) J; J+ Y' a# x9 F, X+ m! d
p = (char *)malloc(100);0 K4 I" r: e' z; Q$ P4 Z" K+ L; T
}
5 u  M+ F8 R0 D. q1 g5 _$ i" dvoid Test(void) 7 T7 M/ H0 s! Q2 y! X) h$ j
{
" K7 e) H8 N# H3 X3 B  i8 |8 Ychar *str = NULL;
0 Z9 z) V4 h8 [  |, yGetMemory(str); 5 t9 C; v6 k; E" v
strcpy(str, "hello world");
0 @4 M6 `; d% s) J) f  eprintf(str);4 T) a2 z) A; W% d
}
- @+ C- ]$ y% W0 q+ x( \, O请问运行Test函数会有什么样的结果?, b1 ]* W6 q! c" i9 x
答:
; i. x# `  x8 k4 x  |
7 V/ a  u: Q  x: F1 k/ ]Void GetMemory2(char **p, int num); X, D) j5 h1 G: b9 \
{; Y/ `, Z( g( ?0 \, k" }+ c5 Q" c
*p = (char *)malloc(num);( A6 A$ u; I6 N) r$ Z
}! {" _. O2 U) t2 h( C0 ?6 i% z
void Test(void)
1 B; Z3 A& w$ q- B+ U{/ c  y6 X; P  m0 A% ]
char *str = NULL;: M) u  m+ Q2 `7 g: j/ A
GetMemory(&str, 100);
9 W: \* Z( Y8 f) k( \strcpy(str, "hello"); ( {) D' S# f  q
printf(str); 8 W) K. L$ T% n( p* E& k9 v+ I4 T
}( o. K' j+ h! T9 r  k7 N5 o- q7 s
请问运行Test函数会有什么样的结果?" u1 U8 p) |1 M
答:
4 R% Q" O7 g" A& C. a' G- [5 Schar *GetMemory(void)9 D( i; p0 t% J$ B
{
- o9 }0 e( t# \0 {1 B& Y- _char p[] = "hello world";2 s/ A9 z1 ]8 O# R9 z$ b# @5 i
return p;4 O  G9 c/ @: q
}
; l6 p4 Z& e) x/ e8 {$ P+ Ivoid Test(void)
) F2 h8 m* e$ k{: t: A: t5 \$ ^7 I
char *str = NULL;
; V2 u& `9 i+ Ustr = GetMemory();. ]# G/ t! ?" n. I/ f
printf(str);
4 l; f8 z, w/ S8 y3 L; m}
4 g/ v: D% n# e7 A4 e, p1 m9 p请问运行Test函数会有什么样的结果?; K9 J0 b6 l8 U" b/ _( J" b6 `
答:+ r+ s) a1 ^* o% g2 p4 T
+ O$ v8 o4 |! K6 m8 a4 S$ u: s, |" a
void Test(void)1 C8 t- s% r; g! s% D. [7 d
{
9 W: v5 }* S: U7 R+ nchar *str = (char *) malloc(100);
1 z# t4 @5 q2 [/ ]9 ^+ ^; Astrcpy(str, “hello”); , Z8 H$ _3 b4 S2 a5 G
free(str);     ; G% m% F, C% Q3 H9 j
if(str != NULL) 2 M+ R. w: A" w* K0 c4 w  V8 F
{
) I0 t* w9 R5 B strcpy(str, “world”); % ]( P; g5 Z8 V% z3 a: l
printf(str);
8 n& K! ?- k1 i& E7 O}7 M4 E: T" k& s/ h9 S
}$ [5 z; q$ V9 J" h! ^! |
请问运行Test函数会有什么样的结果?
$ R; u2 N7 Y* l9 V7 }4 h答:
0 B+ S2 C  H- v, E6 M
6 H) I3 w( c  r' f# z8 I五、编写strcpy函数(10分)
2 u$ \( C+ U/ m已知strcpy函数的原型是
" g5 S" p1 t9 k$ h1 ` char *strcpy(char *strDest, const char *strSrc);" O3 u' Y9 c) U7 i' \9 N
其中strDest是目的字符串,strSrc是源字符串。
3 M, a, `4 g  g5 x) ]* {  v(1)不调用C++/C的字符串库函数,请编写函数 strcpy
0 q) U& x, z. u6 i/ M4 {* q4 i3 x; L' L, r
2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?$ U7 Z5 o% l1 c- [" W/ u

( Q1 Q0 d( i" {: \六、编写类String的构造函数、析构函数和赋值函数(25分)) c/ L+ A* {: H9 o4 O
已知类String的原型为:
0 \" M# H2 C- M$ j. {& Z% ` class String5 M/ j( |" D& y' h5 o  W, o& j% Q
{
: @5 }$ u% Y! g0 y" d# L! v   public:8 x+ ~9 {, |3 \% N" I1 n. ]
  String(const char *str = NULL); // 普通构造函数% [  P  `8 |  ?% n& S  j' `5 G
  String(const String &other);     // 拷贝构造函数
- I; a1 t+ d" X  ~ String(void);         // 析构函数
* X! H3 H  m' L: ^  String & operate =(const String &other); // 赋值函数9 [3 d) M& s6 d) m( \$ U! s
   private:8 @# n( W8 _3 Y% v/ P
  char   *m_data;    // 用于保存字符串) Q2 d/ `, V% [  Y) z
};& y% w4 N4 o  _
请编写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的发言: # C" L! H* b, p( s+ M. t7 [- g% M" m0 [9 M! ?

软考的?

* u9 M3 F" d7 @

其实都是很基本的题目阿

2 g- E5 c( f9 v3 \, l2 \" e & H# I, d) s# l 7 k' \' A# C2 r: [5 P/ ^) V; R 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的发言: 2 t% @2 a0 r' I1 K; \ 2 g P& r& F" v

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

    5 m3 f* a2 y+ H* g8 I

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

    ! O) U/ s0 e8 f; t* L3 x8 T4 j W3 q+ M8 N/ U3 d : f$ c2 _. k$ A5 V0 B" x, p yes you are all right " K- n! R5 i$ N' m5 I; \2 ~+ D1 V 楼主这些题目实在太基础了,如果这些不会,需要去看基础的知识,推荐 C++ primer

    该用户从未签到

    6
    发表于 2005-6-3 19:14:00 | 只看该作者
    三、简答题(25分) 6 n* R, p- ~$ d6 p' C6 c, v1、头文件中的 ifndef/define/endif 干什么用? # o5 m) {- T U3 o! y起码加上前缀(#)吧,其中 #ifnedf 就是说如果没有定义什么则……; b6 z6 T, q( ~& A) S4 Z8 k4 `1 s #define xxx yyy 就是把之后出现的yyy用xxx替换 9 ~# u, t& Q6 f' X6 r1 N% V#endif 与#if系列配合使用; i/ i5 \6 X$ [6 l& ^: I) C3 F 2、#include 和 #include “filename.h” 有什么区别?2 t- Q! r) ~8 \: _0 }" U7 p2 Q8 z* a 这个玩笑闹大了…… 估计前是用是指先在系统指定的包含目录中查找文件,""是在当前目录中,当然可以使用绝对路径 ; S& {, x- c8 a' M9 g% S8 i, L 3、const 有什么用途?(请至少说明两种)8 C8 H1 R! h) ~* o( D; V# E! P 限制变量不被修改,保证函数不修改变量# Z3 K8 _: b, R: M 4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明? , r! d, s) A: ^) X指编译的时候使用C风格的函数名3 ]( k0 x$ c" r# M. ]: q 0 t0 F- l/ ~2 k" \9 O |; { 四、有关内存的思考题(20分) . n5 Z" w3 G! U) f7 ^void GetMemory(char *p)2 {( k3 j. p. D' m8 r% S {" D4 Y8 I9 Z. j* V& c( k p = (char *)malloc(100);& [( L! ?: k% F& o! U1 ?! H8 m }# t# ~. ~* U$ p( |3 `9 |. X+ w/ N void Test(void) / l- |/ A) e! p7 d% u( Y { 5 I) D. o/ I; Nchar *str = NULL;% D/ ~/ t) m- G( I5 M% {( v GetMemory(str); 7 r7 w4 W4 B+ V3 }7 |+ q strcpy(str, "hello world"); - |: V/ V6 Y7 K' G# Oprintf(str); & V I. W$ O+ N0 h}: o6 @0 N" J: v' r( P7 i6 m: m8 Q 请问运行Test函数会有什么样的结果? 8 ^: [/ Q% ^$ {( k: A% G: Z5 E- L答:错误,str没有正确指向申请的内存地址2 r; T- O6 `5 |+ E: k" C, t Void GetMemory2(char **p, int num) ' y7 g: h: ^3 h. A3 Y7 V3 S, p{+ ~7 J, x2 ?; r6 v3 k! G *p = (char *)malloc(num); z" X6 ~, U/ R; @/ ?1 q- s}* }. A% Q6 y) q* w% C# u9 c void Test(void)( D6 I( H, y$ i: t# h {5 J* p! @8 l* N+ M9 x% G' i# t; ` char *str = NULL; : b- c0 Q0 _/ c( [& e I) qGetMemory(&str, 100);0 S' k0 b3 X# u- f" I9 B2 M% }) \ strcpy(str, "hello"); ; L. a! `8 z, a( ?printf(str); " G: x. c& `8 { N; u" }8 Q}0 f8 w" m9 R$ Q6 B- L 请问运行Test函数会有什么样的结果? q/ a) A. a/ \( U答:正确执行,打印出“Hello”% Q4 x. Y5 m5 ^! S char *GetMemory(void), P9 q& O7 d& W+ E9 W { / T1 f3 g) D! x( }9 b8 I) b l char p[] = "hello world"; 6 Q5 F- n- X3 t, R g8 V* H3 Kreturn p;2 ]( q2 T* x) ?* ?. G9 B. T7 C } ) [( C) {- o- R" S: V! Uvoid Test(void) $ Q1 B$ J l! l8 \4 K{ & {' d* k9 \4 F- hchar *str = NULL;% `9 I. E" E& _3 E( S& P Z7 { str = GetMemory(); ' v/ E' U$ o' j; [- w N3 [4 ~printf(str); 6 p1 v$ \1 U# K7 C* J; [3 u}& p. h8 h0 ?5 d& c/ T$ C 请问运行Test函数会有什么样的结果?) A: H6 |/ }1 _ i* ^; Y: \ 答:错误,str指向的内存地址已经被系统释放6 \1 o0 J: r! h! C/ n void Test(void) # b. U5 ~1 q" q/ G% r \{ * l, Y' G# b' V6 Y1 x9 R9 M2 \char *str = (char *) malloc(100);8 S. l: Y. `8 S4 h! d7 D# ]4 @, R' Z4 j strcpy(str, “hello”); * d- O' S# W: \- e Zfree(str); % I( x( T& J/ ^% jif(str != NULL) , w+ X* B2 v6 F. [ { / M6 L/ n1 ?, l. N2 H0 T5 Istrcpy(str, “world”); 2 R) O* Z& t$ U7 _printf(str);* N; k8 a$ ]* G }! l' v& P1 Y- t* B( \3 V }; Z: Y# D- Z- q, m% g 请问运行Test函数会有什么样的结果?. e, O- d8 i$ r: A 答:错误,free函数不负责将str置0,故strcpy无法正确工作& Y3 W" R3 {, N z0 R3 G5 R. `2 N" x 五、编写strcpy函数(10分)6 W8 G' u: m6 V; d2 A 已知strcpy函数的原型是4 X, [& {- @8 k8 q char *strcpy(char *strDest, const char *strSrc); 2 k0 R a6 z4 H; j4 D2 T其中strDest是目的字符串,strSrc是源字符串。 # ^; X$ ? n, R* k2 A' h(1)不调用C++/C的字符串库函数,请编写函数 strcpy E) K% Q. e2 {9 }: q7 m char *strcpy(char *strDest, const char *strSrc)/ g# `2 n2 U" E" Y6 t$ y { 0 C8 f. Q( d3 r3 r if(strDest == NULL || strSrc == NULL) return 0;$ j1 ^7 Y) e( ^- K+ h8 n for(int i =0;(strDest[ I] = strSrc[I ]) != 0;i++);& B, r, A6 R" v3 l( U( U return strDest;1 z; G0 Q9 F ?1 x4 v* S/ K! j }8 t$ |, T/ P; u! ? 2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?7 W+ e7 S" ~$ ]( m 这个倒真不知道,大概是利于编程; b! d# f; N4 R: w+ p0 d 六、编写类String的构造函数、析构函数和赋值函数(25分) , m" C- ~0 a K已知类String的原型为: % |, ?8 l. c+ @5 c" _2 |class String* d; p$ A, G! a+ C { ! q$ i# `/ ^5 s; | public: + d! d) q4 L. u, j String(const char *str = NULL) // 普通构造函数( N4 J' X9 o, `/ w7 V9 B: W { 8 |8 A( v& z$ f& Z0 f if(str==NULL){. l. y6 ^( P3 {' z' B m_data = new char[1]; + _6 @4 R' f) ~- w2 ?8 d2 u m_data[0] = 0;3 q6 s1 X; f' Z* G } % `* E5 G2 O5 j. C* ^# g& | else4 ~" U( r; Q" A {4 i% x: ~* r/ }4 E J# |7 T: @ m_data = new char[strlen(str) + 1]; 4 L* b+ G% y# s, F3 ^" }* r$ Y strcpy(m_data,str); 2 U' ^: d) d5 c% {+ z* g } , v' O1 q* {% c! e, d; ?}: D$ w7 X$ o' z+ t5 R9 X& ~" v9 ^ String(const String &other) // 拷贝构造函数# u* _5 E! _+ z! N) b3 @ {1 O% r( o5 S* g% [) N2 ]; ` *this = other;/ F9 U+ i/ T1 R. S } 9 c- T6 q, b7 U/ x5 Y6 R ~ String(void) // 析构函数 & g4 O" N# ]1 `) |. ?5 T{# ^) M% K! d8 ]( [0 t6 F1 h, ? delete [] m_data; 1 J- J% X8 U4 H7 M# [0 u; ]} * A$ M: k* k3 ?/ I9 R% W& t. K; n3 f String & operate =(const String &other) // 赋值函数2 V* s y. \# }: i z. B0 s {/ @5 m! X, o! B+ t5 u$ h m_data = new char[strlen(other.m_data) + 1];. r2 X z# R. ~) {7 j strcpy(m_data,str);5 D2 B1 e6 z/ W) } return *this; % \( X3 @: r7 x( N5 G- I}7 Z- P H/ b. j) o& j private:7 x4 R6 N# E7 e! h char *m_data; // 用于保存字符串 - t; T6 N4 s2 I) b% |}; & m* u+ [+ \2 A( a2 d请编写String的上述4个函数。! \) Y. h6 Y1 F6 U9 x: Q
    [此贴子已经被作者于2005-6-3 19:23:13编辑过]
    , ?* u9 n7 l, X* v7 J% F$ I
  • TA的每日心情
    奋斗
    2015-9-17 00:58
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?6 G4 ?. ^" H ~8 i 这个倒真不知道,大概是利于编程

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

    该用户从未签到

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

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

    该用户从未签到

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

    本版积分规则

    关闭

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

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