下沙论坛

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

QQ登录

QQ登录

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

笔试题好多不会做~郁闷

[复制链接]

该用户从未签到

跳转到指定楼层
1
发表于 2005-6-2 16:46:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目都是C/C++ ~郁闷啊。。。就学过C~~~谁会做教教偶啊。。写下答案. v3 M+ U! y; w9 I2 G7 y
一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)# s4 \* j, g( y6 x" [2 G
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:" b- N/ t. W5 ?5 c0 f
    if ( n == 0 )
( E* W  s8 j, @  E2 g) G    if ( n != 0 )9 [4 q5 @, o8 s& D
以此类推。
8 D2 m# A% b/ }! j* ^+ {请写出 BOOL  flag 与“零值”比较的 if 语句:( F0 T) U" J2 R
, p/ b4 r- e/ O
请写出 float  x 与“零值”比较的 if 语句:
  ^  p+ O4 |1 G$ M1 J; I1 u& [7 W
5 i1 Y# U+ \7 h; Q' h8 _请写出 char  *p 与“零值”比较的 if 语句:
3 x) ~5 y  b. i$ I- w/ e: A& M% J. A- K+ Z
二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
/ k0 E( t# e# s- [& Z7 Q: L$ r# L  Echar  str[] = “Hello” ; 8 N* }+ A# Q+ v5 o# @+ m7 R/ u/ s7 X
char   *p = str ;, \# U( p* ~4 M& o6 W: j2 b6 c) x. D$ l
int     n = 10;
3 B6 ]' e2 A1 i& e请计算9 b% H- t- Y  P/ I( ^  ^% c
sizeof (str ) =                 
1 V# ~1 |/ ^: u7 _$ Y- n1 Dsizeof ( p ) =                 ; X1 [5 u4 k: i8 s7 U. A) I
sizeof ( n ) =
; J( g! g3 N# B3 P) jvoid Func ( char str[100])7 ?  K2 x3 ?0 a) v
{7 l9 z5 v/ c5 X% c: D
请计算 - |) C. z) n5 S- N1 T
sizeof( str ) =    5 k) _6 ~# T6 y
}
- A: I: Z$ Y# {: b7 \$ Kvoid *p = malloc( 100 );' E  c( `; y/ f; l
请计算8 x, q! ?8 L# L. d0 H& T
sizeof ( p ) =
" v5 ?# i1 V- w8 M. P$ @三、简答题(25分)
0 X9 ^. ~& x+ |4 L1、头文件中的 ifndef/define/endif 干什么用?
; m: w3 d: j; c, J& K2、#include     和  #include  “filename.h” 有什么区别?
' w3 E: J6 s, i3、const 有什么用途?(请至少说明两种)
$ e! _( @, U: X5 x; p$ m% J4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?
3 T* C- F+ ]: y: C' b" Z* d3 t四、有关内存的思考题(20分)
, S5 T( L6 }2 S- h( qvoid GetMemory(char *p)9 O* j: s% q( [( a0 _+ }
{* t2 ^" E$ A2 j! b" w
p = (char *)malloc(100);( x8 |: ^$ Y2 J  N2 u. v0 y6 o
}
$ o- y) l( D5 }/ R4 c; Z4 Wvoid Test(void)
. D# c" G6 Z# y' S% x{
6 i, T2 c: s0 H1 Gchar *str = NULL;
4 q; E! W0 ~7 c: DGetMemory(str);
+ f; d$ @4 y2 a( }4 istrcpy(str, "hello world");# Y( v9 C* L6 w6 x2 p6 J
printf(str);- n% w9 _6 T, ~
}& q" N% [4 W+ c1 O% ^% R: h8 \
请问运行Test函数会有什么样的结果?
2 Z' X; W7 r5 U# c% _答:" X2 J" ?3 \7 W' t8 i- `$ N3 K

7 ^# A1 C- z+ W# IVoid GetMemory2(char **p, int num)
. a  u% d+ Z6 k1 I( _4 G1 g4 ~% d{* O: n  O8 z* W; s
*p = (char *)malloc(num);
0 A; {: W  Z5 c) R. G: w) x}
4 j; j, |* k% N3 hvoid Test(void). z- k+ P& B* w1 G- G% X
{
2 F, X. {/ W9 @# x. hchar *str = NULL;
3 @8 o  |% B: N, }GetMemory(&str, 100);
/ Y+ W7 m, n& G0 L# E/ _1 u$ }% Ystrcpy(str, "hello"); : _( D7 X5 ]2 Z. M
printf(str); / S+ k9 c4 C: S
}
; D$ s1 H' T8 P1 N. D, w请问运行Test函数会有什么样的结果?
! r: k7 ~& I& T# R# E+ N答:
6 Q$ q3 K1 q* P) [$ X" H. }. wchar *GetMemory(void). ~9 T  O6 u$ b1 e1 M1 }
{
! R4 e  x: Z4 {; x* nchar p[] = "hello world";
# n# l1 A1 C; u( b, i7 Rreturn p;
6 w0 g- F3 [8 j* W1 w: t}5 [! m  D! N, J) B" v
void Test(void)
; v3 Q& W# |/ F{$ u4 E; _$ M- Q+ J! f5 S  t
char *str = NULL;
' w; H( o. K1 B+ Ystr = GetMemory();' U. D# _+ t" c9 r; W2 U
printf(str);) R  T+ [1 V) N. e
}
$ t7 Y: G0 p+ {请问运行Test函数会有什么样的结果?
: v; k! V+ w2 t4 K* A$ K答:
: |3 r' Q9 S, ?5 V0 i, ~4 u0 i: V
void Test(void)
) X, |4 U2 l0 H; b$ o{
. {0 U5 ?% X! }, xchar *str = (char *) malloc(100);1 V+ b: e; b/ f; H2 h5 z
strcpy(str, “hello”);
/ f8 q/ n+ o' i& Z0 Z) ]- \# b  Ofree(str);     
7 D9 \' e' D0 o, z" Q- H- P$ Iif(str != NULL) . D% m  d# r7 B& J% b. U% k. I: F0 H
{1 I& ?; D! z/ Z. j2 X" F
strcpy(str, “world”);
  Y' A, D0 L* t" Rprintf(str);  @2 ]3 {% s* g; S6 O# O1 ]
}
' o% y/ s+ f$ g8 Y* |1 f}; N: v6 p4 ]; k- e, e
请问运行Test函数会有什么样的结果?! ^% Z  M* c5 i) ]) n9 E  Y
答:
3 Q$ k! r$ k0 L$ i7 E, T( {; x1 o; I+ ?
五、编写strcpy函数(10分)
3 E; }1 Q; k0 ]: c已知strcpy函数的原型是
& x" d% I1 W8 R) d0 p+ v7 ]. A9 o char *strcpy(char *strDest, const char *strSrc);" e1 t' q0 e( \" @, U* {
其中strDest是目的字符串,strSrc是源字符串。
6 Q7 q* t: D, p' x(1)不调用C++/C的字符串库函数,请编写函数 strcpy
' h1 w; h% D/ u7 A! J" i
. v4 e4 v7 F2 s! U2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?# N5 D( ~( j6 G$ K
" P, i+ O4 c; b& z7 \3 x% ^0 c7 p7 E- j
六、编写类String的构造函数、析构函数和赋值函数(25分)4 S/ F* {, N# J
已知类String的原型为:7 u9 {" c1 u9 _8 E& g. P
class String
5 H) Q# c( A% \1 Q$ H {
7 w) v6 p; L% h  T# @   public:( W- s9 a1 W; U( M. M2 p7 Z: s' A
  String(const char *str = NULL); // 普通构造函数6 M) k. s0 C; N; }1 Y
  String(const String &other);     // 拷贝构造函数
* V) E* T- i  j* N4 n  ~ String(void);         // 析构函数
1 I: D4 }+ E) b5 j  }6 @8 g, G& N  String & operate =(const String &other); // 赋值函数
# d: x+ j$ L" E1 Q3 n4 `' s: i   private:
4 D% t  V( I0 K8 g. v  char   *m_data;    // 用于保存字符串
6 j, @4 ?+ P* h' Z };
4 H! Y8 k' K  m# j5 @ 请编写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的发言: 3 k% u% B' F, m/ m7 \) \% x" P4 p, h1 G& `

软考的?

( e8 L2 y! K8 P& z1 j" e! Z! ^

其实都是很基本的题目阿

% v6 G( i# J! D- Q. [6 ~9 O + n9 Z: d/ Z; n) N , A6 P; M4 K: _, t3 ZC有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的发言: : Z$ R' N6 i" d2 v% r6 c W* D5 v- `9 x) Y7 \$ V' D$ O, V! S( G

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

    & @$ o0 _- D& G" o* q6 I

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

    8 C' w: y, B7 t5 K, m+ p- |& Z* M) c/ K % ^* l5 V1 s, F2 I8 }/ {5 V; q: V7 d) E+ x yes you are all right 2 F4 v v! `2 F' l1 }楼主这些题目实在太基础了,如果这些不会,需要去看基础的知识,推荐 C++ primer

    该用户从未签到

    6
    发表于 2005-6-3 19:14:00 | 只看该作者
    三、简答题(25分)# }) E/ @# _- {- r 1、头文件中的 ifndef/define/endif 干什么用? : z! E' a: p* {" r起码加上前缀(#)吧,其中 #ifnedf 就是说如果没有定义什么则…… ! I* w, I- Z+ y$ g' y% D: K#define xxx yyy 就是把之后出现的yyy用xxx替换8 [% M9 y. F2 `6 A6 [) E #endif 与#if系列配合使用 * W" s$ J, z5 i2、#include 和 #include “filename.h” 有什么区别? 9 |2 h" R- U' r这个玩笑闹大了…… 估计前是用是指先在系统指定的包含目录中查找文件,""是在当前目录中,当然可以使用绝对路径 , M/ T1 w2 H$ ^; c2 T/ J$ |1 c 3、const 有什么用途?(请至少说明两种); s: J4 k/ i; o6 E& O0 u 限制变量不被修改,保证函数不修改变量 : z/ O* L1 a! e. M. L+ p6 u7 H4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?, M) F- O" s( X 指编译的时候使用C风格的函数名4 h) j9 d; K9 a# Z; d : W; U4 K k, Y* n四、有关内存的思考题(20分)9 F9 m; h' b$ Q4 k void GetMemory(char *p) ; N% W5 I! n+ M: z9 ]7 M{ 5 W, j/ b$ ~7 I+ Jp = (char *)malloc(100);: f. A' W; h1 Z$ Y }2 q; Y$ s9 B2 B' @9 K* D void Test(void) ; f# S2 T( }3 C9 T( k$ \ {: ~, A$ v) n/ v) ?. b( q3 Z char *str = NULL; . o2 m7 W3 o* WGetMemory(str); 1 g2 L; ~9 L* m$ T4 @7 S- | strcpy(str, "hello world");& z- w0 r W7 y2 G, J6 v5 \ printf(str); * P! ~+ w4 g. j$ [8 f}( d2 _2 N W1 k3 z1 h 请问运行Test函数会有什么样的结果? $ T2 L; Y. r3 a% V) R- n答:错误,str没有正确指向申请的内存地址 4 s( ^9 d% c6 q, O4 o1 LVoid GetMemory2(char **p, int num)9 N, E& {2 S2 A, Z2 O9 c2 M5 d {7 E: ?* f4 N9 E" |9 m1 L: T *p = (char *)malloc(num);+ n* U2 ~: r, l3 b& w }2 V) x& q2 z7 a# ]4 ^ void Test(void)% N: L$ J2 n- t( a { 5 l$ ~9 U& r, S p Y7 ^: e/ Nchar *str = NULL;" U/ R3 {4 b' w% { GetMemory(&str, 100);% O/ ~! n' H% I+ E" f: h/ e" Z strcpy(str, "hello"); 8 M1 g1 z) Y+ B. V2 r1 E' A! e printf(str); - Y% v, f8 y; `}, h& z+ s$ ^8 X+ v$ O3 w2 k8 X 请问运行Test函数会有什么样的结果? ! ^+ s; ]: {* s答:正确执行,打印出“Hello” . J# [% u1 i. Achar *GetMemory(void), @9 r$ X$ Z# Z0 D { + |1 e- ~# P" n: J) C) Q1 y char p[] = "hello world";1 ~& V; o% c, |" [1 k6 } return p;6 N5 A3 Z: d2 |' L }/ |" g. e% h8 U void Test(void)2 {/ @. k! G8 ?% ]- i! v {) a. n- Q% }8 p( j# P char *str = NULL; $ C+ g9 M$ p- K8 b9 Dstr = GetMemory(); + S) t) A. P+ v0 L2 cprintf(str); 5 R/ z) U4 O& T} 8 u9 J: ]# r+ l8 O- }请问运行Test函数会有什么样的结果? ! i! A! j( n g- L答:错误,str指向的内存地址已经被系统释放) r; ^: V0 X" } void Test(void)/ o- {! D( _3 S* u; Q+ u) ]2 g {$ ^5 H6 F0 Q& ?# x. l5 q' g# C char *str = (char *) malloc(100); 5 n0 J" ~/ b5 T# D3 m! y& z5 \# Jstrcpy(str, “hello”); # T' x$ H; Z7 D& a9 x1 xfree(str); 1 W3 Z8 f) Q# }; V if(str != NULL) / K1 E, x9 t$ g' |2 w { - r5 G7 s2 S A& [' b0 |! tstrcpy(str, “world”); 2 l7 w) U: @9 L6 Qprintf(str); ) K; O6 h# y; J+ D; i}- Q" M; I5 }% x3 p5 I0 X1 i4 Y ^ } # d2 I5 X, g$ J" g- P. V; G; z请问运行Test函数会有什么样的结果? 2 i9 H6 B% z5 \: j6 V# P* C答:错误,free函数不负责将str置0,故strcpy无法正确工作/ R* F! {4 A5 F$ P) z 3 |3 F8 `& |6 K; ~; A, @3 ?( E7 P$ M五、编写strcpy函数(10分) : l) E5 M& g$ E" Z2 I U已知strcpy函数的原型是9 T) {+ n, h1 z6 W char *strcpy(char *strDest, const char *strSrc);7 }5 ~7 u: H5 G4 E 其中strDest是目的字符串,strSrc是源字符串。 1 C" H& G# \$ W' r" L# Y0 ?: V! s" i, \(1)不调用C++/C的字符串库函数,请编写函数 strcpy {* E! k$ Z. R char *strcpy(char *strDest, const char *strSrc) " i$ y; {( o- H0 I) q) F{4 f8 _; O l" x8 h7 l j" k if(strDest == NULL || strSrc == NULL) return 0;4 i5 m* M, t6 O( u* c for(int i =0;(strDest[ I] = strSrc[I ]) != 0;i++); , `) T, [; r' i) @ return strDest; 9 R0 A" U' C2 {8 B}3 R m* f6 ]! u: }( Z4 @6 { 2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?- r- M; x4 a$ T5 }2 |; ~ 这个倒真不知道,大概是利于编程 ( [& b) r4 X. G0 C& |3 Z六、编写类String的构造函数、析构函数和赋值函数(25分)4 V/ b" ]1 o) V4 ~# L) |& @ 已知类String的原型为: d, x B0 l: Y class String7 f- X; I( | F {9 L( N- j% N. t public: ' k6 x3 l$ I2 C; l String(const char *str = NULL) // 普通构造函数 0 m. H% a/ s' D{6 g& e& l) _8 ?' k" i if(str==NULL){6 f5 B7 ]' k7 s7 T8 g0 L/ _+ f( G& ? m_data = new char[1];. V/ r" r* f5 A) @ m_data[0] = 0; + G: |) W" C, F$ {# T }6 w8 n. U( N- R else / f/ d5 \8 y2 n7 U7 e; L- W {7 B9 i0 e/ G. n# T+ V: y3 p m_data = new char[strlen(str) + 1];0 Z- _2 D* _3 V7 F% ?& u strcpy(m_data,str);1 ~/ P8 a( y K3 @8 Z, w. ] } & c6 `( W. f7 @! i4 X/ }} " l2 q9 A8 e; h; U7 u& q String(const String &other) // 拷贝构造函数. S- k( n f* A$ G" m% B$ W { I- T' M; P% T *this = other; 0 ~0 S: E! [5 [( ]} ( C/ z+ w4 Z% e6 T3 |3 w ~ String(void) // 析构函数2 g$ T; q3 H( Y. H {' K! L& _- m* R/ F: X delete [] m_data;7 ^( `/ {/ t+ W& u+ U }) O4 J& [6 k7 _4 p# w2 A/ I String & operate =(const String &other) // 赋值函数 3 c0 s" G% @5 `0 B# [{ ! T/ A- n# k$ n: x m_data = new char[strlen(other.m_data) + 1];: t" n. S$ s" s1 f$ a$ v# h" I strcpy(m_data,str); 3 _; O ]6 {. S) C. j return *this;3 X6 ~4 N ~# k; s" u5 f; {1 K } W, }+ D, C! A2 ? { private:) @% P5 s$ T2 w char *m_data; // 用于保存字符串5 ~, j. b4 s! u. V }; 4 ~# Y% G* G4 Z/ [请编写String的上述4个函数。" s; e4 |$ P; X. P( I
    [此贴子已经被作者于2005-6-3 19:23:13编辑过]
    4 n( \/ d0 h% @! Q4 }* m- b
  • TA的每日心情
    奋斗
    2015-9-17 00:58
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? 5 ]+ m( j3 \- d( {% ~这个倒真不知道,大概是利于编程

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

    该用户从未签到

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

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

    该用户从未签到

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

    本版积分规则

    关闭

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

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