假設我們負責建立一個圖書館系統,用於監控和查詢圖書館的各種操作。現在我們被要求實作三個不同的指令,分別執行以下動作:
使用指令1,我們可以記錄在書架x上插入一本有y頁的書。
使用指令2,我們可以列印出書架x上第y本書的頁碼。
使用指令3,我們可以列印出書架x上的書的數量。
這些指令以2D陣列的形式給出,格式為{指令類型,x,y}。如果沒有y值,則預設值為0。我們列印給定命令的結果。
因此,如果輸入如下:書架數量=4,查詢數量=4,輸入陣列= {{1,3,23},{1,4,128},{2,3,0}, {3,4,0}};那麼輸出將是
23 1
Command 1 inserts a book with 23 pages on shelf 3. Command 2 inserts a book with 128 pages on shelf 4. Command 3 prints the page number of book 0 on shelf 3. Command 4 prints the number of books on shelf 3.
為了解決這個問題,我們將按照以下步驟進行:
#include <stdio.h> #include <stdlib.h> void solve(int s, int q, int q_array[][3]) { int* b; int** p; b = (int*)malloc(sizeof(int)*s); p = (int**)malloc(sizeof(int*)*s); for(int i = 0; i < s; i++) { b[i] = 0; p[i] = (int*)malloc(sizeof(int)); } int loopCount; for(loopCount = 0; loopCount < q; loopCount++) { int qtype; qtype = q_array[loopCount][0]; if (qtype == 1) { int x, y; x = q_array[loopCount][1]; y = q_array[loopCount][2]; b[x] += 1; p[x] = realloc(p[x], b[x]*sizeof(int)); p[x][b[x] - 1] = y; } else if (qtype == 2) { int x, y; x = q_array[loopCount][1]; y = q_array[loopCount][2]; printf("%d</p><p>", p[x][y]); } else { int x; x = q_array[loopCount][1]; printf("%d</p><p>", b[x]); } } if (b) free(b); for (int i = 0; i < s; i++) if (p[i]) free(p[i]); if (p) free(p); } int main() { int input_arr[][3] = {{1, 3, 23}, {1, 4, 128}, {2, 3, 0}, {3, 4, 0}}; solve(4, 4, input_arr); }
int input_arr[][3] = {{1, 3, 23}, {1, 4, 128}, {2, 3, 0}, {3, 4, 0}}; solve(4, 4, input_arr);
23 1
以上是C程式範例,示範可變長度陣列的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!