所以我想做的是打印出 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/