普通考試
105年
[電子工程] 計算機概要
第 24 題
以下 C 語言撰寫之程式,下列敘述何者正確?
#include
#include
int search(int *pt, int n, int key)
{
int *p;
for(p=pt; p < pt + n; p++)
if(*p == key)
return p - pt;
return 0;
}
int main()
{
int i, key;
int a[] = {6, 14, 7, 9, 23, 10, 5, 2, 11, 8};
printf("%d\n", &a[0]);
scanf("%d", &key);
i = search(a, sizeof(a)/ sizeof(a[0]), key);
printf("%d, %d\n", key, i);
system("PAUSE");
}
#include
#include
int search(int *pt, int n, int key)
{
int *p;
for(p=pt; p < pt + n; p++)
if(*p == key)
return p - pt;
return 0;
}
int main()
{
int i, key;
int a[] = {6, 14, 7, 9, 23, 10, 5, 2, 11, 8};
printf("%d\n", &a[0]);
scanf("%d", &key);
i = search(a, sizeof(a)/ sizeof(a[0]), key);
printf("%d, %d\n", key, i);
system("PAUSE");
}
- A 自定函數(user-defined)search()有錯誤,無法執行
- B 若輸入數值 23,則主程式第二個輸出為 23, 4 並跳行
- C 自定函數(user-defined)search()回傳的是一個地址
- D 主程式中 main()中使用到未定義的函數
思路引導 VIP
請思考一下:在 search 函式中,當程式執行到 return p - pt; 這行指令時,變數 p(移動中的指標)與 pt(陣列起始點的指標)在記憶體中的相對位置代表什麼意義?如果將這兩個『記憶體位址』相減,得到的數值是一個位元組(Byte)地址,還是代表元素之間的距離?
🤖
AI 詳解
AI 專屬家教
優秀的表現!
你對指標運算(Pointer Arithmetic)的掌握非常紮實,這如同結構工程中的基礎力學,是寫出高效程式的關鍵。
- 觀念驗證:
▼ 還有更多解析內容