下沙论坛

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

用新浪微博连接

一步搞定

QQ登录

QQ登录

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

笔试题好多不会做~郁闷

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-6-2 16:46:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案
2 ]" y- m( V2 _$ ?5 \, R一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)! x2 H6 s* `$ {+ M- |! n
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:' J# I* i# u0 @6 g" a
    if ( n == 0 )
3 ~: X" |2 [' _9 x7 O3 j3 I    if ( n != 0 )1 s% ^6 A$ t' e7 P
以此类推。! W. u$ ?4 s  V' b% w6 d5 d
请写出 BOOL  flag 与“零值”比较的 if 语句:
6 B' [/ k6 V* Q) m/ L/ w3 P8 n& Q4 m! E6 i+ k) q: q( R
请写出 float  x 与“零值”比较的 if 语句:
7 m- B, R( @, D2 h# {. s: q$ [# V: {) T+ I+ j3 M) E+ s0 S, W
请写出 char  *p 与“零值”比较的 if 语句:
  w% s# u* o0 T" `& m6 u: D/ V) ~. y3 v+ A; z4 M& Q) z
二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
8 Q: w8 ^0 r( @3 q. Hchar  str[] = “Hello” ; + {) h. U  \8 [8 l1 G
char   *p = str ;
" w+ k; `2 R7 a9 S; |int     n = 10;& h: ~$ E3 e  C. L9 @
请计算
1 ]2 M( [" ]% H( n" E. C2 msizeof (str ) =                 
2 n1 Y- [) S5 r) _sizeof ( p ) =                 
2 [/ V' C' a6 |0 V7 a& @sizeof ( n ) =$ r( e" J. T9 N6 u2 X7 @
void Func ( char str[100])7 C- c" B5 A" O: Y4 {% d
{
' g3 o2 M1 Z. a请计算
6 |5 {  s3 \  y7 d. esizeof( str ) =    0 P, Q2 s; g$ k0 P' C  K
}3 H& `6 Q6 z+ r- u' @: k' t! l9 L) h* C
void *p = malloc( 100 );
* M0 M& E* E8 N! r! N5 S; D请计算
% ^" T( a- ^$ rsizeof ( p ) =. S# T0 w4 X/ P( G5 q
三、简答题(25分)4 q8 N: {4 o) y  `1 z1 f
1、头文件中的 ifndef/define/endif 干什么用?
7 f5 H5 t  X3 H: K; J0 F! Z2、#include     和  #include  “filename.h” 有什么区别?- x9 x) H. W# B. U1 ]: E- ]) G
3、const 有什么用途?(请至少说明两种)* d/ U6 v& b+ [- P
4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?$ K6 i- `9 G1 ~" M& {
四、有关内存的思考题(20分)( b! d, S# }+ [( h( [' x1 F, h
void GetMemory(char *p)
1 D. Z2 q8 ]$ _5 q/ z4 m{
% C2 F5 J# Y# l7 o) fp = (char *)malloc(100);
2 M* T5 Y( Z- M5 R/ x' n' o}$ G' P' l4 U1 D! l6 Z; Q
void Test(void)
) y, n+ z1 t( b: N: Z2 s( U{7 E; |1 G  m" \& b; A4 v- B
char *str = NULL;3 J: s, v3 n$ G% S
GetMemory(str);
5 k- ]$ B- K, P* E# Q9 M% Lstrcpy(str, "hello world");
" {, G1 H  }& J# c' Aprintf(str);8 p6 r2 u; ~5 T, u$ `" u
}
5 b, ^2 c$ p+ y/ J3 `请问运行Test函数会有什么样的结果?
; m1 [. ~+ [- M; [' L答:" l/ j3 Q. L! c# }+ z, _% \4 r

% s! J$ v5 f0 Y$ _0 YVoid GetMemory2(char **p, int num)9 {: k; A# k) k
{' h1 v, s# g& F1 N- L; ^; n5 c
*p = (char *)malloc(num);
, P8 B# w7 Y2 s6 g}  L7 v+ P+ E8 f
void Test(void)3 L/ ?2 Q& z7 v, q: y! R1 W& N
{, d. K/ _& e% v- O
char *str = NULL;
. k4 \, y, f3 b2 P7 h( z' jGetMemory(&str, 100);
- b" \3 @& Y0 _# Dstrcpy(str, "hello");
& l  R  M% t* M  T3 R/ C0 ]printf(str); . }8 g* \' M+ g0 ~9 }/ q
}- W7 M/ j2 c; h/ s; H" }
请问运行Test函数会有什么样的结果?3 O( E1 N- r. C7 `3 R
答:
7 y- [7 u! x/ q. |char *GetMemory(void)
& m# l$ b" M$ b{ ; H* v& U9 N, {. [, [& e) O
char p[] = "hello world";4 e- b& ~* ~4 Y- l& U. a/ w4 M* ]
return p;
: b: U3 J! T+ y  ^1 [9 f( y' @}
  z0 e0 o, u( ovoid Test(void)% k% P9 j! p5 w- {7 W
{0 j. c  a: Y9 U# K* c, \' y
char *str = NULL;
1 u7 M/ y$ c  I7 jstr = GetMemory();
* V% k$ L, m3 w7 G3 ? printf(str);* O9 }7 W- k. X8 l! c
}8 O" h9 q& L  J
请问运行Test函数会有什么样的结果?+ B! g  k! t! `1 R
答:8 @; w" J5 Q9 R8 _+ M" G

' C+ Y: x4 g" m! p& \/ N1 W" D  Vvoid Test(void)
2 i) a% R, J: K% }# Z{* M* R7 P% K, C. m8 N1 W- ^
char *str = (char *) malloc(100);; J& U" k  n. q- S" J* }; p
strcpy(str, “hello”);
' u2 h/ u& o: k$ kfree(str);     - D  P) r/ ?6 R6 v
if(str != NULL)
+ ^9 M& i- X5 A9 @- f0 Q8 U! j: d" D{
' X  C  t0 z6 W6 {+ | strcpy(str, “world”); ! a, u) M' |3 i2 O' h' C' x% c' W  C
printf(str);* t. Q1 G6 V" g8 n: v# Q6 d5 j+ d3 ]
}
- @  o% Q8 N) y) F8 h$ Y, k}2 ^0 A  e6 n% `+ `. l
请问运行Test函数会有什么样的结果?+ M3 v* }7 q2 l3 B% ?$ d0 j
答:- Y$ Z) s6 I2 Q4 i" ]% N: G3 s
4 a$ j7 k" \  i* v1 W4 a
五、编写strcpy函数(10分)
% `0 X; p# y* d, c0 j已知strcpy函数的原型是' D' f& E9 @& v
char *strcpy(char *strDest, const char *strSrc);; ~' M% m, p8 x' M- ]! k' x. {0 [
其中strDest是目的字符串,strSrc是源字符串。$ n# A3 Z! c# G$ N" f; k( u9 J
(1)不调用C++/C的字符串库函数,请编写函数 strcpy# v8 f9 ?0 E! c( B
# `1 O( s$ r) N' L7 H/ D
2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?3 o* y! Z) \  |9 U" S

5 Q' U) f8 N4 Q  A, i9 a6 n六、编写类String的构造函数、析构函数和赋值函数(25分)
1 ]# A3 [& z" K' a) D- `+ H已知类String的原型为:
8 U$ m4 V7 K' X7 O" u! N  T- s class String1 s6 R( C0 S* ~9 w% z
{& |7 K/ E+ X; c7 w
   public:
' H/ m, C0 O  R  String(const char *str = NULL); // 普通构造函数
. j! x4 q1 x* v' n" s  String(const String &other);     // 拷贝构造函数6 F: q! }% ?6 ~0 I3 h3 R: P
  ~ String(void);         // 析构函数
7 ]" Q6 M$ v" O: d  String & operate =(const String &other); // 赋值函数
2 S, Y8 F" z: N: T$ G   private:
, K6 U' ^3 w5 c0 }( ^, m4 {# O1 t  char   *m_data;    // 用于保存字符串
9 M5 w: ?% Y" m  i; o: \ };8 k# A8 X5 V# V$ H
请编写String的上述4个函数。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶 踩 转发到微博

该用户从未签到

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

该用户从未签到

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

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

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

    [LV.1]初来乍到

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

    2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? " H1 j- f5 [1 H9 T! h0 [: M7 \这个倒真不知道,大概是利于编程

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

    该用户从未签到

    6
    发表于 2005-6-3 19:14:00 | 只看该作者
    三、简答题(25分)) \4 i, S) n2 H- c 1、头文件中的 ifndef/define/endif 干什么用?5 J( \" Y. R# l7 A1 l 起码加上前缀(#)吧,其中 #ifnedf 就是说如果没有定义什么则……" j5 b8 p. [( Y3 O" R #define xxx yyy 就是把之后出现的yyy用xxx替换& |% e* `. F& O; C2 L #endif 与#if系列配合使用2 K' A, e4 R% { 2、#include 和 #include “filename.h” 有什么区别? % K6 k6 _, `& E) i, D$ A0 B这个玩笑闹大了…… 估计前是用是指先在系统指定的包含目录中查找文件,""是在当前目录中,当然可以使用绝对路径 7 j t2 k: k( F" v4 { 3、const 有什么用途?(请至少说明两种)1 h* v: k: `* b, z. h 限制变量不被修改,保证函数不修改变量8 u9 i6 R. K8 O/ E/ l) Y; N 4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明? " N& \7 S" I- p2 ^) R' v指编译的时候使用C风格的函数名 / V' J/ |, C% Q! u 6 K4 Z( a% `* z0 C" `) D: c& Q四、有关内存的思考题(20分) 6 _. T% W3 Q" q" ivoid GetMemory(char *p) : }5 C2 b! b" ]! H; f- K0 m{% q% i% u2 l8 x5 n p = (char *)malloc(100);! [ N# Y& x" z4 I. ^# f }4 b1 X; _$ J: W, i void Test(void) * }. [* ?% G# C9 t( q: B3 T2 }( P {0 n+ ` W" s- b! c! g char *str = NULL;! O. \" z( Q' X" M GetMemory(str); & G5 z" @: X5 d strcpy(str, "hello world"); ; l7 G; t# Y7 J; Fprintf(str);. s3 c- c4 s+ g- t2 B. \ }- q- b$ y( R% q 请问运行Test函数会有什么样的结果? 4 R3 ?( @0 T* J8 |1 B# w7 Z* w答:错误,str没有正确指向申请的内存地址0 o/ F a9 }& Z# z) Q+ B0 d Void GetMemory2(char **p, int num); i. B# L$ }6 y! W5 L6 H$ ?/ m {$ d* U: d+ _" ]" e3 l8 d( H *p = (char *)malloc(num);* \( v$ X( }7 K# m } ) B! S2 C9 ~+ j. ?7 Q+ o5 ~' o) K* ^$ Xvoid Test(void): P0 s% }: ^& ]0 b+ W {2 K4 S/ R5 J3 w char *str = NULL; % y [! m6 T- b& vGetMemory(&str, 100);! _# @3 m7 R# m: i9 Z strcpy(str, "hello"); & a4 p* s/ ^, Q. ~: F! p- iprintf(str); 7 ]- S; k' q4 P4 x$ D) W/ R }8 P) ?, \9 ^6 ^7 a 请问运行Test函数会有什么样的结果? - w1 g w# ~5 R/ c/ D, K& S2 ^答:正确执行,打印出“Hello” # I5 t) E' H2 {! L$ f! }char *GetMemory(void) 4 i! s% R; h( b. |2 Y/ B; h{ ! o: ?# i& P! ?2 V, R char p[] = "hello world"; 6 O3 v2 Q' ]1 p, o- G' Yreturn p; ( N! \ i- z) a. i# N- f2 w}& i- Y! J7 V3 q- r' H: s7 a/ z void Test(void)+ @/ C6 L) O2 m! l( Z {- E: l& L4 a0 C+ ~1 L8 S# u char *str = NULL;8 K! i$ x7 ^1 G- j/ o, ]5 d str = GetMemory(); + c: c3 w2 j, ~printf(str);6 `5 @9 f# g8 b1 O }6 ~# I: ]8 T% D9 j 请问运行Test函数会有什么样的结果? 4 l+ I. E. Q1 B. {) d. Q答:错误,str指向的内存地址已经被系统释放$ s# A, G: z" y3 G, p void Test(void). x* G( K6 t- z' a1 z E { 1 v/ f! f2 O. [ cchar *str = (char *) malloc(100); " B; x4 ~* A. k( r, Z! \strcpy(str, “hello”); 6 ^+ u! U. b; R/ w6 e/ H% [! T$ bfree(str); 8 w) \. G4 q0 w& Wif(str != NULL) ) l) e6 p6 i0 Z) B. i8 i{2 o- U$ C1 b' S. H9 S( x strcpy(str, “world”); ( B1 d5 O: p; Y/ B) Pprintf(str); ) r1 Q* W, w, J7 P, F0 G} ! `1 D2 _2 H! r+ o} 2 ]# B$ z- r3 C5 a请问运行Test函数会有什么样的结果? ; r) c0 O! n( d: {/ x' g( t答:错误,free函数不负责将str置0,故strcpy无法正确工作 ' m m- q4 }: v5 h' s7 D2 j& V! ?8 d) q. E3 o+ g) y 五、编写strcpy函数(10分) ! @; f) `. o& Q! W1 \已知strcpy函数的原型是6 W T( o2 r1 @* K; r9 K4 H+ q char *strcpy(char *strDest, const char *strSrc);# j; [- y* c y 其中strDest是目的字符串,strSrc是源字符串。; a4 k1 p" P) z) R* z" R9 |. G (1)不调用C++/C的字符串库函数,请编写函数 strcpy 3 u% t, W+ j% z- u! w; g; Cchar *strcpy(char *strDest, const char *strSrc) 4 x. _0 h% T2 v: n9 w{ 3 @8 R2 c# C% C if(strDest == NULL || strSrc == NULL) return 0;$ R+ I' Q ]: d/ Y7 e for(int i =0;(strDest[ I] = strSrc[I ]) != 0;i++);* O3 j8 ?, |& t7 k8 p* O, W return strDest;4 U2 Y$ W% ]& S1 b7 r7 Y+ C z q }! r! X' b+ ]) X2 P. @" E 2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?' w. a3 S# E& ? 这个倒真不知道,大概是利于编程 $ H8 C/ z6 A, P+ p7 E# ]7 A" m六、编写类String的构造函数、析构函数和赋值函数(25分) 6 ^8 k7 j6 z- }! \8 C已知类String的原型为:" v/ t7 r, O1 v% g class String & j/ d h, w5 H6 t{1 T0 e- Y6 W9 o- b public:. r0 @3 M% t% i' y String(const char *str = NULL) // 普通构造函数 8 m' @3 h7 k0 g( v7 j{ ; @: }# m" W7 ^8 ~$ u: B! C( f if(str==NULL){ 9 x) J: g, z3 L% b, I6 |7 [1 }8 e m_data = new char[1]; 7 J _; B* y3 a7 { m_data[0] = 0; ' I' J6 ]/ C( t: ?! s } ; c7 W+ P6 S0 W$ ^0 o7 y9 y else & s [9 I' S7 k& j { ; H: H; C- M2 h3 e( i& @( ~: r m_data = new char[strlen(str) + 1]; * h3 ^) s2 L8 x N strcpy(m_data,str);, {' M m2 x( i- ~7 P }4 X* M9 Z6 x4 f- P! h( [6 d& E6 I. O$ [ } , K6 |6 x7 L4 K" w3 I. \ String(const String &other) // 拷贝构造函数 * X6 D# h* O* `{" E; ^3 D/ `6 b3 G% {" a *this = other;% I ~4 x E- I0 W' ^ m } + H% Y. m; W' [) o/ P ~ String(void) // 析构函数; L% u2 l4 Z' z- b8 G' Q { * ?$ t+ _ I& z4 N! @& F delete [] m_data; & x3 i( N9 L" q: A* y0 \$ |}4 ^/ y' t ~+ s% ~3 R- Q4 e# G String & operate =(const String &other) // 赋值函数 6 S+ q- p& i( Y; s- b{ 8 {+ l7 \3 M; p& x* f' J: t7 w m_data = new char[strlen(other.m_data) + 1];6 T& |8 r: @0 W, L+ P( g3 f strcpy(m_data,str); D9 U5 @2 t2 t2 W) h/ _ return *this; ! l: x5 j2 _2 ^% r. s- S2 Q} + D2 H& F2 @) w* d! l* W private: % X; M% A5 c' V1 c, S, |5 H) O4 @ char *m_data; // 用于保存字符串 # y7 E! b1 b& d+ Y. O0 Z9 g* k! t};# C4 C3 b, M" b5 ?/ M 请编写String的上述4个函数。& \1 F/ c7 @7 S- \7 l
    [此贴子已经被作者于2005-6-3 19:23:13编辑过]
    , q; t' x3 W7 f |8 Y) x' x; j
  • TA的每日心情
    奋斗
    2015-9-17 00:58
  • 签到天数: 1 天

    [LV.1]初来乍到

    5
    发表于 2005-6-3 15:04:00 | 只看该作者
    以下是引用Eagle在2005-6-3 10:54:17的发言: * w4 m' h/ ~& X' V2 l4 w9 J: A9 q3 i

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

    0 e) e' a5 N( z( Z5 c. E3 T

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

    . E$ ~+ S1 E4 \ ! M9 @) g: p% D2 L8 b; X% _/ d$ w& h6 _ yes you are all right 1 ^# A* k# D- F: _ 楼主这些题目实在太基础了,如果这些不会,需要去看基础的知识,推荐 C++ primer

    该用户从未签到

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

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

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

    该用户从未签到

    3
     楼主| 发表于 2005-6-2 21:59:00 | 只看该作者
    以下是引用游侠无极限在2005-6-2 18:59:15的发言:3 R2 p. z; ]4 o% n4 q0 [" D3 A# K$ a - q! D% O* d1 v4 j# h/ Y/ p

    软考的?

    2 ?' t( }0 \3 L+ S

    其实都是很基本的题目阿

    , D6 G6 q( h+ t( y6 Z2 c " m2 ~( b7 f# n d3 L: n+ r4 Q D3 X ) B9 w" y$ C2 H% |& g/ ?1 [C有N年没看了。。大哥给几道答案吧

    该用户从未签到

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

    软考的?

    其实都是很基本的题目阿

    关闭

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

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