1. 程式人生 > 其它 >晶片測試(C語言)

晶片測試(C語言)

題目描述

將2片晶片(A和B)置於測試臺上,互相進行測試,測試報告是“好”或“壞”,只取其一。假設好晶片的報告一定是正確的,壞晶片的報告是不確定的(可能會出錯)。輸入n片晶片,其中好晶片至少比壞晶片多1片。設計一種測試方法,通過測試從n片晶片中挑出1片好晶片。

輸入

第一行是一個整數n,表示晶片數。
第二行是n個整數,表示晶片“好”或“壞”的整數(任意整數,不一定是1或0)。

輸出

好晶片的編號(從1開始計)。

樣例輸入

7
1 1 1 1 0 0 0

樣例輸出

1

程式碼

#include <stdio.h>

void chiptest(int arr[], int n) {
	int
i, j, k; int a[10]; for (i = 0; i < n; i++) { a[i] = i + 1; } k = n; while (k > 3) { j = 0; for (i = 0; i < k / 2; i++) { if (arr[2 * i] == arr[2 * i + 1]) { arr[j] = arr[2 * i]; a[j] = a[2 * i]; j++; } } if (k % 2) { arr[j] = arr[k - 1]; a[j] = k; k = j +
1; } else { k = j; } } if (k == 3) { if (arr[0] != arr[1]) { a[0] = a[2]; } else if (arr[1] != arr[2]) { a[0] = a[0]; } else if (arr[0] != arr[2]) { a[0] = a[1]; } printf("%d", a[0]); } else if (k == 2 || k == 1) { printf("%d", a[0]); } } int main
() { int n, i, cp[40]; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d", &cp[i]); } chiptest(cp, n); return 0; }

測試 And 結果

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述