下沙论坛

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

用新浪微博连接

一步搞定

QQ登录

QQ登录

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

笔试题好多不会做~郁闷

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-6-2 16:46:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案" z6 [* H# L; {! R0 U/ ?! f
一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)/ \+ T# o: t( v# E
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
( L/ ^3 p" f0 z5 `6 j2 R    if ( n == 0 ); w  x9 M' `  [' ~. y4 j7 ~: c
    if ( n != 0 ); p, J5 @1 R; j) B6 t; A
以此类推。4 _$ N% y/ T+ L% J
请写出 BOOL  flag 与“零值”比较的 if 语句:6 W5 F4 I8 w0 r

0 ^2 j# s- X3 Q( w请写出 float  x 与“零值”比较的 if 语句:: Q, r6 G( G6 \. K% n" C

& S8 i, }; a" Z3 ~* ]$ W请写出 char  *p 与“零值”比较的 if 语句:" X6 R# ~5 M$ y0 h3 a+ t  m' p
, [! j3 _$ w% y; Q
二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
% ?* d& L( h: |, Z; j" j) tchar  str[] = “Hello” ; 2 z# l' A" z" H$ _5 n1 K4 |
char   *p = str ;
3 A$ N- G: L1 Jint     n = 10;$ T" b* I8 d1 o% q
请计算2 [6 d4 v  j) e
sizeof (str ) =                 0 O( q8 ~2 V3 Q$ R: i
sizeof ( p ) =                 
9 t+ X  s( f- {- L) ^% S4 c- xsizeof ( n ) =
3 E  ^+ P4 f; L- avoid Func ( char str[100])
2 h5 K) }1 l  G: E) L/ M{
$ a3 R" ^. u" l2 r) u$ i" x- k请计算 - D- r  z- V0 C5 E: t
sizeof( str ) =   
  T9 R4 O! F" y# V1 L8 q1 O0 ^}
% A* q2 H+ [- ~% n+ ~6 zvoid *p = malloc( 100 );) d& y: w$ K, ^" D
请计算
! u. }; \7 _! z) Y( ?, q5 X& }sizeof ( p ) =
  g% f+ v8 k1 K. l三、简答题(25分)
