下沙论坛

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

QQ登录

QQ登录

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

笔试题好多不会做~郁闷

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-6-2 16:46:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案
$ Q7 ~+ s' p0 B: o一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)1 h6 e: Q. A# f& c
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
7 U" y9 a: C# Y7 U    if ( n == 0 )
' C8 \0 c4 a% |4 ^8 C1 {    if ( n != 0 )
% U8 r. }$ `. W: S* e8 f& T& z以此类推。  f5 L" \1 A7 L: H+ h
请写出 BOOL  flag 与“零值”比较的 if 语句:" l# z5 u# c( R1 |

8 L5 t1 Z9 b7 `9 o3 ^; m3 ^8 E' p请写出 float  x 与“零值”比较的 if 语句:
1 S  \6 _$ r& O' q4 g4 J2 b
5 R+ L' F5 h$ J+ w4 ^# e请写出 char  *p 与“零值”比较的 if 语句:
9 q/ `$ i" {$ r
% ~5 h) l8 ?- k二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)' j7 a4 @# F5 D
char  str[] = “Hello” ;
. g4 X2 F, K8 E% U- B( ?char   *p = str ;. Y$ Y/ w. F) Z7 k
int     n = 10;
7 c# m9 L3 G$ x1 S( v请计算6 g: H4 R! Y9 M; G
sizeof (str ) =                 : f7 A! M7 S; E( v5 _: a
sizeof ( p ) =                 % G0 R) G# @. G9 S/ a
sizeof ( n ) =" s. t- M% A  e$ s3 ^7 I, b
void Func ( char str[100])  ^$ D6 f8 z. ]2 W
{
% h" ~8 k1 c# i; ]请计算 , V7 M5 y  I& `6 |7 E5 A$ J9 K  j
sizeof( str ) =    % L  a+ Z$ s, p1 s" H
}" r- _2 n3 z1 R1 B: h( E5 [. U6 m
void *p = malloc( 100 );$ s0 X! D1 s( B) T5 t- |
请计算
& d6 P  S+ F5 c& y$ |) j+ G5 }' [9 Qsizeof ( p ) =9 Z1 E* _! _& \' q
三、简答题(25分)
8 z9 V% {4 b3 y1 x+ s" f8 ^1、头文件中的 ifndef/define/endif 干什么用?
$ Q) W0 n6 C; E) z% o2、#include     和  #include  “filename.h” 有什么区别?2 k6 s$ G9 E9 @% V
3、const 有什么用途?(请至少说明两种)
$ T- U0 m  o+ c4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?- ^( W  x) F# N
四、有关内存的思考题(20分)- Z  E+ w$ f: f( o0 g- C
void GetMemory(char *p)& H  L7 q; D" R
{/ b) [1 B. k# v' |: r3 J6 s
p = (char *)malloc(100);* G3 `- X. o% ?4 O# [
}, y, I* o# F# j; S: n. }
void Test(void) $ N5 A, _2 O- b7 t' L; o; C
{) {+ j$ w2 Y) G' o1 _) W
char *str = NULL;
# G4 q+ z4 I* v, ~9 J1 Q* s/ A( VGetMemory(str); / a6 a/ y: m/ \7 E( B
strcpy(str, "hello world");* a4 l7 D* x; ]* L$ Z( O  L
printf(str);, G  }5 r: i: V5 _' S
}
) f4 e+ D# z4 E/ x$ a! ^请问运行Test函数会有什么样的结果?# o; W% W* G3 ~- h, O/ o; Y4 y
答:5 Z; N+ s8 b; ]# h0 Z9 e" j

$ P) n, B. H0 G+ E1 e' A, a3 @Void GetMemory2(char **p, int num)
" T5 ~- O3 Y2 H+ j7 r{
) b9 `/ @8 E* B+ |4 ?*p = (char *)malloc(num);" e; K2 ?0 M& A( a
}
/ D6 C) v) g9 W/ Svoid Test(void)
0 ?2 H# Z# j( {1 y  U( v{
! [* }' m5 v$ r! Q) P" F1 Wchar *str = NULL;8 b# g# t: [3 s3 A1 m7 v" N6 c! M
GetMemory(&str, 100);
5 Q! Q$ Y6 U' o  J% X/ c: A2 Ustrcpy(str, "hello");
1 b- ?) I! O- s! Z' f+ fprintf(str); : Y: V; {3 c8 y  [3 [4 ]
}% v" K4 c6 K! r' t' k! f4 S) k
请问运行Test函数会有什么样的结果?
! s5 O7 k7 L& ?8 n答:: W3 e) w" B/ q  f, A
char *GetMemory(void)
7 w/ R/ B3 ]6 [4 K{
. h( U" a) Q1 ]0 \/ ]& c' Ichar p[] = "hello world";: |" `" P% K, V# h; x
return p;! |9 |4 `3 v# @8 P  t5 F
}
+ Q! B% b0 r. m9 K4 f9 C% b" Svoid Test(void)4 p1 q$ K6 _+ c" k+ J. y7 x
{
, W; N1 \9 i0 z& g1 hchar *str = NULL;. R  R6 A/ l$ N" Y" M0 t
str = GetMemory();% l* D" r( Y/ ]4 Q
printf(str);
: _6 ]9 A" G* `9 d0 B: F& F) _}0 n6 N* h  J: m4 ?
请问运行Test函数会有什么样的结果?
1 X& |2 F" Z! Y- l答:# D9 B) i# |# H9 _; W! `; q- }

2 {/ D2 F" v3 V" fvoid Test(void): K" O2 u$ W# z* @
{
& w4 c) ~0 R/ S* L0 O4 T/ N4 z4 G' Ochar *str = (char *) malloc(100);- q2 S( W+ A* {( \& Z8 e* Z
strcpy(str, “hello”); # U/ o* C6 M  F
free(str);     
4 @$ ]- |' _8 U( J- Cif(str != NULL)
+ M& w1 B* @* h0 U{/ G: U% S% w" R
strcpy(str, “world”);
& o2 p5 A9 Z) aprintf(str);! b; Q+ ^2 {, g0 j2 r
}
) c2 N! ^  J3 W7 p}
4 i) O2 ^0 J  t3 _请问运行Test函数会有什么样的结果?! ~0 e+ Z) N' T2 E" G; S* c
答:0 r1 s8 n. j) c

