所以我要做的是打印出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;
}
答案 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