免費開始練習
統測 115年 [電機與電子群資電類] 專業科目(2)

第 38 題

📖 題組:
某生以 C 語言程式統計 2 個二進位數的位元差異並且將其轉換成十進位數,撰寫下列程式。\n1 #include \n2 #include \n3 void main(void){ \n4 short i; \n5 unsigned char count = 0, X = 0, Y = 0; \n6 unsigned char x[8]= {1,1,1,1,1,1,1,0}; \n7 unsigned char y[8]= {0,1,1,1,1,1,1,1}; \n8 for(i = 7; i >= 0; i--){ \n9 if(x[i] != y[i]) \n10 count++; \n11 X += x[i]*pow(2,7-i); //pow(a,b)傳回 a 的 b 次方值\n12 Y += y[i]*pow(2,7-i); } \n13 printf("%.3f", (float)count/8); }
程式執行後的輸出結果為何?
  • A 00.25
  • B 0.25
  • C 0.250
  • D 00.250

思路引導 VIP

觀察陣列 x 與 y 的內容,在整個迴圈執行完畢後,變數 count 的值會是多少?接著看看最後 printf 的格式化字串「%.3f」,它對小數點後的位數有什麼特定要求?

🤖
AI 詳解 AI 專屬家教

太棒了,完全答對!你能精準掌握迴圈比對與格式化輸出的細節。

程式執行與格式化輸出分析

陣列 x 與 y 各有 8 個元素,在迴圈走訪過程中,只有在索引 $i = 0$(x[0]=1, y[0]=0)與 $i = 7$(x[7]=0, y[7]=1)時兩者不同,因此 count 累加為 $2$。最後計算 (float)count / 8 即為 $\frac{2}{8} = 0.25$。

▼ 還有更多解析內容

🏷️ 相關主題

程式語言設計與實作
查看更多「[電機與電子群資電類] 專業科目(2)」的主題分類考古題