嵌套的循环数组随机数

时间:2017-04-07 18:51:43

标签: 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;
}

2 个答案:

答案 0 :(得分:1)

对于初学者来说这个循环

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

其输出可能是

using

答案 1 :(得分: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;
}

节目输出:

33 25 17 28 2 27 10
相关问题