, P; D! G' R2 `. S1、头文件中的 ifndef/define/endif 干什么用?' Y8 d2 J4 X, _! s. v5 ~4 A+ w
2、#include     和  #include  “filename.h” 有什么区别?) D8 J5 ^- N) n. t4 F5 }
3、const 有什么用途?(请至少说明两种)
1 \: D( e; A* ^3 ?4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?4 U2 w4 J6 {( E1 Z
四、有关内存的思考题(20分)
5 H% F3 h, ]/ V  Zvoid GetMemory(char *p)
% a! t/ l, W3 D" |4 k$ F0 Q9 Q{
& G+ i0 @- p9 O) a6 _p = (char *)malloc(100);' n$ m+ V% y1 T3 P
}
' g. y' [0 X; S$ r+ C- Yvoid Test(void)
0 }9 ]6 V7 s5 ]( e7 t) |7 G) J2 ?0 k{
. E- A8 O( E4 Z* Tchar *str = NULL;
: y2 h( z7 D: d" M2 j& Z/ HGetMemory(str);
. x  ?  \( u: H5 F& gstrcpy(str, "hello world");
% Y* X& D9 S2 C$ uprintf(str);! B- [! U6 E; i: ?9 z' F5 s. M
}8 f: T+ ?! x& W: ^* z* a
请问运行Test函数会有什么样的结果?
/ D* E/ K$ o; i  {6 }5 H6 r答:1 M# ?8 H/ H0 @& Q
' B2 b( v( C7 M6 `
Void GetMemory2(char **p, int num)5 U% c7 k5 F3 R' i& C
{
- j* @3 D& H; P0 j7 r6 m) _7 O*p = (char *)malloc(num);
9 ]4 J, O; {2 C- g0 ]3 k}
% `3 N, a4 B: G9 q& [( Ivoid Test(void)
0 D3 H& V& R# r- {  u8 l{
. x% }  f* ^& {+ y8 a9 N2 v4 Cchar *str = NULL;
1 Y3 }% E0 [% l; wGetMemory(&str, 100);
1 F; T4 m( d! t: {9 H7 t7 G1 r7 Q* nstrcpy(str, "hello");
* W  K! G" n+ uprintf(str); 7 f) F- t6 V1 s
}
: [7 x' n; `  C& u" a1 G! F请问运行Test函数会有什么样的结果?: C* b- ]+ l% v  H# a
答:
; s7 Y2 w0 q% x: L1 S7 lchar *GetMemory(void)7 W5 T* D0 j9 @' }
{ 4 u# h" F( W6 T% @
char p[] = "hello world";
/ H) T; e) @0 D" j0 N; Xreturn p;# ^6 M" |) L1 q$ b$ u
}9 W' O! n# v- ^# b: T
void Test(void)
% L9 O& m8 x% e; z  @& m{
7 v* K' ]# q) U+ V; Q5 wchar *str = NULL;. o1 g7 R) ~  N# g! l, d9 x" k! N' I
str = GetMemory();
1 v4 V" U4 u# d% X! {% Q7 v printf(str);8 p# O* p/ z1 z" A9 }
}
6 \% ]- r( Y, ^" C% [请问运行Test函数会有什么样的结果?
5 f' }7 S' S+ z2 @答:+ R4 w7 k! v1 Q1 D5 k( s: S+ u5 `

. G) B" a. t9 J. P9 y2 O4 m0 Wvoid Test(void)% a& F) I. Z- a6 g& m5 X% i" u) F
{
6 T! g: P4 e. {. T' }4 ?" u  Ychar *str = (char *) malloc(100);/ T! E* u$ G- S+ g' w
strcpy(str, “hello”);
' o, M! r7 D. p% `free(str);     0 x9 p/ R6 f' V
if(str != NULL)
5 {5 _4 Z% L+ }- [4 D0 B+ O{; F5 D) ?! ]) o( P5 a1 f
strcpy(str, “world”); 4 i+ `) o" Q2 x5 L# A; H: \
printf(str);8 {; N. L4 `" d
}
1 J' N) _/ h( R' p; y$ M; j( z}
( s- V+ \- i2 |' B5 X0 }请问运行Test函数会有什么样的结果?' n/ f% x# w; y4 v/ [0 j0 F# s
答:, |4 K. x- u6 a5 u8 Q
* f# o9 _, v5 k# U2 P& Z* j( q
五、编写strcpy函数(10分)# q5 x, r% x1 r' Q/ J, k
已知strcpy函数的原型是& G( ^# p% y8 m/ n( D
char *strcpy(char *strDest, const char *strSrc);
, m8 V7 a: Y. N, u2 v$ b2 W) X 其中strDest是目的字符串,strSrc是源字符串。
4 S& ?; e& r) O4 ]4 [: k(1)不调用C++/C的字符串库函数,请编写函数 strcpy, y' ?7 R5 h  A# A

+ C0 t7 E' `6 ^( R2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
- R% {6 Z  Q9 V. P* u3 |4 r9 j! s5 K/ K+ [* n. W- h5 J6 E
六、编写类String的构造函数、析构函数和赋值函数(25分)
  y6 q, V" C0 y* A! B" L已知类String的原型为:: J7 G  E6 ~5 R6 N
class String+ {2 _5 q, w* t# \
{  A$ C$ U/ l: \1 s
   public:, g9 d; z( l/ w9 L' A# T  W9 h& t
  String(const char *str = NULL); // 普通构造函数6 s) B) g  N+ T
  String(const String &other);     // 拷贝构造函数
/ q. u0 ]! A0 n- |; {  ~ String(void);         // 析构函数& A" q+ |; `0 b
  String & operate =(const String &other); // 赋值函数5 M- a' v8 X! f) B& j9 R& I
   private:) [( |) A6 t5 D/ E: k: K4 V$ @
  char   *m_data;    // 用于保存字符串) g3 F+ v. L: C# h3 |
};
* m$ Q5 I) p' |4 P1 [5 b 请编写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的发言:& d$ W6 N5 h" Z$ {* U8 u ) P( }8 g9 R! T* u3 [9 j+ k4 i

软考的?

( [, Y! {! d8 V/ c0 o

其实都是很基本的题目阿

6 G8 J& y" z% y3 d2 x8 O& h7 W9 g9 b3 { " d) Y4 s4 `( D* {9 x; f m$ 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的发言: ) i& |; u' i5 U( x) Z2 j9 Y, O8 f6 G" j O3 r) J2 s% L. Z

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

    6 Q# z& d+ j5 k% L) ^( ~" ?

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

    $ Q5 I' x8 Q2 g; V 7 K7 B( y/ P: S; L& m5 q$ d5 ?, k5 H6 n3 E8 u yes you are all right ) r: I7 `4 f0 T' z 楼主这些题目实在太基础了,如果这些不会,需要去看基础的知识,推荐 C++ primer

    该用户从未签到

    6
    发表于 2005-6-3 19:14:00 | 只看该作者
    三、简答题(25分)' O6 f, N) |1 u/ B2 S. |2 A 1、头文件中的 ifndef/define/endif 干什么用? % D8 z! l/ e8 D& C, Z# @! `起码加上前缀(#)吧,其中 #ifnedf 就是说如果没有定义什么则…… . V1 B8 a5 `# T, { P2 ?#define xxx yyy 就是把之后出现的yyy用xxx替换 e- M! f4 ^% r #endif 与#if系列配合使用, S7 R3 ]! O% ^9 B) p: G 2、#include 和 #include “filename.h” 有什么区别?. Z& A+ G5 W& P6 A! g 这个玩笑闹大了…… 估计前是用是指先在系统指定的包含目录中查找文件,""是在当前目录中,当然可以使用绝对路径 / N0 V0 V) a3 f: M# b0 m% I, D. V 3、const 有什么用途?(请至少说明两种) 1 {& m' w+ D7 \/ T: a4 ~限制变量不被修改,保证函数不修改变量 7 n+ R O. u; P* l$ [4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明? + g1 S6 F7 t |指编译的时候使用C风格的函数名 $ U0 p; D3 I+ ?+ H g& Y8 i2 ?7 b% A- H$ { 四、有关内存的思考题(20分): n/ V+ c8 _4 C( h7 W void GetMemory(char *p)$ D9 g$ n9 T; m9 N { * n1 Z, I0 W' h( I" ap = (char *)malloc(100); 4 p. E$ I6 Q* r9 L}5 y2 ~( c# [4 b% J% K void Test(void) 0 e" K! Y4 _6 e- b% h0 R6 w {% d" I% Q1 B" r6 c0 Z5 R char *str = NULL;+ y9 }1 k" ?' W/ N/ t" Z9 t! K GetMemory(str); % s. F& T/ {' d9 i; V' p/ `; q strcpy(str, "hello world");; o" A$ p6 W! |/ F% Q- U" d2 `2 r6 K0 G printf(str); 1 F7 ]0 R8 |2 b4 d) w& z} * H& Q5 \ @# S. E' s1 @/ Q, S请问运行Test函数会有什么样的结果?/ j' t u8 f# P9 V" w# j2 P 答:错误,str没有正确指向申请的内存地址% I- y# t: p( u) i* J2 D5 g0 V: Y% Y Void GetMemory2(char **p, int num)+ V+ W j' k. K/ f+ s { 5 f& s3 e' f8 K2 c8 r( l/ [$ ^*p = (char *)malloc(num);- k2 b5 B- @6 u/ Q, j$ p3 U }, U" |1 x7 [% u s2 W void Test(void) ! u" B. e. f* K3 l, b- Z% s{, E; ~; V9 ?9 q/ m( K9 r/ y( E char *str = NULL; 6 e) P0 `( B; EGetMemory(&str, 100);# E8 n$ L) @$ Q% ^: h strcpy(str, "hello"); $ N5 d* x# c; p7 F3 o: {printf(str); , R! X/ ]$ w9 Z% w0 P/ C} , ]: B, y& i( z2 d$ A请问运行Test函数会有什么样的结果?3 z" ?0 Y" [( W, p: y1 d 答:正确执行,打印出“Hello” _8 _4 k- f0 x) ~/ q# S+ l char *GetMemory(void)# ~# ]& |, o8 ?4 Y { - N3 G9 V; O( b. g+ N! D! } char p[] = "hello world";4 I# D6 p- M$ b% M return p; " o0 B' s' `- N! b}% U* [1 o* u) [1 q) g void Test(void) # l: F& Y& N- _' w{ / A) Z& v: Q: }/ p5 wchar *str = NULL;4 j) U/ Q" C2 l6 `! { str = GetMemory(); 8 m% |$ K- i2 q, h& x& mprintf(str); 1 E# ]2 ^6 l/ z$ \}. V7 h, w" g$ n; m; y/ O 请问运行Test函数会有什么样的结果? ! ]5 z* g3 C; P答:错误,str指向的内存地址已经被系统释放% x x7 e: W, w7 E' ^, U# T void Test(void)2 u! k* ^" X* ]; L1 G0 s- I {9 c. o: J# i& t1 v! j char *str = (char *) malloc(100); 6 n3 D' m6 c3 w- `3 Y" T) Cstrcpy(str, “hello”); 5 Q" X/ \6 a9 k2 e: V free(str); % V( ^* }9 l# ~+ Z& `' E$ }if(str != NULL) 5 n3 l% M7 D5 @- _% S! e$ E% s+ _{4 c' n- J) z( g( {, ` U$ b strcpy(str, “world”); - ~/ L$ a8 b! D* K printf(str);2 ]4 O, z3 G7 M8 k5 d; S' o% _ } ?5 J$ K1 q7 E8 P1 X; b, ` }( f2 x U C+ g7 m 请问运行Test函数会有什么样的结果? ' Z' K+ E' N5 ~( S答:错误,free函数不负责将str置0,故strcpy无法正确工作7 K3 ~, Q9 }7 A. M: } " ~! a( Q, A2 J' g' L五、编写strcpy函数(10分)) h! b# U- q! g 已知strcpy函数的原型是 1 Q, X: T, ~0 M) A+ [( Z, U! Achar *strcpy(char *strDest, const char *strSrc);: l- _$ L4 E W& a* }6 _/ y 其中strDest是目的字符串,strSrc是源字符串。+ Y" Z( n2 S/ q" w% H7 p (1)不调用C++/C的字符串库函数,请编写函数 strcpy + x( [( b1 H, _ Y; ~char *strcpy(char *strDest, const char *strSrc)8 K$ |* d" \% W { 0 s K* f' c3 W H4 Z c, H if(strDest == NULL || strSrc == NULL) return 0;( b S+ T7 J( W* H+ T- ?- @ for(int i =0;(strDest[ I] = strSrc[I ]) != 0;i++); 9 }/ R! u2 @% s! V$ L" [ return strDest; * `+ H/ t4 f" J5 B7 w} $ @* v7 R* H+ l$ i4 Q* H4 M. \2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?+ d& N2 r- r1 u6 S9 \' v+ [ 这个倒真不知道,大概是利于编程+ U1 L; J. e) X. h+ ]5 F 六、编写类String的构造函数、析构函数和赋值函数(25分) - x4 V" c% c! h% [+ Q已知类String的原型为: ' e$ K7 Q* L5 q# a1 m% Hclass String 0 @) R+ s- M) h1 T{ $ C6 `4 G# C2 a public: % o( o6 D0 H7 J; x4 H- f String(const char *str = NULL) // 普通构造函数! M9 A( G3 X9 f# ~/ v7 ^* d1 | { 2 b+ o/ l8 [# S if(str==NULL){ ( K3 ~6 i2 M; w5 R& L- C8 n( b, s m_data = new char[1]; 1 M4 [) R6 q* Q: U' t( c& d m_data[0] = 0; 4 n B3 }! y/ ~- F4 R1 L" H: N }" }. u: a7 A4 J" `9 ~1 k else. ]& ^+ A9 c I$ q0 ?- e {$ n4 o) {1 M8 n( [ m_data = new char[strlen(str) + 1]; : Q7 I. B- n( u* C1 H strcpy(m_data,str); 2 ^5 t$ W, c: p: m }; z% R; u2 h& `" S( X# t } * A! c9 Z4 s# h( a; x0 t) f, W String(const String &other) // 拷贝构造函数 : F7 G! `7 R- ]- a; G4 k4 f* x{ M) [+ E O' N- H4 w! f8 G2 V3 I5 _ *this = other; 9 M# F Q; o+ F+ \, t}6 K* p X& v; b: g, T( N& n6 j ~ String(void) // 析构函数$ X: V9 ^7 A# D! u5 Z3 @ { # a7 y9 T- Y3 o, _" G _ delete [] m_data; 0 q( K/ D {. B) U% w% B! {}* j8 F! r. o. L; [ String & operate =(const String &other) // 赋值函数6 V) a( i3 \! _$ c) a: n1 @' T {, B; ~* A# z8 Z5 q4 F6 U m_data = new char[strlen(other.m_data) + 1]; $ _7 X* ?( Q0 W, g( J strcpy(m_data,str);% L4 V* B1 F7 h; ]7 | return *this; 1 V' ?' b2 v$ F. g/ b5 ~} # b7 b+ ?$ t4 |3 R* D private: + o4 B# d B( Y' f5 _+ u$ r; [# o char *m_data; // 用于保存字符串4 N/ p$ ?5 z) o; |! U% m' n j: ~% @, a }; " a4 T4 W' o5 b" _: j6 a# {请编写String的上述4个函数。 / m v8 R! A7 \ ]
    [此贴子已经被作者于2005-6-3 19:23:13编辑过]
    . ^; A) u( H! q5 t
  • TA的每日心情
    奋斗
    2015-9-17 00:58
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?. i+ R' P c) @0 [ 这个倒真不知道,大概是利于编程

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

    该用户从未签到

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

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

    该用户从未签到

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

    本版积分规则

    关闭

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

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