rand() 函数后继续指令的问题
Problem with continue instruction after rand() function
我只是想解决一个练习,要求我编写一个例程来生成一组 2 到 10 之间的偶数随机数。
问题出在打印的时候,因为我希望最后一个数字后面不要跟逗号。
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i, a, b, c;
i = a = b = c = 0;
srand(time(NULL));
for (i = 2; i <= 10; i++)
{
a = rand() % 8 + 2;
if ((i <= 10) && (a % 2) != 0)
{
continue;
}
printf((i < 10) ? "%d, " : "%d\n", a);
}
return 0;
}
这是两个执行示例:
4, 4, 2, 8,
2, 8, 6, 4, 2
其中一个逗号没有出现在末尾,但另一个逗号出现了。调试时,我看到错误发生在最后一个数字是奇数时,因为 continue 语句导致它进入下一次迭代。
正如 Retired Ninja 所说,有许多不必要的条件是可以避免的。我修改了您的代码,使 a
始终在 2
和 10
之间生成一个偶数,从而消除了对您实现的逻辑的需要。这就是我将这个新的 a
值指定为:
a = ((rand() % 4) * 2 + 2);
这会生成一个介于 [0,4]
之间的随机值,将其乘以 2,然后加 2,对于 2 到 10 之间的整数,不包含整数。由于你的新 a
总是偶数,我删除了你检查数字是否偶数的逻辑。
修改后的代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i, a, b, c;
i = a = b = c = 0;
srand(time(NULL));
for (i = 2; i <= 10; i++)
{
a = ((rand() % 4) * 2 + 2);
printf((i < 10) ? "%d, " : "%d\n", a);
}
return 0;
}
请注意,这段代码总是会产生9个数字,因为你没有指定每次打印多少个值,只是你需要“编写一个例程来生成一组2到10之间的偶数随机数” .您始终可以通过更改 for
循环中 i
的值来更改打印的数字数量。然而,逗号问题不再是问题。
如果我的解决方案对你有帮助,请mark my answer作为正确答案:)
我只是想解决一个练习,要求我编写一个例程来生成一组 2 到 10 之间的偶数随机数。
问题出在打印的时候,因为我希望最后一个数字后面不要跟逗号。
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i, a, b, c;
i = a = b = c = 0;
srand(time(NULL));
for (i = 2; i <= 10; i++)
{
a = rand() % 8 + 2;
if ((i <= 10) && (a % 2) != 0)
{
continue;
}
printf((i < 10) ? "%d, " : "%d\n", a);
}
return 0;
}
这是两个执行示例:
4, 4, 2, 8,
2, 8, 6, 4, 2
其中一个逗号没有出现在末尾,但另一个逗号出现了。调试时,我看到错误发生在最后一个数字是奇数时,因为 continue 语句导致它进入下一次迭代。
正如 Retired Ninja 所说,有许多不必要的条件是可以避免的。我修改了您的代码,使 a
始终在 2
和 10
之间生成一个偶数,从而消除了对您实现的逻辑的需要。这就是我将这个新的 a
值指定为:
a = ((rand() % 4) * 2 + 2);
这会生成一个介于 [0,4]
之间的随机值,将其乘以 2,然后加 2,对于 2 到 10 之间的整数,不包含整数。由于你的新 a
总是偶数,我删除了你检查数字是否偶数的逻辑。
修改后的代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i, a, b, c;
i = a = b = c = 0;
srand(time(NULL));
for (i = 2; i <= 10; i++)
{
a = ((rand() % 4) * 2 + 2);
printf((i < 10) ? "%d, " : "%d\n", a);
}
return 0;
}
请注意,这段代码总是会产生9个数字,因为你没有指定每次打印多少个值,只是你需要“编写一个例程来生成一组2到10之间的偶数随机数” .您始终可以通过更改 for
循环中 i
的值来更改打印的数字数量。然而,逗号问题不再是问题。
如果我的解决方案对你有帮助,请mark my answer作为正确答案:)