C随机数,逻辑位和(OR)等于最大无符号短值

时间:2016-01-06 19:37:20

标签: c random bit

任务是编写一个程序,计算一定数量的无符号短整数,使其位逻辑和(a1 OR a2 OR a3 ...)等于111..1。我真的很感激任何帮助。编辑:改编那样,循环仍然没有退出。

#include <stdio.h>
#include <time.h>

int main(){

int count=0;
unsigned short sum = 0;
unsigned short USHRT_MAX = 65535;

while(sum != USHRT_MAX ){
    unsigned short r = (unsigned short)rand()%USHRT_MAX;
    sum = sum | r;
    count++;
}
printf("the answer is : %d numbers\n", count);
return 0;

}

1 个答案:

答案 0 :(得分:2)

sum=255是一个非比较运算符。除此之外,只要sum不等于USHRT_MAX,您就希望继续。如果在没有任何条件的情况下将return指令写入循环,则循环将直接终止。 要获得不同的数字,您必须在循环中调用rand。函数rand返回类型int的值。像这样调整你的代码:

int main(){

    int count=0;
    unsigned short sum = 0;
    while(sum != USHRT_MAX){
        unsigned short r = (unsigned short)rand();
        sum = sum | r;
        count++;
    }
    printf("the answer is : %d numbers\n", count);
    return 0;
}