生成随机数并打印"完成!"如果它们落在C的范围内

时间:2014-08-07 04:45:27

标签: c loops random srand

很抱歉,如果这个问题已在其他地方得到解答,我确实搜索了但找不到我要找的内容。

无论如何,我被困在大学作业问题上,问题要求我创建一个脚本,随机生成0-99之间的数字,每次在新行上打印数字,如果刚打印的数字落在68-74范围应该打印完成!在下一行并退出脚本。

我得到了一个模板,其中大部分代码已经为我完成,它看起来像这样:

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

int main() {
    srand(time(NULL));
    /**
     * Your solution must start from below this point. No code modifications WHATSOEVER are allowed ABOVE this point!
     */


    /**
     * Your solution must have finished by this point. No code modifications WHATSOEVER are allowed BELOW this point!
     */
    return 0;
}

int getRandInt() {
    return rand() % 100;
}

无论如何经过大量的搞乱我终于得到它打印一个列表随机数而不是无限的1个随机数。我是这样做的:

do
    printf ("%d\n", getRandInt());
while (getRandInt());

我尝试插入以下内容:

do
    printf ("%d\n", getRandInt());
while (getRandInt() <68);

看它是否至少只打印小于68的随机整数,但这只会使它只打印1或2个随机数(有时值大于68),而不是前面代码块打印的巨大列表。 / p>

我是否正在使用正确的功能?我应该使用Do While循环吗?如何为循环设置一个数字范围以退出并打印“完成!”?显然我不能在评论之外编辑代码。

我对编码非常陌生,并对此问题表示感谢。

3 个答案:

答案 0 :(得分:1)

每次拨打getRandInt(),您都会获得一个新的随机值。这意味着您使用与打印不同的随机数检查while循环中的条件。

要解决此问题,您需要获取一个随机值并存储它,然后进行比较。您可以使用许多不同类型的循环来解决这个问题,包括do / while。

另请注意,将父母与do语句一起使用是一种很好的方式:

do {
    // code here.
} while ( ... );

由于您已将此作为家庭作业确定,我将在此处提供帮助,除非您有其他问题。

答案 1 :(得分:1)

声明另一个整数变量并在循环内调用该函数。因此,每次将返回值存储在该变量中时,请使用该变量进行条件检查。

请尝试以下代码段 -

/**
 * Your solution must start from below this point. No code modifications WHATSOEVER are       allowed ABOVE this point!
 */
    int ret;
    do{
            ret = getRandInt();
            printf("%d\n",ret);

    }while(!(ret >= 68 && ret <= 74));

    printf("Done!\n");
/**
 * Your solution must have finished by this point. No code modifications WHATSOEVER are allowed BELOW this point!
 */

从上面的代码中,当数字介于68到74之间时,它将打印Done!并退出循环。如果不是(!(ret >= 68 && ret <= 74)),它将继续并执行循环,直到数字介于68到74之间。

答案 2 :(得分:1)

我猜你只是对如何在do while循环中编写条件感到困惑。

试试这个代码吧!

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int getrandom_no()
{
    return rand() % 100;
}

int main(void) {
    int r=0;

    srand(time(NULL)); /* To use rand function you must use srand first */
    do 
    {
        r = getrandom_no();
        printf("%d\n",r);
    }while(r > 74 || r < 68);
    puts("Done!");

    return 0;
}