' N( u! |  U: M五、编写strcpy函数(10分)
; n+ D0 _9 L# z  F6 u已知strcpy函数的原型是
# @% F3 q: l$ e0 Y3 S( I  U: S" p. O char *strcpy(char *strDest, const char *strSrc);+ r, O( f( T) k
其中strDest是目的字符串,strSrc是源字符串。
4 [7 e1 p% a$ M$ L0 k0 c- K- Q5 M(1)不调用C++/C的字符串库函数,请编写函数 strcpy
5 @) |; Y! w" G, C# F) P" s. Q5 k9 F" Z% w: e: b
2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
3 a5 y9 \% K4 o1 O% P
5 q/ P& ^. }- l5 E2 V六、编写类String的构造函数、析构函数和赋值函数(25分)# T, o4 o. p3 O# R
已知类String的原型为:, I; O) Y7 I, y/ g: j" n
class String
1 r# u! W4 B3 p2 } {
! Y  I$ P$ c: F/ [   public:
* ], ?0 w; T  ~* t, l/ y  String(const char *str = NULL); // 普通构造函数
% \% ?0 r1 \1 A% R& C8 v3 y  String(const String &other);     // 拷贝构造函数5 h' I; b2 x) \' ^6 O5 L
  ~ String(void);         // 析构函数
7 G0 v0 c& b5 \' X0 `& q# G  String & operate =(const String &other); // 赋值函数, x- K8 v4 e. Y  f
   private:) v1 N. V! j: k& m
  char   *m_data;    // 用于保存字符串
