C 逻辑位和(或)等于最大无符号短值的随机数
C random numbers that logic bit sum(OR) is equal to max unsigned short value
任务是编写一个程序来计算使它们的位逻辑和(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;
}
sum=255
是一个非比较运算符的赋值。除此之外,只要 sum
不等于 USHRT_MAX
,您就想继续。如果在循环中不带任何条件地写入return
指令,循环将直接终止。
要获得不同的数字,您必须在循环内调用 rand
。函数 rand
returns 类型 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;
}
任务是编写一个程序来计算使它们的位逻辑和(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;
}
sum=255
是一个非比较运算符的赋值。除此之外,只要 sum
不等于 USHRT_MAX
,您就想继续。如果在循环中不带任何条件地写入return
指令,循环将直接终止。
要获得不同的数字,您必须在循环内调用 rand
。函数 rand
returns 类型 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;
}