Posts

Featured Post

Programming Snippet Help

Image
Welcome to the Programming Snippet Site. There are many type of programming language's snippet. You can run/edit it online (only support html file). And download/view the snippet file. Run html snippet Click the run button on any post with a html tag. It will show a edit box and preview area. Edit the code then click the result button to see the change. Click the HTML ,JS, CSS button to edit this file. Click the Compress button to remove all new line characters of text in the edit box. Click the Copy button to copy all text in the edit box. Download the snippet Click the download button. Download a snippet file that name as the title text. View plain Click the view plain button. It will pop up a view plain window. You can copy all text to the clipboard by clicking the copy button.

implement a SwapAndAdd function exam questions

 以下的 C 程式碼需要實作一個 SwapAndAdd function。SwapAndAdd()要達成 的功能是交換兩個變數,然後建立一個新的整數變數,將兩個變數相加存在該變數 之後,回傳新的變數位址讓呼叫端來使用。以下的 main()顯示如何使用這個 SwapAndAdd() function。 int main() { int x, y, *result ; x = 100 ; y = 50 ; result= SwapAndAdd(......); // 請填寫參數 x,y 應如何傳遞來使用 SwapAndAdd printf(“%d %d %d”, x, y,(*result)); } 在這個 main()中,我們會將 x,y 變數作為參數傳到 SwapAndAdd()。如果 SwapAndAdd()實作正確,這個 main()會印出 50 100 150 請以 C 語言完成 SwapAndAdd()的程式碼,並且將 main()當中的呼叫參數填入。(25 分 我的回答 函式使用堆疊動態變數(stack dynamic variable),會自動分配或釋放其區域變數記憶體。所以不能使用堆疊動態變數來儲存運算結果,可以用靜態變數(static variable)或者外顯堆積動態變數(explicit heap dynamic variable)。 下列程式碼運行在 Online C Compiler - online editor (onlinegdb.com) (一)使用靜態變數 靜態變數的特性為程式預先指派變數記憶體,在程式結束後才釋放記憶體。優點是可以在函式之間保留狀態,缺點是可能占用記憶體。 #include <stdio.h> int* SwapAndAdd(int * x, int* y){     int t=0;     t=*x;     *x=*y;     *y=t;     static int r=0;     r=*x+*y;     return &r; } int main() { int x, y, *result ; x = 100 ; y = 50 ; result= SwapAndAdd(&x,&y); // 請填寫參數 x,y 應如何傳遞來使用 SwapAndAdd prin

object ouput exam questions

 物件輸出考題 下面 JAVA 程式當輸入 0 或 1 時,請問其輸出分別是什麼

objects comparation exam questions

 物件比較考題 下面 JAVA 程式輸出是什麼? 觀念 A.equal(B)  比較內容 判斷兩個具有不同參考的物件是否指向相同的值 A==B 比較物件是否相同

What is the relationship between the two categories of "IS-A" and "HAS-A".

 “is-a”、“has-a”兩種類別的關係是甚麼 JAVA 程式設計中,有“is-a”、“has-a”兩種類別的關係,請分別解釋之,並請分別寫 出其 JAVA 程式框架。(16 分 在Java编程中,有两种常见的类之间的关系,分别是"is-a"关系和"has-a"关系,它们用于描述不同类型的类之间的联系。 1. "is-a"关系(继承关系):    - "is-a"关系也称为继承关系,它表示一个类是另一个类的子类或派生类。    - 这种关系通常在类的层次结构中使用,其中一个类继承另一个类的属性和方法,以便重用和扩展功能。    - 在"is-a"关系中,子类继承了父类的特性,因此子类可以被视为是父类的特定类型。    - 例如,如果有一个类Animal,可以创建子类如Dog和Cat,这些子类都是Animal的子类,因为它们都是动物。    Java框架示例:    ```java    class Animal {        // 公共属性和方法    }    class Dog extends Animal {        // Dog类继承了Animal类,是Animal的子类    }    class Cat extends Animal {        // Cat类也继承了Animal类,是Animal的子类    }    ``` 2. "has-a"关系(组合关系):    - "has-a"关系表示一个类包含其他类的对象作为其属性。    - 这种关系通常用于描述类之间的组合或包含关系,其中一个类具有另一个类的实例作为其一部分。    - 在"has-a"关系中,一个类不是另一个类的子类,而是将其包含为组件的一部分。    - 例如,一个Car类可以包含Engine和Wheel类的对象作为其属性。    Java框架示例:    ```java    class Engine {        // 引擎类    }    class Wheel {        // 轮胎类    }    class Car {        private Engine engine; 

loop exam questions

 迴圈考題 int c=1;請問下列迴圈內 A 的指令會個別執行幾次

what's parse tree

Image
 剖析樹(parse tree) - 根據一語言的文法(BNF;Backus–Naur form)描述,將此語言某一語句(statement)之語法結構,以階層式樹狀結構來表示。 - y=f(x),x是某語言的語句(statement),Y是剖析樹,f(T)函數是BNF 文法 - 每一步推論最左(右)邊的非終端節點 left(right)-most derivation sequence 不明確文法(ambiguous grammar) - 語言某一語句(statement),依文法推導可得到兩顆或以上的剖析樹,稱該文法模糊 文法定義 一個文法G可以定義為G=(Vn,Vt,S,P) Vn 非終端節點的集合 (nonterminal symbol),如{<assign>,<expr>,<id>} Vt終端節點的集合 (terminal symbol),如{A,B,C} S 開始符號集合(starting symbol),如{<assign>} P 產生規則集合(production rule) 考題 一、根據下列文法,其中非終端(non-terminal)以< >符號標示: <S> → <A> <A> → <A> + <A> | <ID> <ID> → w | x | y | z 請畫出 x+y+x 所對應之剖析樹(parse tree)。(10 分) 請問此文法是否模糊(ambiguous)?請說明。(10 分 答案 (一) (二) 文法為模糊。因為某語言之語句x+y+x可轉換為兩或兩棵以上剖析樹。 (一)為第一棵剖析樹,下面為第二棵。 下面為chatgpt的回答 下面是字符串"x+y+x"所对应的解析树(parse tree): ```    <S>     |    <A>     |    <A>    /|\   x + <A>        |       <A>        |       <ID>        |        x ``` 在这个解析树中,<S>(开始符号)扩展为<A>,然后再

Various programming language definitions

 各種程式語言定義 程式語言 - Object-Oriented languages(物件導向語言):   + 定義:這些語言的主要特點是使用物件作為資料的基本單元,通過物件之間的相互關係實現複雜的程式邏輯。Object-Oriented languages將資料和相關操作封裝到物件中,並支援繼承和多型等物件導向特性。   +我的回答:以物件為基本單元,物件中包含屬性與方法,透過物件之間的互動完成複雜的操作。並支援封裝、繼承、多型等物件導向特性。有助於模組化與重用程式碼。  +現存語言:Java, C#(,c++) - Functional languages(函數式語言):   + 定義:這些語言的主要特點是強調使用純函數和不可變性。它們不依賴於狀態,函數是不可變的,並且通常不會改變傳遞給它們的參數的狀態。函數式語言通常具有高階函數和閉包,支援遞迴和高階函數。 主要特點是強調使用純函數和不可變性。純函數,即把所有資料變成參數或內部狀態(資料)的函式。不可變性,則是不會改到資料本身。通常支援高階函數。 純函數,把所有資料變成參數或內部狀態(資料)的函式。 不可變性,不會改到資料本身。 高階函式 Higher-order function定義:一個能夠接收函式作為參數(這個被接收的函式稱為回調函式)或者將函式作為返回值輸出的函式,滿足其中之一即可  +現存語言:Haskell, Scala - Logic languages(邏輯語言):   +定義:這些語言 基於邏輯推理和規則 。Prolog是一個常見的邏輯語言,它用於知識表示和符號推理。Logic languages通常 用於人工智慧和專家系統等領 域。  +現存語言:Prolog, Mercury - Script languages(腳本語言):   +定義:這些語言通常用於自動化任務和快速開發。它們 具有解釋性質,通常用於網頁開發、系統管理 、數據處理等應用。JavaScript、Python和Ruby都是常見的腳本語言。  +現存語言:Javascript, python - 最近語言的發展中,像 Functional languages 與 Script languages,都逐漸引進物件導向性質(OO),就這兩類語言,各舉一個近來發展出且具有 OO 性質的語言。 - JavaScript:Java