lawpalyer logo

資訊處理 110 年程式設計概要考古題

民國 110 年(2021)資訊處理「程式設計概要」考試題目,共 8 題 | 資料來源:考選部

0 題選擇題 + 8 題申論題

令一雜湊函式f(p) = p mod 13,且該函式以線性探測(Linear Probing)處 理碰撞,若依序輸入下列資料47、11、26、62、50、25、39、76,請問該 筆資料中最大搜尋次數為何?(25 分)
PHP 是網際網路應用系統常用之程式語言。 請寫出以下PHP 程式的執行結果,並說明得到此結果的原因。(10 分) <?php $a = array("a" => 1, "b" => 0); if($a["b"] == NULL) echo "null"; else echo "not null"; ?> 以下PHP 程式(檔名input.php)以瀏覽器初次執行會顯示右下畫面。 在「Your name」欄位輸入資料後按OK 鈕,會顯示輸入資料;若未輸 入資料按OK 鈕,則會再次顯示右下畫面。請完成程式(I)~(III) 指令,使程式正確執行上述功能。(15 分) <html> <head><title>Input Data</title></head> <?php if(is_null( (I) )||( (I) === "")){ ?> <form method=" (II) " action="input.php"> <p>Your name: <input type="text" name="name"></p> <input type="submit" value="OK"> </form> <?php } else { ?> <p>Thank you, <? (III) $_GET['name'] ?></p> <?php } ?> </html>
請問下列程式碼之輸出結果為何?(25 分) #include <stdio.h> #include <stdlib.h> int function(int num); int main(){ int var1=1; int sum=0; for(var1=1;var1<=9;var1++){ sum+=function(var1); if(var1==3) printf("output1:%d\n",function(var1)); } printf("output2:%d",sum); return 0; } int function(int input){ if(input==9) return 1; return 2*function(input+1); }
程式語言C 的程式碼是由許多函式(Function)組成。 #include <stdio.h> int memo[20][20], number=0; int B(int n, int k){ if((n >= 0)&&(k >= 0)&&(n >= k)) if((k == 0)||(k == n)){ memo[n][k] = 1; return 1; } else if(memo[n][k] > 0) return memo[n][k]; else{ memo[n][k] = B(n-1, k-1)+ B(n-1, k); number+=2; return memo[n][k]; } else return 0; } void f(int N, int M){ int sum=0; for(int i=1; i<=N; i++){ if(i>=10)break; if(i%3==0)continue; sum = sum + B(i, 2); } printf("%d %d ", sum, number); } int g(int N, int M){ if((N<=0)||(M<0))return 1; else return(M + N + g(M-2, N-3)); } int main(){ f(20, 10); printf("%d\n", g(20, 10)); return 0; } 請說明上述程式執行的結果。(15 分) 請說明上述程式中break 與continue 指令行的意義,並比較兩個指令 之功能差異。(5 分) 請說明C 程式使用遞迴(Recursion)與迴圈(Loop),在時間、空間 與程式可讀性之優缺點。(5 分)
請參考下列程式碼,若輸入字串helloworld,輸出之結果為何?(25 分) #include<stdio.h> #define MAX 100 char* My_Function(char str1[]){ static int i=0; static char Array1[MAX]; if(*str1){ My_Function(str1+1); Array1[i++] = *str1; } return Array1; } int main(){ char array2[MAX],*p1; printf("Input any string:"); scanf("%s",array2); p1 = My_Function(array2); printf("The output is:%s\n\n",p1); return 0; }
Java 是常用的物件導向程式語言。 請寫出以下三個Java 程式的執行結果。(15 分) ⑴ class square { int edge; square(int e){ edge = e; } } public class app { public static void main(String args[]) { square s1 = new square(10); square s2 = new square(10); if(s1 == s2) System.out.print("Equal square"); else System.out.print("Not equal square"); } } ⑵ public class app { public static void main(String args[]) { int a[] = {1,2,3,4,5}; show(a); } public static void show(int i){ System.out.println(i); } public static void show(int b[]){ for(int i = 0; i < b.length; i++) System.out.print(b[i] + " "); } } ⑶ class Circle { protected double radius; Circle(double r){ radius = r; } void show(){ System.out.print(radius); } } class Coin extends Circle { private int value; Coin(double r, int v){ super(r); value = v; } void show(){ System.out.print(radius+" "+value); } } public class app { public static void main(String args[]){ Circle coin = new Coin(3.0, 10); coin.show(); } } 下列Java 程式之需求為:設定變數color 的值並輸出。請指出其編譯錯 誤原因,並針對該錯誤原因說明程式如何修正使之能正確執行。(10 分) class Car { private String color; void showcolor() { System.out.println(color); } } public class app { public static void main(String args[]) { Car c1 = new Car(); c1.color = "blue"; c1.showcolor(); } }
(10)
(10) 10 分
請仔細觀察下列程式碼,請問function 之功能為何?(25 分) #include <stdio.h> #include <stdlib.h> void function(int* p, int input1, int input2){ int* p1; int* p2 = p; for(p1 = p + input1 - 1;p1 > p - 1;p1--){ *(p1 + input2) = *p1; } for(p1 = p + input1;p2 < p + input2;p1++){ *p2++ = *p1; } } int main(){ int array[5] = {103,45,99,38,76}; int* p1 = array; int var1 = 0; int var2 = 5; int var3 = 2; for(p1 = array;p1 < array + var2;){ printf("%d,",*p1++); } function(array,var2,var3); printf("\n"); for(p1 = array;p1 < array + var2;){ printf("%d,",*p1++); } return 0; }
程式語言C 可使用不同資料型別的變數存取資料與傳遞函式的參數。 #include <stdio.h> #include <stdlib.h> #include <string.h> void myFunction(int *a, int b, int *c, char *d){ c[1] = *a + b; d[*c] = d[2]; b = 17; int *r = c + 1; c = a; *c = *a + 1; printf("during:%s %d %d %d %d\n", &d[1], *a, b, *c, *r); } int main(){ char animal[7] = "cat"; int x = strlen(animal); int z[3] = {1, 3, 5}; int * y =(int *)malloc(sizeof(int)*3); int *p = &x; int *q = &z[1]; q[1] = *p + 10; printf("before:%s %d %d %d %d\n", animal, *z, z[1], z[2], x); myFunction(p, x, q, animal); printf("after:%s %d %d %d %d\n", animal, z[0], z[1], z[2], x); return 0; } 請說明上述程式執行的結果。(15 分) 請說明比較C 程式宣告一個陣列時,如上述程式變數y、z,使用一般 陣列變數與指標變數的異同。(5 分) 請說明比較C 程式語言中,函式參數傳遞方法,傳值呼叫(call by value) 與傳址呼叫(call by address)異同。(5 分)