下沙论坛

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

QQ登录

QQ登录

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

笔试题好多不会做~郁闷

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-6-2 16:46:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案
5 J% }, V% q" l% ?一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)# m8 N: B+ C$ ]4 f( q* u% ?
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
) _8 I+ f# V# \# U! N    if ( n == 0 )
4 I5 x+ |- n: G; k    if ( n != 0 )
! a) Y, `1 N% x: [以此类推。& V! v5 D# I7 O! U
请写出 BOOL  flag 与“零值”比较的 if 语句:* [0 n! W" f* x+ M+ E

' e4 x- h- U, ]! W! P请写出 float  x 与“零值”比较的 if 语句:
& F* }9 B9 j6 l" `+ t; Y$ E* g6 Q) m+ o0 J
请写出 char  *p 与“零值”比较的 if 语句:
" O# a1 w2 |: U! }; y2 o( s
4 t  z- V) H( g( n& {0 w" b& D2 z二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)" B8 D$ h" M  M+ I
char  str[] = “Hello” ; + j9 q+ w0 c( h
char   *p = str ;. l/ t% Z$ y* e! M; O- C5 O# x
int     n = 10;
* K, z6 W: @; v- G1 Z7 k请计算6 n" c/ K5 S  F
sizeof (str ) =                 7 {. m* d4 u3 u9 b0 T" {2 G
sizeof ( p ) =                 , A. b' r( Q4 C: S" D/ K2 i4 j+ ]
sizeof ( n ) =
$ S" A  u+ t7 `void Func ( char str[100])
0 y! A0 h2 ^, n{- o" K/ x# o; k/ @  n7 Z
请计算 9 L+ ]% V. A! P6 H
sizeof( str ) =   
! R5 B5 u9 \- C3 C3 P5 B}& Z7 r! X" Y" b6 k& A" Z& @4 m
void *p = malloc( 100 );
; b/ m3 A) j/ v1 D) \请计算
6 p( w, l) ^" G6 w6 A! ysizeof ( p ) =7 E4 W$ Y# T2 z! G2 y. o3 w4 k
三、简答题(25分)
$ C3 L, {* `1 ]. N1、头文件中的 ifndef/define/endif 干什么用?
$ T) r' P& g) d, W2、#include     和  #include  “filename.h” 有什么区别?
+ H2 K6 c+ K. _0 z: Y9 l, |6 m% b3、const 有什么用途?(请至少说明两种), p# ]4 r$ P* h* c/ ~
4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?' |% @& R( z6 s! A; G
四、有关内存的思考题(20分)
, J! d7 M  x) kvoid GetMemory(char *p)0 K7 {/ t; v& Z! l
{
% o1 y  M6 f4 {/ H; T% I& O, Ap = (char *)malloc(100);; ~9 s# K  Q* c, x
}0 P( s# e5 f9 b1 \% i) I0 h$ N4 o5 v
void Test(void)
1 {* ]* Y& X! ]5 N' T- V{% Q1 p- t/ {' B' s
char *str = NULL;9 S9 H0 f: l1 G7 d
GetMemory(str); 7 g  i' \7 z2 q* q
strcpy(str, "hello world");6 V5 {  n' v! e( {$ Y8 Z6 f6 z
printf(str);, I" |) |$ F# T1 o1 X6 j
}
6 f1 t5 L& {5 g. n/ G" U  S请问运行Test函数会有什么样的结果?
; w) @) z" d$ ]5 [% X答:
2 ?- [1 v8 O$ S5 E8 C( s. z; z. N$ y: F! W, M9 k$ K& V" V: v
Void GetMemory2(char **p, int num)
( e# W6 o, I3 p# j2 r{
) E9 V  P) [" B$ W( ^*p = (char *)malloc(num);
8 Z% y; C4 R) \- ^}
& P3 t. V/ X% [% \void Test(void)
% c8 {$ h/ O! N{+ M" n: M1 G8 b0 B" l3 O
char *str = NULL;
. l' C, B+ C7 I9 c% F. R) z% XGetMemory(&str, 100);( n% O6 g$ b; c: w5 x( Z# h
strcpy(str, "hello"); # V" g+ e0 Y+ w6 O# a; w- }
printf(str);
7 k# S0 r2 K4 ^1 w* Z. l}
& g1 l- g. P' I0 p0 ?! \& v' H请问运行Test函数会有什么样的结果?
% ?1 ?0 X, m7 I" Z: K4 }. r. _7 k答:
2 f' L4 l" p  lchar *GetMemory(void)
4 C. B( ~( W- Y{ 7 ]; C! e  _$ \; Q+ |! E
char p[] = "hello world";
9 s) s9 s! h2 D& ^. freturn p;- ^1 [9 k" {8 v' F7 A; |" _) U
}2 a3 C9 Q/ g3 Z9 @% G
void Test(void)* F9 q0 R4 N% w
{9 f. g( M1 Z3 o
char *str = NULL;
, H' F1 Q4 [, \str = GetMemory();; v- W7 `: i3 l+ V
printf(str);
7 x7 `! ?9 ?+ U1 [% Z' H0 H5 q}, [- u' L+ f+ q
请问运行Test函数会有什么样的结果?* v' X! E# N  Y6 p7 j
答:
( L1 P. E# ]' `, ^/ R5 O$ u: E, V6 f1 u% a2 X, H$ b5 @
void Test(void)
6 H: F- w* |0 B) M  M8 A{" r7 l* v1 m8 U: }9 S$ c8 G7 C( e
char *str = (char *) malloc(100);3 o! @* c) B  U3 X% w5 B! I
strcpy(str, “hello”); - j$ Q1 o2 L  x. }9 \9 X
free(str);     
: i/ g2 S" f9 r( fif(str != NULL)
% e- B: P+ f( k& B% d{
$ j( u' B: G9 x. w& g1 A; H* e strcpy(str, “world”); * h* x7 T0 X+ R8 P; t/ m
printf(str);4 a- Q% k2 O* q/ S2 [. p
}
4 I- f" I  ]7 j; X8 [, O- X, y}7 W6 P; T; t  ~! R2 m% K
请问运行Test函数会有什么样的结果?) V8 v7 q  G. q
答:
3 O4 t9 Y  d. c
' T+ A3 V" i7 A  O五、编写strcpy函数(10分)
- G% n! d5 `/ D! j已知strcpy函数的原型是
' i% N$ C) F. U  y char *strcpy(char *strDest, const char *strSrc);
8 x2 O/ d7 f. H& L4 | 其中strDest是目的字符串,strSrc是源字符串。4 ~% }( N+ F7 h
(1)不调用C++/C的字符串库函数,请编写函数 strcpy
+ ?# K7 M1 z$ Y7 V+ o* H; e1 s: P, P. U: k" p
2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
0 Z9 S# w6 q( T; _( N1 S: }$ Q' f: Y! ]# e* F1 }: C
六、编写类String的构造函数、析构函数和赋值函数(25分)0 t5 @: b- f8 N' R) {! P
已知类String的原型为:
8 c( a% ]; K! E, d class String' q3 b5 n: g1 o7 E
{2 O2 i7 X/ T7 A7 t( H$ r% M+ ?
   public:/ Z5 @6 s0 Q* g: C7 t2 M
  String(const char *str = NULL); // 普通构造函数  s( o% K2 k0 p
  String(const String &other);     // 拷贝构造函数: W/ B' X) l! x+ [/ }) }
  ~ String(void);         // 析构函数) P8 h, S# J/ w- a" ?) g7 }+ D
  String & operate =(const String &other); // 赋值函数
4 n) f) p: o, h: Z0 Q/ D   private:
" s4 g/ ]: O; S% Q: c& _  char   *m_data;    // 用于保存字符串* M! P. s  v5 A5 ]: B
};
, _; Q7 c7 u! N' } 请编写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的发言: , u j2 r, O3 u/ ]' z* }1 {6 ^0 S : E8 i. S" h3 F8 g* v: p

软考的?

5 L) J( x5 k9 b, D! i+ r

其实都是很基本的题目阿

+ N# d. Q# a3 c' r, C+ s0 P) e 5 |1 M7 T6 z/ q' w 3 \1 g3 _9 U$ J8 j2 @0 u* {" JC有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的发言:7 u8 q: B! A# G+ b o 8 ^7 R3 I+ i1 \% }& z: s2 ~# y

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

    ! e& ?# G8 M0 A* y

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

    ' k. y9 x# Z8 P6 b8 A# i ( W; }" L; H' D& E% Y$ f $ m# }7 z3 k- g8 \" a- T I yes you are all right % ^9 K0 t6 B9 \& G0 ]4 W 楼主这些题目实在太基础了,如果这些不会,需要去看基础的知识,推荐 C++ primer

    该用户从未签到

    6
    发表于 2005-6-3 19:14:00 | 只看该作者
    三、简答题(25分) * i L! T" V3 {8 g3 y1、头文件中的 ifndef/define/endif 干什么用?3 P6 T$ B; m8 |7 W$ f, O0 O 起码加上前缀(#)吧,其中 #ifnedf 就是说如果没有定义什么则……1 x; R% |) l" S #define xxx yyy 就是把之后出现的yyy用xxx替换$ t+ Z" G6 Y6 C5 i. @3 n #endif 与#if系列配合使用% ~8 P! v4 S; [+ @( a 2、#include 和 #include “filename.h” 有什么区别?2 r. d7 r& u0 n" j 这个玩笑闹大了…… 估计前是用是指先在系统指定的包含目录中查找文件,""是在当前目录中,当然可以使用绝对路径 # v: q7 c" n- R, h+ w 3、const 有什么用途?(请至少说明两种); _' c& ^5 c; C0 E1 o8 T* ` 限制变量不被修改,保证函数不修改变量) Q2 ] d9 S( z. f+ q3 } 4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明? 3 @- m, y+ C$ z7 g/ i- ]指编译的时候使用C风格的函数名 - d3 D: B0 s: D# J6 M/ z7 ? 8 T" R X1 ^) Q/ m% ~6 J0 Y四、有关内存的思考题(20分) : m) m3 t- B7 a2 @8 _void GetMemory(char *p) * k' l" c; p2 ]2 ~/ P$ G, P{) ?, K4 b S7 v/ f/ b# {* ^ p = (char *)malloc(100);( ^1 q1 M. ]4 ?7 i3 Y! y) U, l4 x }! G7 r3 Q1 @0 u void Test(void) 9 O2 w: [8 p8 g { 3 j0 `8 T) ~ V2 q% Z' Hchar *str = NULL;- F, U8 z' T# g1 O; ^ GetMemory(str); 0 B1 w" R7 A/ O1 q* Ustrcpy(str, "hello world"); 3 v" M; k" i8 w# Wprintf(str);6 f* ]' t$ O9 b3 N3 N } : L# q. _* q# n7 }. h请问运行Test函数会有什么样的结果? 8 c/ l6 Y% r' ~- ^5 |$ y" v答:错误,str没有正确指向申请的内存地址. y+ ?; \ R4 n& O) T4 o0 J Void GetMemory2(char **p, int num) 0 D" Z6 o: r0 g4 Y{ , u! E( x) f9 [9 b*p = (char *)malloc(num); & f, a9 _2 y1 P8 a9 T+ g} " R' n& U# X* h, N8 F f) u. F8 z" ~void Test(void) K) C* c& j# R+ W1 g{. T6 a# K$ A/ Q8 L8 s char *str = NULL; * C( F' @9 e! t5 z7 u# [GetMemory(&str, 100);% J. g; u# D* j! y7 ~2 x' i strcpy(str, "hello"); / i* {3 q- V7 ?' ^4 P7 V- ` F! c; j2 n printf(str); N }) K2 [/ @6 S} " k9 `5 [% Z5 t请问运行Test函数会有什么样的结果? 9 ?- w% e" O# d3 x答:正确执行,打印出“Hello” & ]0 l4 @7 U3 v0 B. I- o& Pchar *GetMemory(void) & c4 b' P/ m- K$ k{ s% T- L' E* G) k char p[] = "hello world"; . p5 Y6 _3 H/ T! ereturn p;. z( C2 Q# J! D& p, ?# q } & r( P/ ~, i/ y0 n" evoid Test(void)0 v! I$ r! |, {+ Z* |' R2 y9 o7 P( @ {: G2 y* D& \! I- ^' V; _' ^4 W char *str = NULL;& N! e" M+ g! { str = GetMemory(); 1 X$ P/ V4 |& `; uprintf(str); : ~# d# y% k; b7 ~: `" ]0 r}3 @, z2 d# S* |- G 请问运行Test函数会有什么样的结果?( a5 ?7 _' H3 ~' l& W 答:错误,str指向的内存地址已经被系统释放 % [& g$ \' m1 p- y" fvoid Test(void)$ N7 F# ]0 i1 W8 a2 ]9 {3 a {% Z; g/ [, E6 p3 u& ?1 i9 k char *str = (char *) malloc(100); 7 Z& [! E, V! }# Y; bstrcpy(str, “hello”); 8 p& E( O& F; B7 H( Nfree(str); : p* p3 I+ m2 I% ?if(str != NULL) * k1 X! C0 S3 @' m* A7 ?. j' I4 V { ( b# L4 n) _% L5 c& Y" V% h$ Ustrcpy(str, “world”); - Z" @3 Q' Q6 v B! A o printf(str); 2 H/ _' Y$ T6 k& L} - v6 B$ d- t9 [0 }, f. V5 F}: G: q0 k5 G" L+ M* | 请问运行Test函数会有什么样的结果? 3 s( _6 i) j% \7 _- m答:错误,free函数不负责将str置0,故strcpy无法正确工作 2 Z+ t. B4 D" n3 @ B- f9 G1 z, n0 Q 五、编写strcpy函数(10分) 9 ^8 M# C) j7 r" {. M% c已知strcpy函数的原型是 / y3 A5 [7 v* I; wchar *strcpy(char *strDest, const char *strSrc);# d# ~* p& s, N0 @ 其中strDest是目的字符串,strSrc是源字符串。 $ n: o& g, I, I8 _" Z(1)不调用C++/C的字符串库函数,请编写函数 strcpy' X/ Q- d: h5 q char *strcpy(char *strDest, const char *strSrc) 3 m9 z( V+ E8 ?" |; O{ . h; _0 Q- F' x% t7 O if(strDest == NULL || strSrc == NULL) return 0; , r2 `" K, L4 i7 E4 G( @$ F9 q# E for(int i =0;(strDest[ I] = strSrc[I ]) != 0;i++); ' A1 I: o1 j9 U" u! A' m+ I return strDest;' ]: \0 F& [9 O( H2 {6 q& L }& H; k2 R o; k- a 2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?: L/ l" T4 r( f6 h& D; N, C7 }+ A 这个倒真不知道,大概是利于编程, s( K E4 t+ e; l* k. L 六、编写类String的构造函数、析构函数和赋值函数(25分)8 }& ?( N& a. ?* ^ }; n m+ I7 b 已知类String的原型为: Y$ f; O, N. `2 A4 Q3 y/ Y; |8 Fclass String & ^ @7 Q* m( f+ M/ S{5 {1 u# p: [2 V, V+ E public: . c8 u6 Z) x4 m String(const char *str = NULL) // 普通构造函数 ' R0 ]8 P: C' ^5 U1 @4 @{: ^/ X* K! `. w! Z/ K9 @. U) j if(str==NULL){, W; c& \) R: s) I% z _ m_data = new char[1];$ C! U8 d* `: p7 @1 I m_data[0] = 0; 1 P! @8 ~8 P2 S4 c1 l } : e$ `5 k1 u4 E: J else * U0 V; q0 E3 N1 z {0 y$ j( T* G& W m_data = new char[strlen(str) + 1];* z2 e7 M$ A0 k2 q3 s: @ strcpy(m_data,str); ( @, A2 r" \8 M! \' x+ _ }' g9 @1 j" p( Q' m) ~ } ; \6 {( B6 V j. ?8 T5 i+ c String(const String &other) // 拷贝构造函数/ u; X; J: h5 N { 6 k3 h! U% `8 O, v6 k *this = other; 1 C& R' Y, b* a% d}+ |/ } \& V' x% C& V1 c( m ~ String(void) // 析构函数 9 B& b' C0 t$ O3 ]$ H( Z; y, y{, w( }* q7 g" k& R- z0 V delete [] m_data;5 Z8 E s9 w" U- W. I1 s, R# P } 9 v/ @" A( ?; O String & operate =(const String &other) // 赋值函数; o! t- S: T& z5 R+ N5 B% x {3 f& {; n! {" |- ~6 B m_data = new char[strlen(other.m_data) + 1];8 Q% f) p! k! \# U strcpy(m_data,str);/ J2 I3 a: F0 P ?. x$ q% Q) x return *this;2 L) V& d5 W% l" l } 4 A, }, W: `% F1 y' B: F private:+ y" Y: m4 _5 n( i char *m_data; // 用于保存字符串& d, @/ s* X/ \8 E* P };* e- L' {" r4 h. @9 y/ O' n1 B- j# S 请编写String的上述4个函数。" h( s' ]/ j+ z5 a) n0 `
    [此贴子已经被作者于2005-6-3 19:23:13编辑过]
    & G) w, j$ [& x7 _* }+ @3 o
  • TA的每日心情
    奋斗
    2015-9-17 00:58
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? G5 o# [0 U; n _这个倒真不知道,大概是利于编程

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

    该用户从未签到

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

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

    该用户从未签到

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

    本版积分规则

    关闭

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

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