下沙论坛

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

QQ登录

QQ登录

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

笔试题好多不会做~郁闷

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-6-2 16:46:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案
! {( z, A3 U! x7 m8 P. c8 \0 M一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分). j& m- l" p: V8 @) y5 O  y
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:- e2 `$ Q  c9 k4 ~9 H
    if ( n == 0 )
. e( _; }% i4 B" F$ |    if ( n != 0 )
" G# B5 N1 }  U: i以此类推。
% F1 J( |" ~6 R/ p: ^请写出 BOOL  flag 与“零值”比较的 if 语句:; B2 _4 ^6 o8 @# T3 p4 }

) a6 A* n- Y4 U9 |请写出 float  x 与“零值”比较的 if 语句:
- H+ Z: {3 H  x' h1 y
* t2 |; ]8 T' q( r, l9 F" B5 ^请写出 char  *p 与“零值”比较的 if 语句:+ p. R/ i5 S/ B2 H

% Z* B* i5 M% Z2 O, e二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)6 A! g8 x/ H7 Z8 [% W1 ^3 b' f' g* C
char  str[] = “Hello” ;
" {1 B" Y3 `5 I4 Lchar   *p = str ;
) j$ c0 I& P2 e6 m+ oint     n = 10;9 [) O% j# k5 L- T
请计算
/ E2 ^0 ~" j6 _9 i  ?sizeof (str ) =                 ! Y' f. \( V* Y) w6 w* R
sizeof ( p ) =                 0 [: o6 w. O9 {9 ]4 u' @/ o% u
sizeof ( n ) =9 B' q7 V) }, h  f$ j  l
void Func ( char str[100])7 [% c* H& e% F
{7 }) ~, L9 y; {8 q9 M' V4 S$ ^& O" L
请计算 + m2 y6 ~0 |) r$ I% g  e
sizeof( str ) =   
% d# D+ ^0 s" U. E7 I$ y}6 D% _6 {0 r/ l/ k3 C
void *p = malloc( 100 );" g% V& k  f3 k+ b7 F2 r
请计算
! l# u& R2 G, h# O2 W( }( isizeof ( p ) =& |0 [. s  k5 }) m
三、简答题(25分)" n+ h0 Q" P2 M" g0 G
1、头文件中的 ifndef/define/endif 干什么用?
, {! n/ m' z8 Z) @2、#include     和  #include  “filename.h” 有什么区别?/ u/ F9 r) P4 Q3 B
3、const 有什么用途?(请至少说明两种)3 \9 w4 e; j1 ^/ A# y
4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?# T$ U3 a: H1 z- m& N
四、有关内存的思考题(20分)+ P7 E! h- @4 }+ F$ d4 ~+ ]
void GetMemory(char *p); [/ e8 J/ \- e" U; k( n
{7 p' A/ A/ |% q$ m5 T6 s0 k
p = (char *)malloc(100);% Y' S; k5 O. {' z2 O/ y( @, y; K1 T! d
}$ D: l4 x% S3 l) G& h2 T
void Test(void)
: j7 n! K1 Y. g) Y; J{
' o; y2 [2 u1 p) ^- o6 echar *str = NULL;
& N2 \5 X8 Y; }6 L% |" c. z. ~GetMemory(str);
4 Q! o" a" w: {+ f# s  estrcpy(str, "hello world");
: M8 i) G7 K) f( i0 uprintf(str);6 _" A# I& D% f/ i# _) |9 o8 R; c
}* k& P/ r  w5 U+ {+ X/ m; F
请问运行Test函数会有什么样的结果?  ]+ z, y& Y, w6 @5 L' O, p' u) Y8 ^
答:& `2 p7 g0 Q- M: G8 {
8 K7 M, L* S8 R
Void GetMemory2(char **p, int num)6 j+ S3 m* j* }9 a' I: ^) k2 n5 w, S
{5 ]$ L$ J* p6 m* i3 |, |
*p = (char *)malloc(num);
8 T, Z+ T5 X# z1 G}; d( w- T" x/ i1 y
void Test(void)
+ _) w* x( c: z( y9 w; K9 f: k! M% f{/ N! ]$ B- Z& v5 f" y
char *str = NULL;
% U8 B2 y& r" ?3 R" r" Y9 A! S# ^GetMemory(&str, 100);+ m; ^" F4 L9 I9 _" H
strcpy(str, "hello"); ) H! v, o9 M. ^. H8 n/ Z
printf(str);
. T' Q' z9 a' v; B' Q+ j}% L% X4 z2 l' r/ d9 J+ s( G
请问运行Test函数会有什么样的结果?3 n1 c( n$ Q0 S0 ~& q* z
答:; d% U2 t" D$ l7 Y' J; V0 [
char *GetMemory(void)9 M; u" M1 c: X0 t6 p
{
( q& Y$ O5 w: `- s+ Q$ S7 E. pchar p[] = "hello world";% E7 S: N0 q# a* v: Y
return p;, t9 q, Y% ^% x
}! a" Q* ?" G( ]$ q+ o4 F6 L
void Test(void)
) m! U. r% b# p) z3 r8 r% e! ?{4 x) e- @* n  }6 k
char *str = NULL;
' K5 _6 k" D; K/ H5 T/ ?, S' Rstr = GetMemory();9 w  v- ?2 J/ Q7 y' A
printf(str);
; u0 l  K( c* m}+ h, H" G' s4 F; J1 ~9 |
请问运行Test函数会有什么样的结果?# K6 X5 q' C0 g) }
答:
# _6 ^+ ?# ]' z8 @
5 z8 {! l  K; `' u! dvoid Test(void)
0 E9 I* I  \3 R. E' @- p{
1 W2 }7 b! \# r% u5 m" h- Bchar *str = (char *) malloc(100);
7 P/ u& ~5 _6 f3 Dstrcpy(str, “hello”);
. v- g  k( s% S2 L3 sfree(str);     
7 g3 C1 j5 y1 Zif(str != NULL)
+ k8 L5 R, E& p! O* A6 k9 S: O{) \! j9 P" O1 V3 d# J0 s- L
strcpy(str, “world”);
8 x9 Q  s: T# G! f. Qprintf(str);
$ n& w: ?2 ?+ w}
- Z/ p" T; H7 X, t6 y# p}
6 v" O8 }# m+ u请问运行Test函数会有什么样的结果?
! y: U0 m5 p9 N0 X5 @+ j答:6 l; G8 o! \' O- _. X' P

% x3 F# ?& r: P0 s3 Q" _3 x( O五、编写strcpy函数(10分)$ A4 F2 V: @2 u, f
已知strcpy函数的原型是
: `8 U& I, y( g* o. v char *strcpy(char *strDest, const char *strSrc);
! y8 @# {( t. g! g7 g8 g 其中strDest是目的字符串,strSrc是源字符串。
0 `- Y5 U' X5 g2 p, r(1)不调用C++/C的字符串库函数,请编写函数 strcpy
1 }. ~9 p( Y6 j) w# s( `7 f7 @& j) U
2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?8 z; f0 I5 X$ h: U
, N+ D* V" j9 \% {3 `5 w
六、编写类String的构造函数、析构函数和赋值函数(25分)0 K# @, S4 a$ E( N
已知类String的原型为:
/ |5 w) i7 e3 I" b# E. l2 L" k class String0 Y0 V4 N& `8 V
{2 V/ H) w+ p, j# ?) U
   public:+ a9 U$ f6 y8 @: {2 [& P( A
  String(const char *str = NULL); // 普通构造函数& O: s5 j3 m6 }  n: |" e3 m" \+ r9 n
  String(const String &other);     // 拷贝构造函数
+ E! Q) M" [) I; N9 l) I5 n* r- `  ~ String(void);         // 析构函数
  w: Q1 p9 X" C: e$ k) C1 Q! v/ W( j8 }  String & operate =(const String &other); // 赋值函数. B" t  Q, u: k( e( b1 \  u
   private:
7 Q* Q6 c% W1 ?  char   *m_data;    // 用于保存字符串
! Y/ j1 {- w$ X8 g };. g1 M, X% V- A0 N8 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的发言: & }, O( ^8 X" I0 r! a ; k. ]# [! T G

软考的?

$ v" e* j4 [6 Q( f* ?0 j

其实都是很基本的题目阿

" q: z- {) w6 ?. U& a& X4 C& S2 T% ~6 J! \& X6 F8 G# T' j3 v 9 u: D! }6 E) m0 t: Z) TC有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的发言: 5 Y% E' F0 h: K2 M* h$ y, H6 Q7 e; ~8 t s

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

    * Y3 J2 L, E. E2 D( `

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

    / {, G4 B+ P+ l5 o # }( w/ x6 ?8 k8 ?! s9 l' }9 g ' g, ?& F* u$ Ayes you are all right 8 x6 O& u, z! V; ^& u# S 楼主这些题目实在太基础了,如果这些不会,需要去看基础的知识,推荐 C++ primer

    该用户从未签到

    6
    发表于 2005-6-3 19:14:00 | 只看该作者
    三、简答题(25分): [# ?% t+ F# Y8 S! m 1、头文件中的 ifndef/define/endif 干什么用? $ v) R+ X4 B8 @" }/ F0 D起码加上前缀(#)吧,其中 #ifnedf 就是说如果没有定义什么则…… 3 y4 g! P' |: u S. m1 R# W) u#define xxx yyy 就是把之后出现的yyy用xxx替换/ o3 O m7 F$ z' ^) V& S7 F, @* X% ?* K #endif 与#if系列配合使用: y. K! G+ t5 J% G1 l3 [ 2、#include 和 #include “filename.h” 有什么区别? 7 e; Z1 I5 g; ?; N( Q1 G/ R这个玩笑闹大了…… 估计前是用是指先在系统指定的包含目录中查找文件,""是在当前目录中,当然可以使用绝对路径 ! j7 s) ?' X/ K7 l# G/ l 3、const 有什么用途?(请至少说明两种) W' V0 ~* l- h1 L( M6 Q- g 限制变量不被修改,保证函数不修改变量9 Z7 b# n# k* O# x+ g+ c7 \1 [% y 4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?( S" n& V1 ~* n. h! H) ^ 指编译的时候使用C风格的函数名4 U( L7 R1 Q) H - V# Y }6 _0 N2 @9 T0 n5 q6 G% U 四、有关内存的思考题(20分) 4 H3 F3 h, Q% ~0 c& I6 ?void GetMemory(char *p)* X& F5 w9 W- f7 T9 }9 a { ) T& T1 c& N- B5 l8 Jp = (char *)malloc(100); ' n& ?4 h* k( p' a. T}8 N- h2 h! m7 `% b# Z void Test(void) & `6 ~6 ]0 r+ m) k- w. @{ % L; u; T8 q4 }( g0 _, q1 G& Zchar *str = NULL; % i+ M, Q9 d8 O W1 yGetMemory(str); 3 i4 d% f- V5 U3 L5 D0 H strcpy(str, "hello world"); 9 w0 `$ `8 o$ J4 mprintf(str); l; ^" g2 F+ A% C U$ ]0 ^% y* ]; R+ \}( s8 v( a$ C! g6 R* i 请问运行Test函数会有什么样的结果? - o4 V7 t/ [4 g# V* }9 I& A( N5 |答:错误,str没有正确指向申请的内存地址 6 Y' ^+ c" c$ r1 SVoid GetMemory2(char **p, int num) * y* L d' D0 | Y+ u+ P& d{: Z9 \" }% ^3 P' L *p = (char *)malloc(num);( q# q7 ?% c* P; x3 h5 B* l; [ }: Z z2 N* c, [' K, t( M void Test(void) " P: L1 ?9 E1 h6 R; V! N{2 U' P& J( ~& t char *str = NULL;0 W4 \! J9 u2 T& H6 s5 n2 t( K GetMemory(&str, 100);! n) y0 `: W( n7 A9 b strcpy(str, "hello"); , i0 E3 N4 {) `% s1 x7 O/ A7 ~5 A! Kprintf(str); 8 ^0 I A& x% e% z}; L% h2 H2 N* C1 J, q3 w. t. R7 ?. f- | 请问运行Test函数会有什么样的结果?! W. j2 f( z4 G$ k& b( e" c! x 答:正确执行,打印出“Hello” 5 p# N V" Y% `* A) Qchar *GetMemory(void)! X& \7 F3 {" B! J' T% d. {$ i5 ? { ; ^4 K m" g6 T# I6 T8 r' P6 j, Z char p[] = "hello world";9 _; l; _( b3 x; P return p; [9 t, S* |# R }# W+ x; D1 a4 ]; S- \9 Z" _9 Y/ { void Test(void)& p5 S9 e$ l. [9 d, ~ { $ t# w' C9 L, j" X, Q& ochar *str = NULL;! \& A |! `6 G8 I str = GetMemory();# u& B3 p$ { t' \ printf(str);$ J; E, W; U3 }& L- F: }6 V# [ }/ H; C8 X8 r5 ` A. N- S9 F0 T 请问运行Test函数会有什么样的结果?# z3 M8 R+ l' {" | 答:错误,str指向的内存地址已经被系统释放5 u+ Z. R: B+ b4 M7 p" m void Test(void) ' ~. M. R! l0 |+ z6 ?- @{9 {, E5 E+ B4 {( O$ ? char *str = (char *) malloc(100); 5 Z+ l9 O" z1 W. P9 r# \; ~9 ostrcpy(str, “hello”); , X F) E1 \% t. k2 E; @) R g free(str); 5 r' e2 K0 c& K V9 hif(str != NULL) . B& X" s% p) @- s& }% m% B3 x- l {! R' X) z6 a1 u strcpy(str, “world”); # V# z& m: e0 M) I# }printf(str); 3 K6 b/ C1 \; Q+ Q, E" y' P8 I}; z/ I& @4 B- ? } 0 V, A. s0 T' N; J6 C请问运行Test函数会有什么样的结果? , G5 E- A, \; Y5 k- h# f% T, e答:错误,free函数不负责将str置0,故strcpy无法正确工作 - I' ~: b5 i5 h! a% ` 5 _2 _' s& e5 s五、编写strcpy函数(10分) 1 Z6 m% C) ^$ F已知strcpy函数的原型是: a5 |% e0 y& t7 I char *strcpy(char *strDest, const char *strSrc);, ^2 R- H/ ]2 h( `& G- R 其中strDest是目的字符串,strSrc是源字符串。/ x: \6 x' S7 e9 A+ t( C) T (1)不调用C++/C的字符串库函数,请编写函数 strcpy ( Y4 {/ l1 f6 }5 Schar *strcpy(char *strDest, const char *strSrc) . q- D; m7 ~3 C{5 c/ ]# f. c- K. t6 @7 v } if(strDest == NULL || strSrc == NULL) return 0;3 p: W$ k7 F$ L, h0 g5 ?; j for(int i =0;(strDest[ I] = strSrc[I ]) != 0;i++); 6 d( K3 n# C* q4 o' Y) j2 a return strDest;9 E& H$ w" I8 c" L* {5 \! n. l } ' \* i4 @8 s: g5 i9 M0 I2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?3 s4 d5 X5 ^. t6 ` 这个倒真不知道,大概是利于编程- c' p2 {0 W# C6 a 六、编写类String的构造函数、析构函数和赋值函数(25分) $ r6 X' ~+ U+ R$ U! c; [已知类String的原型为: $ V0 \1 @' M8 H1 y Wclass String: F" E+ P2 o' f4 R. m { 9 C0 z8 ^; k8 f! D) T& g) v public: 2 o. x5 z' b, O7 z& P1 G String(const char *str = NULL) // 普通构造函数 . i) B& {: g8 G" P2 @, ?2 m{: S9 A& @4 \1 c9 U1 s6 a( h if(str==NULL){ , i, ?6 t; \. g. e9 U0 |% B m_data = new char[1];8 B- D+ R% f- s! b& q4 B m_data[0] = 0; - b% K3 _! [6 {' O0 P! L/ D& B } [/ Z9 m3 L3 Z1 q else 9 q( z4 v6 t3 y+ A' b7 X$ ~* ~ {( I; Z* X# ?: m. v m_data = new char[strlen(str) + 1]; * B. A/ }6 N, O* S! D7 S strcpy(m_data,str); " ]7 p7 ^" k: C, O$ N2 S' G8 ~ }, r# N6 f, B9 M1 V* W0 @& [ } " }* f: u& v9 C: A% c String(const String &other) // 拷贝构造函数 3 l" p; G/ ]0 x5 }{# h7 [# n6 O, N8 P$ r8 v. d *this = other; ; Q1 Q9 X- e ~1 @}: Q+ Z$ g$ e3 V/ d! g ~ String(void) // 析构函数 , H3 d5 D; q4 O5 D{ 2 ]+ _0 K/ p2 B) E5 y+ { delete [] m_data;+ D7 b* {2 g5 r u* G% X1 w } 4 _4 k U+ f0 Y: H+ h# ]! T String & operate =(const String &other) // 赋值函数 ( M# T1 ~5 o. f5 e0 c Z4 J{2 H; s$ U) C# k8 ] m_data = new char[strlen(other.m_data) + 1];- n; U- Z, U. o. h' L; e strcpy(m_data,str); 1 L* y% O+ [4 ]" Z0 L return *this;$ j' j4 z6 A% `' ?3 X8 ? s } 3 J- c8 }# \# e8 s+ @* r private: , ~/ ?) o! g0 g* @# u char *m_data; // 用于保存字符串 5 X! u3 w H" z# r& I$ _}; 1 k) T0 ]2 g _请编写String的上述4个函数。 * z2 l) I6 k0 c, [
    [此贴子已经被作者于2005-6-3 19:23:13编辑过]
    4 l1 s# C/ b: g
  • TA的每日心情
    奋斗
    2015-9-17 00:58
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?4 P: C. F# w1 f 这个倒真不知道,大概是利于编程

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

    该用户从未签到

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

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

    该用户从未签到

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

    本版积分规则

    关闭

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

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