下沙论坛

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

QQ登录

QQ登录

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

笔试题好多不会做~郁闷

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-6-2 16:46:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案
% a  g9 T2 M9 v3 O! {一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)6 `8 M+ D1 t2 n
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
3 T" D8 ^+ u4 [7 ~5 B- B    if ( n == 0 )
$ N4 p: p7 m3 |% }    if ( n != 0 )
' l) _! u( V& J4 I4 k0 I以此类推。& ?" M) G; o; @' l' |) A
请写出 BOOL  flag 与“零值”比较的 if 语句:
5 [# G7 ^- G9 j5 `7 C" o: _* M  d8 y3 |, U6 Q0 c
请写出 float  x 与“零值”比较的 if 语句:
2 e( m5 x1 h7 j6 B9 x+ ~  i- N
4 |: ]! w+ W7 f% t2 H! x请写出 char  *p 与“零值”比较的 if 语句:
" Y5 Z: I7 t2 W6 W0 [3 u* {9 j4 R& f% S6 z$ B8 M( V! @0 P
二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
% {2 x7 R% `2 w) B2 ?char  str[] = “Hello” ; 0 X: ~1 z! d$ b+ x$ Q
char   *p = str ;  }; i# p8 f9 d( `0 }" N( K4 X
int     n = 10;3 F, Z) s; F& O! I
请计算
2 ?4 {" u7 [) w; e. psizeof (str ) =                 : Z# v* l8 j8 d( Y  _, W
sizeof ( p ) =                 
6 x4 H8 g) q; W+ _& n) Esizeof ( n ) =
: R% A8 o4 o9 P0 @. z5 wvoid Func ( char str[100])' {' u/ q8 a& N6 _5 p
{
; R3 A/ R4 o2 i6 v$ p8 ?请计算
+ g0 @, w" E) zsizeof( str ) =    ' U6 Z3 O  o" a% L" i  ^/ U( L
}
1 `7 e9 m( {0 A! z% ]void *p = malloc( 100 );
4 N2 c+ X/ s. O/ f. {9 N+ j请计算( _$ n+ j0 A  [. A
sizeof ( p ) =4 j  W8 \7 H! b* p4 X/ g8 b/ z3 G
三、简答题(25分)
* Z8 X8 ?/ r+ j2 T: a1、头文件中的 ifndef/define/endif 干什么用?; Z! C4 p8 H$ m$ u
2、#include     和  #include  “filename.h” 有什么区别?1 X/ F( L  A0 R6 @5 D
3、const 有什么用途?(请至少说明两种)$ w# c! S0 t: |: k# x' q6 ~
4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?
2 A5 v  Y' \6 G7 O$ j" X6 |四、有关内存的思考题(20分)
7 K6 {5 f3 [, |- f, A! ^* [) Uvoid GetMemory(char *p)
$ d9 m/ t6 _7 s7 P! t. m, l{
9 ^" S4 h$ {0 _, ]p = (char *)malloc(100);/ m5 g, |8 f; l/ e8 ~; x
}
! F! w. q$ y! S+ X' D7 z' b! yvoid Test(void)
) U, \: p  j5 q2 }/ ~{
" N1 i, h5 ?7 }+ U/ x* t: Jchar *str = NULL;
7 D' U1 f( l, ?GetMemory(str);
' T+ i9 V4 S7 ]5 G6 S0 ?$ {% Dstrcpy(str, "hello world");: ^6 m3 n, Q7 e4 }
printf(str);
# m$ W9 r$ B' x% m7 m& c}
* `/ T- A' E: p. V5 N3 m) A. Y请问运行Test函数会有什么样的结果?
5 M( x5 ?# r$ L% y( V: j答:
8 T- o7 a5 F8 ]* u0 ~" D7 M4 r, |- U8 H
Void GetMemory2(char **p, int num)
, x) i: s8 x- A3 M, e, v{
. g0 Z: z, N) `$ \*p = (char *)malloc(num);
0 W5 ]/ [$ [7 b}
. v# p0 |5 [5 Q% X( w, j* y8 Bvoid Test(void). h3 c: h* g4 l! A
{
! U1 |# e/ h8 d' P7 schar *str = NULL;8 Y: A3 A$ [7 O( }3 F8 ~, Z; O
GetMemory(&str, 100);: x. ]% v0 h( y6 W
strcpy(str, "hello");
. d/ y" E; \: a0 o# oprintf(str);
/ s+ C# i$ R/ i: ?}
+ j/ ?2 ?, O  C2 \请问运行Test函数会有什么样的结果?$ [, f! B9 u# ]4 g
答:7 S, l% I% m" p( K
char *GetMemory(void)
7 q+ u* |& ^/ ]/ \  c  T{
5 }7 Z" W5 p2 @3 K2 `/ Vchar p[] = "hello world";
- k# ]3 y# G7 Z8 ?" Ureturn p;2 c) t# c# {: ^7 }- v; Z
}
: o% t4 _/ k5 @5 T+ @( m8 V$ dvoid Test(void)
5 a7 |8 Y9 q9 i$ A. m{
5 d: h) S' {, \& G9 Nchar *str = NULL;
7 A8 [8 E* A( k5 S) fstr = GetMemory();$ R% e$ D& n1 o* B! m) j
printf(str);: [8 p: m+ P, e
}
' S+ r% ~' V3 l' l- f7 Z请问运行Test函数会有什么样的结果?
4 r$ f' W1 i" R% }" _答:& [" ?! y4 A" t( g; i5 [8 Z

6 A* [- t& X! E$ Bvoid Test(void)
. b# V, t4 d  n  {{! R/ K6 _) K: p: a  p
char *str = (char *) malloc(100);
6 _, _' d, ^& C( Rstrcpy(str, “hello”); 9 p# G% i: G4 |! }% O- N
free(str);     
! T6 S5 F) B  `' J) X, [9 K: sif(str != NULL) $ Y2 E# \* t9 ^
{+ O; h) ~7 W1 G) v9 ?. F
strcpy(str, “world”);
6 y+ E: c- f$ F* U; x! Wprintf(str);/ o/ {2 _8 m3 J  n  s. e
}. q" z2 }% B- q3 C7 i
}( c, ?! t0 ^" p* i) V0 ^
请问运行Test函数会有什么样的结果?" X: Q7 \1 J- J/ V" E
答:, ^* V: m) `) p' P& P. y
# P5 f1 {7 _2 ]) l( A7 @& T4 d' s: L
五、编写strcpy函数(10分)
% `- H1 _. }3 q0 I已知strcpy函数的原型是
! Z' g  i7 ^8 h# f0 l, o* w( w7 c- d char *strcpy(char *strDest, const char *strSrc);
6 ?  b/ P8 r) i/ ~6 s( W0 M 其中strDest是目的字符串,strSrc是源字符串。
8 ?9 O, b% U8 I! ]  [" q& `(1)不调用C++/C的字符串库函数,请编写函数 strcpy
  k5 O% \& [# W) |% l5 d3 m) z7 ^  b$ H1 H
2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?0 E7 y) C$ M# T1 q- c5 H+ i
+ G9 q! n& H9 D/ D+ ^6 p- ~
六、编写类String的构造函数、析构函数和赋值函数(25分)
8 {( N5 x. T- G/ h; Y已知类String的原型为:% _! W) }0 V: r6 H
class String
0 f; i( n: J: Q8 ?" d {5 V+ z3 `4 o4 R7 K0 k3 w3 k
   public:6 W- o( W! c) C: y% c( d( ]
  String(const char *str = NULL); // 普通构造函数! V/ a' t" {2 @; b* z! c
  String(const String &other);     // 拷贝构造函数+ a# n8 l% z7 _( x+ i9 z
  ~ String(void);         // 析构函数6 E( y, r; G; ^  Q) R9 J* I4 J
  String & operate =(const String &other); // 赋值函数! U; ^2 k  W, d4 f; ~  F
   private:
5 A; v5 j! \2 C' x- F% s. r5 w  char   *m_data;    // 用于保存字符串  }2 Y( R% |  j2 v- |# Z' q* A+ k
};+ D9 {: n: t  q1 E2 A
请编写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的发言:. Q x1 [& y* s- t+ F+ h7 o ) U. r% H* g' \/ i9 Y

软考的?

, o8 J6 k2 v2 U, e

其实都是很基本的题目阿

% E( F6 h& d* s4 H$ ~/ q$ _ 7 o/ O* |& e: ?- \) i2 S: ^. ?6 ]- n8 G7 N 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的发言: 0 e# P, }- J& @$ s2 @6 F/ X2 h- d3 G6 n( }

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

    ( `: G2 l; l+ A: ?' U: U! z# m

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

    . N) y* g% ~7 S/ u5 ?, j- E4 z; ] * _- J, s9 H+ I. w6 z' {$ \: U* H. Z$ f+ Q v. P6 @ yes you are all right 8 k& v: u- z, [楼主这些题目实在太基础了,如果这些不会,需要去看基础的知识,推荐 C++ primer

    该用户从未签到

    6
    发表于 2005-6-3 19:14:00 | 只看该作者
    三、简答题(25分) * t0 a! j1 q) m k1、头文件中的 ifndef/define/endif 干什么用?/ c0 i/ v$ z B5 r `( z 起码加上前缀(#)吧,其中 #ifnedf 就是说如果没有定义什么则…… " R' Z( {. K# B! N#define xxx yyy 就是把之后出现的yyy用xxx替换; c! W- W- t! P% G& F& } #endif 与#if系列配合使用 _3 D3 |4 ]; A9 o4 g8 z5 [, ^2、#include 和 #include “filename.h” 有什么区别? t) W! J1 N- E这个玩笑闹大了…… 估计前是用是指先在系统指定的包含目录中查找文件,""是在当前目录中,当然可以使用绝对路径 3 `8 ^0 ?* A0 H9 Y+ U$ S3、const 有什么用途?(请至少说明两种)5 Y/ j. q7 \% I" F1 h' y) G& g6 Z8 | 限制变量不被修改,保证函数不修改变量 3 M6 @ J5 k# W) L4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明? # d* F0 C, Z. a指编译的时候使用C风格的函数名 ) N1 a7 l' ?% K: V# q 4 \1 I8 s1 b {& U0 I! r四、有关内存的思考题(20分) ! M0 r! f, d. c& N! @! c4 yvoid GetMemory(char *p)6 \' w; ~( a; D' i- e h2 [ { 5 T' M( T9 q/ p/ d1 `# U. }* p, Q! T( Y2 Fp = (char *)malloc(100); - r$ O5 Q) ^, ~/ @- t}% y, ?' G( b" h1 g% z# ~' s% y void Test(void) 1 \+ v; N$ p: s6 H1 q S! p {9 J9 t, q/ I3 R8 X t- g9 h char *str = NULL; ' e9 F- |4 b! R; nGetMemory(str); / I0 X3 v, o4 A! e0 Wstrcpy(str, "hello world"); 5 P1 I/ L' ` b- C: e' xprintf(str);# \6 j& e2 ~7 @6 M: F r1 ` } ! [# I! L4 r) T6 l2 `请问运行Test函数会有什么样的结果?# t5 b$ A! g+ J$ [ 答:错误,str没有正确指向申请的内存地址 3 @4 \9 D. [7 k2 u6 [5 L/ |+ VVoid GetMemory2(char **p, int num)1 }6 L/ w; [ O {2 u# \4 Y( H! L4 X: _! K *p = (char *)malloc(num); 3 z M1 y1 S2 `0 Z) F} ) o6 { z+ J# q$ B$ F2 T+ ^void Test(void)- b0 g4 M) y+ ^% _2 b {7 Z- Y4 i( i! I& b$ f char *str = NULL;" T* X/ R. k G @# w9 |1 z/ D9 U GetMemory(&str, 100); . g0 P' v* l" hstrcpy(str, "hello"); ! L1 B+ [* X) o: i: g3 s/ ^8 vprintf(str); 4 F' G, R. O; r! |* |} % h$ |+ x" E0 L/ J: W9 e3 Q& n! W请问运行Test函数会有什么样的结果?( n! i7 ?2 T( q 答:正确执行,打印出“Hello”9 M8 H# {% g' P ^/ d* y/ R char *GetMemory(void) 7 D# I, A- q4 Q) Z6 x: N! `{ 8 W. N/ q3 m3 T5 h char p[] = "hello world"; , |) \* ]5 U) Creturn p; $ |/ n. @+ b7 h} 9 B- |6 Z* u3 l3 rvoid Test(void) 8 I i2 s* {8 S* A$ L{) a9 ]! m; G, [- h, E, n4 Y char *str = NULL;8 }6 {" M `6 A0 W' z str = GetMemory(); G. E/ F9 F* bprintf(str); . q4 Y- l- ^6 _# M I6 ?( N1 f}5 L0 P1 f! C, `8 C$ U 请问运行Test函数会有什么样的结果? E/ h/ @! n5 r, Y0 o% J" X答:错误,str指向的内存地址已经被系统释放 " T' u5 d) ^0 K3 }/ y! r s0 v$ Fvoid Test(void)3 E7 ^; v0 W8 s. M! L/ C. { { 3 j- p1 L, ~( |( H& uchar *str = (char *) malloc(100);2 x- R( \1 t# d strcpy(str, “hello”); : c/ s2 S1 y) }5 F- B: n8 lfree(str); ! \6 l; Y/ d, w1 P7 Tif(str != NULL) 7 r; u6 i5 D6 ]" V1 @ {+ H% M! t: D0 q ? strcpy(str, “world”); 7 b4 R A8 J j+ X6 H* R- zprintf(str);7 Q1 @2 \, ~9 R- I- \3 t }7 s6 H/ {; d( z/ } }4 W3 v& I5 M* L: u; V, b 请问运行Test函数会有什么样的结果? ]+ t/ [" {7 r6 D# ~. \答:错误,free函数不负责将str置0,故strcpy无法正确工作 ) _+ O) W& p% y) N0 V( A; U9 W9 k! v" e1 P) A; T& Q L) C) q 五、编写strcpy函数(10分) D% n! W# T) P! S! n s8 n已知strcpy函数的原型是 / M& D, f' J4 P J+ {char *strcpy(char *strDest, const char *strSrc);) N7 m6 D4 A2 ~( |; ] 其中strDest是目的字符串,strSrc是源字符串。0 N1 r, _; x' d" i. s$ c% O (1)不调用C++/C的字符串库函数,请编写函数 strcpy: m5 T+ _* L# X# z char *strcpy(char *strDest, const char *strSrc) 3 Z+ a2 ~) } f, g+ Q3 N4 R, r{ 1 J) O; {4 N4 a0 { if(strDest == NULL || strSrc == NULL) return 0;) T5 w& L$ E7 h( }, Q3 o for(int i =0;(strDest[ I] = strSrc[I ]) != 0;i++); 4 P( v" O m" ^1 [1 j return strDest;9 U0 Y; a1 k( t, O6 r } - D I7 J3 C) q! i) `/ u0 a2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?! A, j7 H# R3 h! b7 o 这个倒真不知道,大概是利于编程 4 q# U' A7 n% K1 X. l六、编写类String的构造函数、析构函数和赋值函数(25分) 2 K; @8 w$ Z/ h( B8 X( e9 Z' |已知类String的原型为: ; C8 [3 \9 a3 E, \; e% Nclass String! w' m$ i7 ~) y* {$ Q2 ~ {' Q9 o& N& C: w1 ?6 G k1 n. t% u( H public:+ F1 y5 H" y* ~; Y8 i* P String(const char *str = NULL) // 普通构造函数 0 o2 M) ?1 l- S9 ~; p4 X{ 1 y& T: K- f3 _ if(str==NULL){0 E7 g' N9 {- E& g m_data = new char[1];. h: L2 ^7 J) \% g; R' F' Z m_data[0] = 0;; D! I1 a1 |6 O, ]# A" X* @ }5 z# I. `* v2 a7 a+ L else( T) \. y; ^# u& l# m { # _9 t7 ]. w$ F' z+ h m_data = new char[strlen(str) + 1]; 1 z& y+ w, d7 s& \ strcpy(m_data,str);7 R& b; H" l$ V7 k' y, C# S } 1 D1 a- r- }5 P7 {6 `$ {} 1 B: @1 X, [# b; n Z String(const String &other) // 拷贝构造函数 # h; b* E% h ]( Y/ |$ }! W, t" n{ 2 `: k N2 v6 ]. Z% J2 B9 e *this = other;" e% O, r0 T1 T! t9 d- \ }9 I, U1 O1 t/ F1 E ~ String(void) // 析构函数( e' @' }7 |' p8 X { ; \+ m, \6 B& e# } delete [] m_data;# K* B3 I1 }! q- g7 J& W+ ^ } % |/ f0 [! n3 ?4 z* k7 o: { String & operate =(const String &other) // 赋值函数- M/ r! E% o' ~* S) z! _ { ' X# K8 M1 q' b+ X8 m m_data = new char[strlen(other.m_data) + 1]; 3 W3 [* m9 P$ ]1 C$ {, E strcpy(m_data,str); 3 O) B9 R# V8 V) X6 L7 b3 \* N return *this; 4 q, x8 q0 d! N% ]} - l0 r& K1 S- ?2 K v0 I9 n6 X- i private:- ^' W' f! m6 I char *m_data; // 用于保存字符串 & _+ P* {0 H$ \ x3 {, p};) Q# K: K& z# P& ? 请编写String的上述4个函数。# `# E; h4 d5 X1 p8 m
    [此贴子已经被作者于2005-6-3 19:23:13编辑过]
    ?7 _# _; i# I. I8 X/ A! v* X
  • TA的每日心情
    奋斗
    2015-9-17 00:58
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? . M$ R7 |3 j) I# i8 e. c- N这个倒真不知道,大概是利于编程

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

    该用户从未签到

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

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

    该用户从未签到

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

    本版积分规则

    关闭

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

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