按照这张图片,我的代码死循环了,第一次使用位运算,怎么修改
#include
#include
#include
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;
printf("M初始状态二进制表示:");
while(b!=0)
{
N=m&b;
if(N!=0)
printf("1");
else
printf("0");
b>>1;
}printf("\n");
}
int main()
{
int M,N,b;
srand(time(NULL));
M=random(0,15);
printf("M初始状态十进制表示:%d\n",M);
toBinary(M);
return 0;
}
回答不易,回答有用请你采纳,点击回答右侧采纳即可!
代码中有一个错误,导致死循环,这是由于在您的 random 函数中的条件语句错误导致的。在 while 循环中,您限制了随机数必须不等于3,在6到9之间或者等于12。因此,如果随机数符合这些条件,则会一直循环下去。
另外,在toBinary函数中,您可能想要将b右移1位,而不是b>>1;
修改后的代码如下:
#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>=6&&r<=9)||r==12));
return r;
}
void toBinary(int m)
{
int N,b=8;
printf("M初始状态二进制表示:");
while(b!=0)
{
N=m&b;
if(N!=0)
printf("1");
else
printf("0");
b>>=1;
}printf("\n");
}