: g1 _  {' k+ o- e* w& w };
0 m" G# d! n  S3 Q. l  D2 t$ u: J6 { 请编写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的发言: 1 j; G# k) z: x* {) \* i8 _$ }" y0 S8 I! H0 m. o

软考的?

* c- s6 S" R. w& f9 i. _

其实都是很基本的题目阿

% g! s( C8 J% D# J! S/ l ' q" O# Z5 R9 S7 h, H + I% R! G3 Q5 o 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的发言:3 _+ w& b p" [) |; v( U / o% H4 q9 D* c b

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

    2 Q* T8 V; D/ d2 W% y( B

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

    . X* Z2 @+ g; t3 P 5 P# X) j9 D8 V1 y" q) i* I) t' m0 O0 K9 K# a, _" ? yes you are all right 9 G% x& @: J' [9 s; d9 w楼主这些题目实在太基础了,如果这些不会,需要去看基础的知识,推荐 C++ primer

    该用户从未签到

    6
    发表于 2005-6-3 19:14:00 | 只看该作者
    三、简答题(25分)+ d* ]" H0 p( H% t) |1 [5 y" r5 I 1、头文件中的 ifndef/define/endif 干什么用?* d8 q% O3 k% V' L, p 起码加上前缀(#)吧,其中 #ifnedf 就是说如果没有定义什么则…… 2 _/ l* t1 ~, \" D#define xxx yyy 就是把之后出现的yyy用xxx替换 ) Z) u+ V( [( E1 K+ B/ P#endif 与#if系列配合使用' R+ {- s# @& ~. F 2、#include 和 #include “filename.h” 有什么区别? ; W# C) s' J1 g: h2 F这个玩笑闹大了…… 估计前是用是指先在系统指定的包含目录中查找文件,""是在当前目录中,当然可以使用绝对路径 ' G0 s v% o* t0 O3、const 有什么用途?(请至少说明两种) 4 ?7 r, ^; N* ?& C! R限制变量不被修改,保证函数不修改变量- X# D$ m: [ M7 a! g, r5 J/ `% E 4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明? . ]8 u/ H7 Y* h指编译的时候使用C风格的函数名 " [, e) c% U2 a9 T4 s( Y 9 y& b* \" a1 N7 F9 D四、有关内存的思考题(20分)- }) x9 i( R! Z7 ^ void GetMemory(char *p) ; H0 _' w x( R% {" e/ k{ 9 z) r# Y: y6 P4 C% j# W2 x. Ip = (char *)malloc(100); 1 U% \3 Y+ s9 \' D1 i, a) p} ! m; i: B3 s; V3 M7 w( N/ u. Tvoid Test(void) 0 l! A7 s0 C0 m0 }5 J{$ G2 Y$ D8 m) B5 J char *str = NULL;' U, Q; B0 ^$ M GetMemory(str); . \" q' l4 Q; H4 m1 A6 e strcpy(str, "hello world");) ^( g' q/ e, u( O4 H printf(str); 6 r3 ?7 [' K9 v1 f5 T! P* G} ' i; h" G2 ?( ^3 A: l: c! E2 D请问运行Test函数会有什么样的结果? , X& A4 ?: l* X& Y$ f3 D; V1 B答:错误,str没有正确指向申请的内存地址 9 T ^* `0 y. z# l9 f& {+ m" ]Void GetMemory2(char **p, int num) # g% o5 l) r! L! @& ^{ + S# P" N i4 E8 A/ X*p = (char *)malloc(num); $ d9 w9 D' V) n5 ] _} % k/ t5 z" `8 U1 B" z, z! vvoid Test(void) & ~3 M1 R7 Q& z% k, x2 k% V{ 4 }; ^5 ^% `1 O' Lchar *str = NULL; & Q' U ]3 f0 i1 t0 B9 P! EGetMemory(&str, 100); / i) s# {" A$ Gstrcpy(str, "hello"); # e1 z" B0 E! N0 e1 C# Y printf(str); . E; r0 R6 M7 K9 k s+ W} 5 R0 ?; B" m/ B) V请问运行Test函数会有什么样的结果?# v0 y4 N5 g9 D0 C/ C3 B2 ? 答:正确执行,打印出“Hello”# H; ?3 n# [+ n! W Q) {4 F' x char *GetMemory(void) ' Q. M H ^4 Y% P{ 6 h S5 K0 L5 d/ P- B* l: _1 S/ }char p[] = "hello world";0 n3 b" Q% q# q5 ^. {, ? _' | return p;$ U4 ^, ?# P ^& s3 n5 f! G } 4 q" h9 d2 i+ f4 A, o- @% Lvoid Test(void) / z) _& Q4 x8 P8 [/ E6 O{ 3 X% n: I3 e# U: Z8 q# f, ]char *str = NULL; 2 a$ G( d/ s, {+ ^4 W" C6 O5 q, kstr = GetMemory(); , a( ?2 B9 e: L' qprintf(str); ! v8 |0 }+ p% s2 U+ K}7 Z( P" A# X a& M0 k 请问运行Test函数会有什么样的结果?3 S" P3 m) Z4 @ 答:错误,str指向的内存地址已经被系统释放 * V U2 Z( L) u, e d! s0 P; uvoid Test(void) ) l! W5 i2 I* g: V3 x{" ]. e, Y8 C W char *str = (char *) malloc(100);3 c- O5 W& v. z( ]6 g0 h5 W strcpy(str, “hello”); 5 ], o, M; h) L7 P; x$ u8 gfree(str); 4 a% G! `% P. ^) A' Q/ H if(str != NULL) . l" C( i/ }% L. i# T { # s2 k' R8 d0 w) ~- Ustrcpy(str, “world”); * a7 u) U$ _- M9 I7 e2 R! T$ y5 oprintf(str);" |3 [4 n! R" S' o" ]# w% _- H }/ u* i% F7 }( O/ K9 r } H, [5 L7 `1 ^: F 请问运行Test函数会有什么样的结果? 6 i8 ^, D9 S; t6 a7 l3 m6 f答:错误,free函数不负责将str置0,故strcpy无法正确工作 ) i9 Y) D P- z6 H ? L/ {* Z; n5 u五、编写strcpy函数(10分) 8 y6 M; W1 x/ C% j4 Q, a6 c. M已知strcpy函数的原型是, W8 h$ Q: u1 Q- D3 i! D char *strcpy(char *strDest, const char *strSrc); & ~6 T2 ?/ k3 W6 V. ]其中strDest是目的字符串,strSrc是源字符串。 + f4 o2 i& q% b% i+ u" K(1)不调用C++/C的字符串库函数,请编写函数 strcpy : y3 W" @& v4 {! Xchar *strcpy(char *strDest, const char *strSrc)' L7 b5 q/ b; R G1 z8 m+ f/ B { . q( O- K+ @' `. Y# V. ^- Y" w( V if(strDest == NULL || strSrc == NULL) return 0;! F8 K# l% X$ ?8 \ for(int i =0;(strDest[ I] = strSrc[I ]) != 0;i++);# d" j& B. K. X$ v return strDest; . }6 n9 j2 H+ b1 U( z/ ~ N}# L m6 k7 r; Z1 y 2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?& @- d7 e. H, `3 u& P5 | 这个倒真不知道,大概是利于编程 4 U4 ^( Y. d3 k- B六、编写类String的构造函数、析构函数和赋值函数(25分) i9 \, Y( x' { 已知类String的原型为: % M4 d' A/ K; n% B: Bclass String7 N$ C J& ?9 D) v {$ t- I. \2 Q4 L) M5 a8 M; G public:- R* w v8 Z. t, e( l String(const char *str = NULL) // 普通构造函数+ F! I- M& c; V( z { % d! o: r8 y; P if(str==NULL){8 C' X `+ M4 k% a m_data = new char[1];3 s. d9 p/ F: a* W# g, i/ T m_data[0] = 0;" r4 g. @8 N" q5 f* X7 Q }& {5 [0 t# n% U6 m8 n) b else & F3 u9 l) L" f4 n3 G# M) @ {: b4 D4 C& Y4 ?$ K+ b m_data = new char[strlen(str) + 1]; 1 X# B/ C4 M7 W0 u3 ]4 a strcpy(m_data,str); ! Q% a4 ?; A. l* n3 W) P# X9 H } - c6 u. s' t8 r6 {8 M5 L) Z6 x6 ^" X} K. z4 B$ o5 n, A String(const String &other) // 拷贝构造函数0 ~6 e6 e! R4 b+ x N { - m) z0 W+ w! R6 R; C9 l *this = other; 6 _4 ?- Z" x8 e/ q}$ F) x" |* o( A' Q ~ String(void) // 析构函数& P% T4 w; {2 a { # t& b0 ]4 I9 i delete [] m_data; ) ~. x. W( m( I8 W9 p4 G+ ?}8 ?) t) }$ O1 V8 B; D' l String & operate =(const String &other) // 赋值函数 % j, X0 o2 H1 u. M# @, L: h{ ) P) n, b8 x! }4 m/ F9 o# g# |+ L m_data = new char[strlen(other.m_data) + 1]; 2 a$ K7 p" G5 c+ u9 O strcpy(m_data,str); 0 f+ k& w U: U( |/ Y2 ] return *this; & S/ V: ^ a% g}- ? {$ K$ ?9 m% B! O, b' u private: 4 \" F" X; x7 r1 F char *m_data; // 用于保存字符串5 w$ s# b2 B: n$ Y4 ?! r C }; / }; J2 ~1 T0 \& b( z0 R请编写String的上述4个函数。7 u3 @& L, ?" w9 K* t+ X
    [此贴子已经被作者于2005-6-3 19:23:13编辑过]
    # R" v7 [+ g/ k& |! ~, H& H
  • TA的每日心情
    奋斗
    2015-9-17 00:58
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? ' w3 C0 J# g% S& x/ u这个倒真不知道,大概是利于编程

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

    该用户从未签到

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

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

    该用户从未签到

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

    本版积分规则

    关闭

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

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