请教C语言中while循环的问题,谢谢!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教C语言中while循环的问题,谢谢!相关的知识,希望对你有一定的参考价值。

while循环里有while循环,里外的while循环条件满足,且在执行里面的while循环时,

要是里面的while循环条件仍然满足,而外面的while循环不满足条件了,
此时会跳出里面的while循环吗??
谢谢

很简单,这是个单线程。就跟人一样,你没有多重影分身。该做的还得做完。
有例为证:
void main()

int i1 = 0;
int i2 = 1;
while (i1 == 0)

while (i2 < 100)

i1 = 1; //循环1不满足了
i2 ++; //循环2还是要走完的。


cout<<i1<<", "<<i2; //输出是1、100
system("pause");
参考技术A 不会跳出来的
因为里面的while还没执行完
参考技术B 执行完才会跳出来

while循环中的随机数[C编程] [重复]

【中文标题】while循环中的随机数[C编程] [重复]【英文标题】:random number in while loop [C programming] [duplicate] 【发布时间】:2014-11-30 00:56:25 【问题描述】:

我试图在每次循环发生时创建 2 个随机数(介于 0-4 和 0-10 之间),但它总是给出相同的数字。 如果我多次运行该程序,它会给出不同的数字,但 while 循环总是生成相同的 2 个数字。 谢谢。

int random(int range)
    int num;
    srand(time(NULL));
    num = rand() % range;
    return num;


int main()

    int cnt = 0;
    int i;  
    int j;
    while (cnt <= 20) 
        i = random(5);
        j = random(10);
        printf("%d\n",i);
        printf("%d\n",j);
        printf("\n");
        cnt += 1;
    
    return 0;

【问题讨论】:

在 main 中调用 srand 一次(并且仅一次)。搜索一下,这个问题每周都会出现。 如果您在同一毫秒内调用srand(),您将获得相同的输出,它根本不会是随机的。是的,计算机将在一毫秒内处理两个srand(),因此答案将是相同的。 srand() 用于使随机化器在外人面前随机运行。你不必像人们说的那样只使用一次srand(),如果你想让公众更难以预测结果,你可以每分钟都使用它。 谁对这个问题投了赞成票,为什么? 请注意,在大多数实现中,rand() 是一个质量很差的伪随机数生成器。它在相当短的时间内重复。如果随机数的质量很重要,请考虑寻找更好的生成器。如果您使用的是 Linux,/dev/urandom 是一个很好的选择。 另一个质量点是rand()%range 表达式不能可靠地提供均匀分布,尤其是当range 相对于rand() 的最大值较大时。 【参考方案1】:

您只需为随机数生成器播种一次。

所以在你的随机函数之外运行这一行:

srand(time(NULL));

.. 在你的主要功能中:

int random(int range)
    int num;
    num = rand() % range;
    return num;


int main()
    int cnt = 0;
    int i;    
    int j;

    // Seed random number generator
    srand(time(NULL));

    while (cnt <= 20)
        i = random(5);
        j = random(10);
        printf("%d\n",i);
        printf("%d\n",j);
        printf("\n");
        cnt += 1;
    
    return 0;

【讨论】:

成功了!感谢您的帮助。【参考方案2】:

您只需为随机函数播种一次。包含time.h库并使用

#include<time.h>
.....
srand(time(NULL));

【讨论】:

以上是关于请教C语言中while循环的问题,谢谢!的主要内容,如果未能解决你的问题,请参考以下文章

C语言中while语句和do while语句具体是如何循环的?

用While统计字符个数问题请教各位。

C语言关于while循环的问题

C语言 do while 和 while 循环

c语言中while的用法

c语言while语句