八枚银币

来源:互联网 发布:手机图片排版软件 编辑:程序博客网 时间:2024/06/09 07:24

有八枚银币a b c d e f g h ,已知其中一枚是假币,其重量不同于真币,但不知是较重还是较轻,如何便宜用天平以最少的比较次数决定出那个是假币。并得知假币比真币较轻


#include<stdio.h>#include<stdlib.h>#include<time.h>void compare(int[],int ,int ,int);void eightcoins(int[]);int main(void){int coins[8]={0};int i;srand(time(NULL));for(i=0;i<8;i++)coins[i]=10;printf("输入假币重量");scanf("%d",&i);coins[rand()%8]=i;eightcoins(coins);printf("列出所有钱币重量");for(i=0;i<8;i++){printf("%d",coins[i]); printf("\n");}    printf("\n");return 0;}void compare(int coins[],int i,int j,int k){if(coins[i]>coins[k])printf("\n假币%d较重",i+1);elseprintf("\n假币%d较轻",j+1);}void eightcoins(int coins[]){if(coins[0]+coins[1]+coins[2]==coins[3]+coins[4]+coins[5]){if(coins[6]>coins[5])   compare(coins,5,7,0);else   compare(coins,6,7,0);}else if(coins[0]+coins[1]+coins[2]>coins[3]+coins[4]+coins[5]){if(coins[0]+coins[3]==coins[1]+coins[4])compare(coins,2,5,0);else if(coins[0]+coins[3]>coins[1]+coins[4])compare(coins,0,4,1);if(coins[0]+coins[3]<coins[1]+coins[4])compare(coins,1,3,0);}else if(coins[0]+coins[1]+coins[2]<coins[3]+coins[4]+coins[5]){if(coins[0]+coins[3]==coins[1]+coins[4])compare(coins,5,2,0);else if(coins[0]+coins[3]>coins[1]+coins[4])compare(coins,3,1,0);if(coins[0]+coins[3]<coins[1]+coins[4])compare(coins,4,0,1);}}


原创粉丝点击