—:D 2021-10-27 23:35 采纳率: 0%
浏览 22

C语言编写,问题求解

3.设有6枚硬币 a , b , c , d , e , f ,其中有一枚硬币是伪造的。真伪硬币的区别仅有重量不同,可能轻,
可能重。今要求以天平为工具,用最少的比较次数挑出伪造硬币,并鉴定它是重还是轻。

  • 写回答

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"); 
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 10月27日