作者RJking (RJ-king)
看板TransCSI
标题Re: [问题] 程式相关选择题
时间Mon Apr 27 04:17:00 2009
※ 引述《ysbh (乌龟回娘家)》之铭言:
: 下面的题目已经有答案,只是不知道答案正确不正确
: 每一题皆有一些问题,请各位大大不吝指导
: 小弟的问题皆在 ☆请问: 之後
: (D)029.下列那一种程式语言不具有Operator overloading?(A)C (B)Ada (C)C (D)以上
: 皆有
: ☆请问:Operator Overloading是什麽?能举个例子吗?而哪一些程式语言支援?哪一些
: 程式言语不支援?
选项A跟C是一样的...囧rz
Ada不太清楚说...应该是可以的
运算子多载就是说一个运算子不限定只对应一种资料型态
例如说C/C++里
int a = 1;
char b = 'A';
此时 a+a 合法; b+b 也合法
但如果今天一个程式语言不接受运算子多载,又 '+' 只能用於整数运算
会变成 a+a 合法但 b+b 不合法
: (C)030.在Bottom-up的Compiler设计中以下何者为正确?(A)以产生的Finite state
: machine的状态数目而言,LR(1)>=LALR(1)>=SLR(1)=LR(0) (B)Yacc是使用LR(1)的处理方
: 法 (C)以对程式的处理能力是LR(1)>=LALR(1)>=SLR(1)>=LR(0) (D)建立LR(1)的Parser时
: 一定要先产生LALR(1)
: ☆题目完全看不懂XD,可否针对LR()、LALR()、SLR()稍作说明
看不懂+1...转学考应该不考Compiler吧...
: (A)031.在C语言中若是要於程式执行时决定Array的大小,要使用那种变数?
: (A)Heap-dynamic variable (B)Stack-dynamic variable (C)Static variable (D)以上
: 皆非
: ☆请问:这三种宣告的适用时机为何?
很简单是C
选项A跟B很难说明耶...简单说就是马上分配一块记忆体空间这样子
像是 cout<<"ABCDE"; 就是让系统马上分配一块记忆体空间存"ABCDE"字串并印出来
或是 char a[] = "ABCDE"; 让系统分一块记忆体空间存"ABCDE"字串由a指向该空间的第
一个位置
是Heap或Stack要看Compiler设计吧
静态变数是希望一个变数在记忆体的分配上不会因为离开了该变数的有效范围就重新分配
简单说一旦宣布了一个变数是静态变数,则该变数所分派到的记忆体位置从第一次宣告到
程式结束前都不会改变,也不会有记忆体使用相同位置。
其实如果要於程式执行时决定Array的大小,也就是宣告一个阵列为动态阵列的话
像是 int dyn_arr[var]; 的话要符合以下两个条件:
1. var要被宣告为整数常数或其他整数变数,像:
const int var;
static int var;
extern int var;
int var;
2. var 要在动态阵列宣告前就能确定数值
: (A)032.关於Pointer或Reference资料型态的使用,以下何者为正确?(A)C语言的Pointer
: 使用可能会产生Dangling pointer (B)C++语言的Pointer使用不会产生Dangling
: pointer (C)Java语言可能会产生Dangling pointer (D)Java语言的Pointer使用可能会产
: 生Lost heap-dynamic variable
: ☆请问:Dangling pointer和Lost heap-dynamic variable各是何义?
Dangling pointer:
http://en.wikipedia.org/wiki/Wild_pointer
Lost heap-dynamic variable不是一个字词...
答案A一定对,B一定错 JAVA我不熟所以C跟D不知道
: (B)033.关於程式语言中Short-Circuit Evaluation,以下何者为非?(A)通常只用在
: Relational expression而非Arithmetic expression (B)C语言若有进行Relational
: expression的运算,不一定会启用Short-Circuit Evaluation (C) C++语言若有进行
: Relational expression的运算,一定会启用Short-Circuit Evaluation (D)Ada程式语言
: 提供程式设计师来控制Short-Circuit Evaluation的启动
: ☆请问:Short-Circuit Evaluation是什麽?
http://0rz.tw/XmcjU
拜托你Google一下吧...维基百科也有英文版可以查
: (B)035.在Multithreaded process的操作系统中,以下哪一些项目是属於同一个Process
: 的Thread共享的?(a)Register values(b)Heap memory (c)Global variables (d)Stack
: memory
: (A)b (B)bc (C)abc (D)abcd
: ☆请问:这四种各用於何处?
转学考没听说考到OS的...
不过这或许是我等下的考试内容,我先笔记一下= =
: (D)036.以下叙述何者为错误?(A)l-value为一变数其储存位置的位址 (B)Dynamic type
: binding是在一个变数第一次被给予值时决定变数的型态(type) (C)Fortran程式语言对变
: 数的型态可以采用Implication variable declaration (D)Java程式语言对变数的型态可
: 以采用Implication variable declaration
: ☆请问:是否可以针对各选项做说明
由请PL(程式语言)强者,这边我上课没专心听...
我怀疑你是要考转大3或是研究所吧...
: (D)042.下列叙述中,请选出正确的。(A)Attribute grammar大量使用於现今程式语言编
: 译器设计 (B)Extended BNF(EBNF)的定义能力比Context free grammar(CFG)强 (C)使用
: Context free grammar(CFG)无法将一般算式中的Operator precedence及Associativity
: 定义出来 (D)C语言中若变数未宣告就使用,是一种Semantics error(语法错误)
: ☆请问:是否可以针对各选项做说明
你去找老师或翻书吧
前面扯到自动机&自然语言,最後一个选项却是PL...= =
: (A)043.副程式名当作副程式的参数,关於被传入的副程式执行时的参考环境(Reference
: environment),以下那一方法(A)Shallow binding (B)Deep binding (C)Ad hoc
: binding (D)以下皆非
: ☆请问:这三种方法各是什麽?适用时机为何?
看看系统程式或PL相关书籍,我相信书上有讲
许多学校都会用相同的书来上课,看那几本就对了
: (D)044.关於Generic Subprograms,以下何者为非?(A)Ada有提供 (B)C++有提供,称为
: template function (C)C++的template function的实体化是於第一次呼叫function时作
: 用 (D)C++若同一个template function实体化出两个不同的function,则目的程式码中只
: 产生一个function
: ☆请问:什麽是Generic Subprograms?
Google吧...
我认为你的问题很多都可以在书上或Google找到
另外转学考好像不会考那麽难...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.117.92.133
1F:推 zptdaniel:第一题应该是把其中一个C改成C++,答案应该是D没错. 04/27 09:19
2F:→ zptdaniel:因为C其实也有operator overloading. *就是一个例子 04/27 09:20
3F:→ zptdaniel:对指标加上*的话是取值,对两个数值使用*则是相乘 04/27 09:20
4F:→ RJking:我没说没有阿... 04/27 21:25
5F:→ zptdaniel:喔~没看清楚嘛^_^ 04/27 21:28
6F:→ ysbh:请问依你所说~VB是否也支援Operator overloading呢? 04/27 21:40
7F:→ ysbh:如 "A" & 3 或是 "3" + 5 04/27 21:41
8F:→ RJking:你说勒? 04/27 22:00
9F:→ RJking:阿补一下,Ada会检查型别....Operator有没有多载应该还是有 04/27 22:01
10F:推 MiniADrift:推RJking大的热心.... 05/15 08:19