【发布时间】:2017-11-15 05:18:41
【问题描述】:
以下应该生成 2 个介于 0 和 100 之间的随机数,它们遵循一定的规则。
这些规则是:
*都不可能是0
*Num1 必须大于 Num2
*并且Num1必须能被Num2整除(num1 % num2位)
目前循环在前两点上正常工作,但不是最后一点。它仍在生成 num1 不能被 num2 整除的数字。出了什么问题?
do {
if (num1 == 0) {
num1 = rand()%100;
}
else if(num2 == 0) {
num2 = rand()%100;
}
else if (num1 < num2) {
num2 = rand()%100;
}
else if(num1 % num2 != 0) {
num2 = rand()%100;
}
a++;
printf("Loop no.:%d %d mod %d = %d %d / %d \n",a,num1,num2,num1%num2,num1,num2);
} while(num1 < num2 && (num1%num2 != 0) && num1 != 0 && num2 != 0);
【问题讨论】:
-
num1 = rand()%100;仍可能生成 0 -
如果两个条件都不满足,
numX不会改变。所以它将永远循环 -
为什么要测试两个地方的条件?如果您要使用 generate-then-test 方法,请生成数字,然后测试它们,如果失败则重新生成它们。但是把测试放在一个地方。
标签: c