觀察以下C 語言之程式,試問輸出為何?(20 分)
int main(){
int a = 1, b = 2, c = 3, d = 4;
printf( "%d\n%d\n%d\n%d\n", a+b+c+d, (b *= a),
(a += d), (d++));
}
試就Object Oriented language 與Functional language,回答下列問題:
比較兩種語言之不同與優缺點。(5 分)
續題,請對下列五種語言做歸類:C、Java、C++、Lisp、Prolog,並以下表作答
於試卷上(如果不屬於這兩類語言,請在None 打勾)。(10 分)
語言
Object Oriented language
Functional language
None
C
Java
C++
Lisp
Prolog
回答下列問題:(每小題8 分,共40 分)
請問下列C 程式片段的輸出為何?
int number = 60;
printf("%d\n", number << 1);
printf("%d\n ", number << 2);
printf("%d\n ", number << 3);
請問下列C 程式片段的輸出為何?
int x = 6688;
int *y = &x;
printf("%d\n", x);
x = 1357;
*y=6688;
printf("%d\n", x);
請問執行下列Java 程式片段後,someFunc(5)的值為何?
public static int someFunc(int n) {
return (n < 2) ? n : n * someFunc(n-1);}
請問下列Java 程式片段的輸出為何?
int x = 2; int y = 3; int z = 0;
if (x > 2) {
if (y > 2) {
z = x + y;
System.out.println("z is " + z); }
else
System.out.println("x is " + x); }
System.out.println("y is " + y);
請問下列Java 程式片段的輸出為何?
int x = 1;
int y = 5;
int z = x-- + (++y);
System.out.println("x = " + x + " y = " + y + " z = " +z);
假設類別A、B、C、D 的繼承關係如下:
class A; class B; class C: B; class D: C { A object;} main() {D objectD; },程式執行後,
請寫出解構函式的呼叫順序。(5 分)
九、考慮下列文法:S -> SS |(S)|()(每小題4 分,共12 分)
請指出此文法的terminal symbol、non-terminal symbol 及start symbol。
針對()()()字串,推導出left-most derivation sequence。
針對((( )))()字串,推導出right-most derivation sequence。