c语言(小鼠试毒 二进制练习)

阅读: 评论:0

c语言(小鼠试毒 二进制练习)

c语言(小鼠试毒 二进制练习)

小鼠试毒:

        一千个瓶子里有一瓶毒药,十只小鼠(小鼠个数至少满足瓶子总数二进制位数时)

        将每个瓶子的序号转换成二进制,二进制位数依次与小鼠序号相对应,当二进制某一位为1时,喂给位数对应序号的小鼠,最后将死去小鼠的序号位数与二进制对应,死去为1活着为0,得一二进制数,转换为十进制即为有毒瓶子序号。

具体代码:

//小鼠试读,10只小鼠,一瓶毒药,小鼠一旦中毒即死,如何判断出1000瓶中哪一瓶有毒 
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
//#define M 99long decToBin(int M) 
{long c=0;int i;for(i=0;M!=0;i++){int a=0;a= pow(10,i) ;	c=a*(M%2)+c; 	M=M/2; }return c;	
}
void feedmouse(char *mouse[10],int M)
{int i=0;long a,c;for(i=0;i<=1000;i++){a=decToBin(i) ;c=decToBin(M) ;int b;if(a==c) {for(b=0;b<=9;b++){if(a%10==1){mouse[b]="death";//字符串赋值时,自己输入"",scanf输入时可不用添加;//输出“%c”单个输出,“%s”连续输出; }a=a/10;}	}}
} 
int find(char *mouse[10])
{int i;int a;for(i=0;i<10;i++){if(mouse[i]=="death"){printf("第%d只小鼠中毒n",i+1);//测试得中毒小鼠序号与毒药序号的二进制位数一致 a=a+pow(2,i);		} }printf("第%d瓶是毒药n",a);	}
int main()
{char *mouse[10];long s; int M;//M=rand();随机数固定为41 srand(time(0)) ;//取随机数 M=rand()%1001;//随机数范围(0-1000)/*范围方法 M=rand()%(a+1);       (0~a) M=a+rand()%(b-a+1);   (a~b)
*/s=decToBin(M);printf("%ldn",s);feedmouse(mouse,M);find(mouse);return 0;
}

 细节:

#include<stdlib.h>
#include<time.h>int M;//M=rand();随机数固定为41 srand(time(0)) ;//取随机数 M=rand()%1001;//随机数范围(0-1000)/*范围方法 M=rand()%(a+1);       (0~a) M=a+rand()%(b-a+1);   (a~b)
*/

此部分算法为计算机自取随机数,随机数函数及范围
      

定义字符串:    

char *mouse[10];

字符串赋值:

 mouse[b]="death";
                    //字符串赋值时,自己输入"",scanf输入时可不用添加;
                    //输出“%c”单个输出,“%s”连续输出,无"";

输出:

printf("第%d只小鼠中毒n",i+1);

幂指数函数:

#include<math.h>

int a=0;

a= pow(10,i) ;

本文发布于:2024-02-02 00:54:13,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170681157640342.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:小鼠   语言
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23