这个bug出现在哪,是逻辑顺序还是函数上
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int random(int min,int max)
{
int r;
do{ r=rand()%(max-min+1)+min;
}while(r==3||(r<=9&&r>=6)||r==12);
return r;
}
void toBinary(int m)
{
int N,b=8;
while(b!=0)
{
N=m&b;
if(N!=0)
printf("1");
else
printf("0");
b>>=1;
}printf("\n");
}
int judge(int M,int i)
{
int x=M,y;
x<<=(4-i);
x=x&8,y=M&8;
if(x^y==0)
return 1;
else
return 0;
}
int move(int M,int i)
{
int b=1;
b<<=(i-1);
b=b|8;
M=M^b;
return M;
}
int main()
{
int M,N,b,k,n; char ch[3][8]={"白菜","羊","狼"},ch1[2][8]={"不在","在"},ch2='y',ch3;
srand(time(NULL));
M=random(0,15);
printf("M初始状态十进制表示:%d\nM初始状态二进制表示:",M);
toBinary(M);
while(ch2=='y'){k=rand()%3+1;
n=judge(M,k);
printf("k=%d 农夫和%s%s同岸\n",k,ch[k-1],ch1[n]);
if(n==1)
{
printf("农夫将%s移动到对岸后状态:",ch[k-1]);
M=move(M,k);
toBinary(M);
}
printf("还要继续么?\n");
ch2=getchar(),ch3=getchar();}
return 0;
}
有bug的
问题
正确的