C 循环数组随机数的嵌套

C 循环数组随机数的嵌套,c,arrays,for-loop,visual-c++,random,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(tim

所以我要做的是打印出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;
}
#包括
#包括
#定义尺寸35
int main()
{
整数[大小];
srand(时间(空));
对于(int i=1;i<7;i++)
{
数字[i]=rand()%35+1;
对于(int j=0;j>i;j++)
{
如果(编号[i]==编号[i])
printf(“%d\n”,编号[i]);
我--;
}
}
对于(int i=0;i<7;i++)
{
printf(“%d\n”,编号[i]);
}
getchar();
返回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;
}

您似乎混淆了所需值的数量及其范围

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

#define SIZE 35
#define VALS 7

int main(void) {
    int i, j;
    int had[SIZE] = { 0 };          // status array
    srand((unsigned)time(NULL));
    for(i = 0; i < VALS; i++) {
        do {
            j = rand() % SIZE;      // range 0..34
        } while(had[j] != 0);       // until new value had
        had[j] = 1;                 // set status
        printf("%d ", j + 1);       // range 1..35
    }
    return 0;
}
#包括
#包括
#包括
#定义尺寸35
#定义VAL 7
内部主(空){
int i,j;
int有[SIZE]={0};//状态数组
srand((无符号)时间(NULL));
对于(i=0;i
程序输出:

33 25 17 28 2 27 10 33 25 17 28 2 27 10
如果它“没有进入我的嵌套循环”,那就不会无缘无故地发生。您应该使用调试器来确定(
if(number[i]==number[i])
何时会为false的原因(检查变量等)
搁置:
rand()%35
=>
rand()%SIZE
。另外,当数组具有长度
SIZE
(35)时,幻数
7
的作用是什么?您似乎混淆了值的数量及其范围。
for(int j=0;j>i;j++)
如果
i
1
开始,而
j
0
开始,那么
j
何时会大于
i
?确实,thx,是的,我对这些数字及其范围有点困惑,我只是想知道发生了什么。 33 25 17 28 2 27 10