c - 嵌套 for 循环数组随机数

标签 c arrays for-loop visual-c++ random

所以我想做的是打印出 7 个随机数,并且循环不应该打印出重复项。 当我尝试调试时,似乎我没有进入 if 语句所在的嵌套循环。

我还打印了一个内存值,并且随机数是重复的。

我相信我的第二个嵌套 for 循环有问题,但我不知道是什么问题,如果有人能看到这个问题并向我解释我的第二个嵌套循环发生了什么,我将不胜感激。

#include <stdio.h>
#include <time.h>
#define SIZE 35

int main()
{
int number[SIZE];

srand(time(NULL));

for (int i = 1; i < 7; i++)
{
    number[i] = rand() % 35 + 1;
    for (int j = 0; j > i; j++)
    {
        if (number[i] == number[i])
        printf("%d\n", number[i]);
        i--;
    }
}
for (int i = 0; i < 7; i++)
{
    printf("%d\n", number[i]);
}
getchar();

return 0;
}

最佳答案

对于初学者来说,这个循环

for (int j = 0; j > i; j++)

永远不会被执行,因为j的初始化方式始终小于i

程序可以如下所示

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

#define SIZE    35

int main(void) 
{
    int number[SIZE];
    int n = 7;

    int i = 0;

    srand( ( unsigned int )time( NULL ) );

    while ( i < n )
    {
        int value = rand() % SIZE + 1;

        int j = 0;
        while ( j < i && number[j] != value ) j++;

        if ( j == i ) number[i++] = value;
    }

    for ( i = 0; i < n; i++ ) printf( "%d ", number[i] );
    putchar( '\n' );

    getchar();

    return 0;
}

它的输出可能是

10 21 16 17 26 25 34

关于c - 嵌套 for 循环数组随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43285228/

相关文章:

c - 使用 C 在终端的 printf 输出中获取一个奇怪的百分号

c - 为结构中的结构数组动态分配内存

PHP foreach 返回多维数组中的最后一行

javascript - 如何使用超时重置循环参数

c - C 中的错误检查

javascript - 将项目添加到数组或替换它(如果它具有相同的 ID)

javascript - 计算数组一与数组二中字符串的出现次数

java - 获取 10 个不重复的随机整数?

oracle - 使用 Oracle PL/SQL For 循环遍历逗号分隔的字符串

c - 支持 AES-NI 的 EVP 接口(interface)