3.设有6枚硬币 a , b , c , d , e , f ,其中有一枚硬币是伪造的。真伪硬币的区别仅有重量不同,可能轻,
可能重。今要求以天平为工具,用最少的比较次数挑出伪造硬币,并鉴定它是重还是轻。
C语言编写,问题求解
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- CSDN专家-sinJack 2021-10-28 00:27关注
#include <stdio.h> #include <iostream> #include <time.h> using namespace std; #define N 6 #define T 1 #define F1 0 #define F2 2 /* 当两枚硬币重量相同时,都不可能是假的 */ void main() { srand((unsigned)time(NULL)); int coin[N]; int numOfFalse = rand() % N; int kindOfFalse = ((rand() % 2) ? F1 : F2); for (int i = 0; i < N; i++) { if (i == numOfFalse) { coin[i] = kindOfFalse; continue; } coin[i] = T; } for (int i = 0; i < N; i+=2) { if (coin[i] == coin[i+1]) { continue; } else if (coin[i] = T) { printf("This is false : %d", i + 2); } else { printf("This is false : %d", i + 1); } } printf("\n"); printf("Coin's weight is : "); for (size_t i = 0; i < N; i++) { printf("%d", coin[i]); } printf("\n"); system("pause"); }解决 无用评论 打赏 举报