#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void tobinary(int *M)
{
char N,b;
for(b=8;b!=0;b=b>>1)
{
N=*M&b;
if(N==0)
printf("0");
else
printf("1");
}
}
int judge(int *M,int i)
{
char x=*M,y;
x=x<<4-i;
x=x&8;
y=*M&8;
if(x^y==0)
return 0;
else return 1;
}
int *move(int *M,int i)
{
char b=1;
b=b<<i-1;
b=b|8;
*M=*M^b;
return *M;
}
int main()
{
int a,b,i=0;char p[5];int *d;d=&a;
srand(time(NULL));
a=rand()%15+0;
while(a==3||a>=6&&a<=9||a==12)
{
a=rand()%15+0;
}
printf("十进制:%d\n",a);
printf("二进制:");
tobinary(&a);
printf("\n");do{b=rand()%3+1;
printf("k=%d\n",b);
if(b==3)
{
if(judge(&a,3)==1)
printf("农夫与狼不在同岸\n");
else if(judge(&a,3)==0)
{ printf("农夫与狼在同岸\n");
printf("转移后");
a=move(&a,3);
tobinary(&a);printf("\n");}
}
else if(b==2)
{
if(judge(&a,2)==1)
printf("农夫与羊不在同岸\n");
else if(judge(&a,2)==0)
{printf("农夫与羊在同岸\n");
printf("转移后");
a=move(&a,2);
tobinary(&a);printf("\n");}
}
else if(b==1)
{
if(judge(&a,1)==1)
printf("农夫与菜不在同岸\n");
else if(judge(&a,1)==0)
{ printf("农夫与菜在同岸\n");
printf("转移后");
a=move(&a,1);
tobinary(&a);printf("\n");
}
}i++;
printf("继续吗?\n");scanf("%c",&p[i]);
}while(p[i]=='Y'||p[i]=='y');
}
运行结果要求是这样的 但我只能输入一次y然后就退出了 哪位老哥帮忙运行下改改?
哦哦 那我加了个getchar可以吗 你这个我还没学到。。