統測
115年
[電機與電子群資電類] 專業科目(2)
第 38 題
📖 題組:
某生以 C 語言程式統計 2 個二進位數的位元差異並且將其轉換成十進位數,撰寫下列程式。
1 #include <stdio.h>
2 #include <math.h>
3 void main(void){
4 short i;
5 unsigned char count = 0, X = 0, Y = 0;
6 unsigned char x[8]= {1,1,1,1,1,1,1,0};
7 unsigned char y[8]= {0,1,1,1,1,1,1,1};
8 for(i = 7; i >= 0; i--){
9 if(x[i] != y[i])
10 count++;
11 X += x[i]*pow(2,7-i); //pow(a,b)傳回 a 的 b 次方值
12 Y += y[i]*pow(2,7-i); }
13 printf("%.3f", (float)count/8); }
某生以 C 語言程式統計 2 個二進位數的位元差異並且將其轉換成十進位數,撰寫下列程式。
1 #include <stdio.h>
2 #include <math.h>
3 void main(void){
4 short i;
5 unsigned char count = 0, X = 0, Y = 0;
6 unsigned char x[8]= {1,1,1,1,1,1,1,0};
7 unsigned char y[8]= {0,1,1,1,1,1,1,1};
8 for(i = 7; i >= 0; i--){
9 if(x[i] != y[i])
10 count++;
11 X += x[i]*pow(2,7-i); //pow(a,b)傳回 a 的 b 次方值
12 Y += y[i]*pow(2,7-i); }
13 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$。
▼ 還有更多解析內容