阿摩線上測驗 登入

申論題資訊

試卷:103年 - 103年關務人員、103年身心障礙人員及103年國軍上校以上軍官轉任考身障特考四等_資訊處理#31152
科目:程式設計
年份:103年
排序:0

申論題內容

一、請問下列 C 語言程式片段執行後,變數 answer 的結果為何?(20 分) char s1[] = "Hello!"; char s2[] = "Nice to meet you!"; char s3[50]; int answer; strcpy(s3, s1); strcat(s3, s1); strcat(s3, s2); answer = strlen(s3);

詳解 (共 3 筆)

詳解 提供者:牛奶鍋

Strcpy(s1, s2)  等於 s1=s2  將s2複製給s1

strcat(s1, s2)  將s2連結到s1後面


詳解 提供者:hchungw
這段 C 語言程式碼執行後的步驟如下:
char s1[] = "Hello!"; 創建一個名為 s1 的字串,包含字串 "Hello!" 和自動添加的結尾字符 '\0'。
char s2[] = "Nice to meet you!"; 創建一個名為 s2 的字串,包含字串 "Nice to meet you!" 和自動添加的結尾字符 '\0'。
char s3[50]; 宣告一個名為 s3 的字符陣列,長度為 50。
strcpy(s3, s1); 將 s1 的內容("Hello!")複製到 s3。
strcat(s3, s1); 將 s1 的內容("Hello!")追加到 s3 的現有內容後面,即 "Hello!" + "Hello!"。
strcat(s3, s2); 將 s2 的內容("Nice to meet you!")追加到 s3 的現有內容後面,即 "Hello!Hello!" + "Nice to meet you!"。
answer = strlen(s3); 計算 s3 的長度,不包括結尾的 '\0'。
我們可以計算出 s3 最終包含的字串長度來找出 answer 的值。
執行上述 C 語言程式片段後,變數 answer 的結果為 29。
詳解 提供者:extragoak

(1) 描述 secret 函式功能

secret 函式的功能是遞迴地將一個整數 n 除以 3,並在每一步打印出 n、n/3 和 n%3 的值。具體來說:

  • if(n>0) 是一個遞迴終止條件,當 n 小於或等於 0 時,函式會停止遞迴。
  • 在遞迴的每一步中,secret(n/3) 會先被呼叫,然後打印出當前的 n、n/3 和 n%3。這樣,函式會按從最深的遞迴層開始,向外層逐步回溯,打印出每層的數值。

(2) secret(30) 的輸出結果

我們來逐步解析 secret(30) 的輸出結果:

  • secret(30) 呼叫 secret(10)。
  • secret(10) 呼叫 secret(3)。
  • secret(3) 呼叫 secret(1)。
  • secret(1) 呼叫 secret(0),這時 n 等於 0,所以函式返回,不進行任何打印。
  • 當 secret(1) 返回後,會打印 1:0...1。
  • 當 secret(3) 返回後,會打印 3:1...0。
  • 當 secret(10) 返回後,會打印 10:3...1。
  • 最後 secret(30) 返回後,會打印 30:10...0。

所以,secret(30) 的輸出結果為:1:0...1 3:1...0 10:3...1 30:10...0。