Вы находитесь на странице: 1из 4

金門技術學院 97 上 四技四 嵌入式軟體開發工具 系統程式 期中考 出題者 : 陳鍾誠

學號 : 姓名 : 分數 :
填充題
問題 1 (10%) 問題 2 (10%)
int main() { int main() {
int a = 5, b = 3; int a = 5, b = 3, c;
a = a + b; c = (a > b) ? a : b;
printf("a=%d\n", a); printf("a=%d\n", a);
a = a % 5; printf("c=%d\n", c);
printf("a=%d\n", a); if (a > b) {
a = a << 2; c = a+b;
printf("a=%d\n", a); a++;
b = b & 0x05; } else {
printf("b=%d\n", b); c = a-b;
b = b | 0x08; b++;
printf("b=%d\n", b); }
} printf("a=%d\n", a);
輸出結果 printf("b=%d\n", b);
a= printf("c=%d\n", c);
a= system("pause");
a= }
b= 輸出結果
b= a=
c=
a=
b=
c=

1
學號 : 姓名 : 分數 :
C 語言的函數設計
主程式 1 :

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int x[] = {3, 7, 4, 2, 6, 5, 8 };
int y[7];
int oddLen;
print_array(x, 7);
odd(x, 7, y, &oddLen);
print_array(y, oddLen);
sort(x, 7);
print_array(x, 7);
int idx3 = binary_search(x, 0, 6, 3);
printf("idx3 = %d\n", idx3);
return 0;
}

問題 3. 請寫出一個函數可以計算 1 + 2 + … + n
(15%)。

以下各題請參考主程式 1 進行撰寫。

問題 4. 請寫出一個 C 語言函數 void


print_array(int a[], int n),可以將 a 陣列印出
來(參考主程式 1)。 (15%)

問題 5. 請寫出一個 C 語言函數 void odd(int


a[], int n, int b[], int *m),可以將 a 陣列中的
奇數放入 b 陣列後傳回,其中 m 用來傳回 b 陣
列的大小 (也就是 a 中的奇數個數) (參考主程式
1)。(15%)

問題 6. 請寫出一個 C 語言程式 int *sort(int


a[], int size),可以利用泡沫排序法將該陣列由小
到大排序後,成為一個新陣列傳回(參考主程式
1)。(15%)

2
學號 : 姓名 : 分數 :
動態字串設計
以下是一個動態字串的測試程式 問題 7. 請寫出 StrNew 函數 (15%)
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int size;
char *str;
} Str;

Str* StrNew(char *cstr);


void StrAppend(Str *str, char *tail);

int main(int argc, char *argv[]) {


Str *str = StrNew("123");
printf("%s : address %d\n", str->str, str->str);
StrAppend(str, "45");
printf("%s : address %d\n", str->str, str->str);
StrAppend(str, "6");
printf("%s : address %d\n", str->str, str->str); 問題 8. 請寫出 StrAppend 函數 (15%)
StrAppend(str, "89");
printf("%s : address %d\n", str->str, str->str);
return 0;
}
以下是其執行結果:
123 : address 4012384
12345 : address 4016504
123456 : address 4016504
12345689 : address 4016520
動態字串的意思是,不論你加入多少個字串,只要記
憶體還足夠,就可以順利的將元素加入,作法是使用
malloc 函數,以動態的分配記憶體空間,當空間不足時,
就將空間加大,以下是動態陣列的定義檔。

提供下列標準 C 函數介面以供您使用:
1. strlen(str) : 傳回 str 的字串長度
2. strcpy(toStr, fromStr) : 將 fromStr 複製給 toStr
3. int sprintf( char *buffer, const char *format, ... );
像 printf 一樣,但會印在第一個參數的 buffer 字串
中。
3
4

Вам также может понравиться