对于条件(C)之前的循环停止

时间:2016-11-19 23:43:21

标签: c

我是C语言的新手。我有一个小问题,我无法弄清楚。我做了一个抽奖程序,它为每列产生6个随机数,并根据输入的行值重复。我遇到的唯一问题是,即使输入较高,程序也会在9次成功后停止。

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


/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[])
{
    int KURE_SIZE = 50;
    int ROWS = 0;
    int i, j, a;
    int lottery[ i ][ j ];
    int kure[ KURE_SIZE ];

    for( a = 1; a <= KURE_SIZE; ++a )
        kure[a] = a;

    printf("How many games do you want to play? (MAX.500) ");
    scanf("%d", &ROWS);
    printf("\n");


        for( i = 0; i < ROWS; i++ ){

            printf("Game %d :", i + 1);

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

                for( j = 0; j < 6; j++ ){

                    int x = 1 + rand() % KURE_SIZE;
                    lottery[ i ][ j ] = kure[ x ];

                    printf("%5d", lottery[ i ][ j ]);
                    kure[x] = kure[ KURE_SIZE-- ];

                }

            printf("\n");

        }

    printf("\n\n");

    system("pause");
    return 0;
}

这个问题可能是什么原因?我认为这可能是一个记忆问题,但我不知道。

我会感激一些帮助。我喜欢这个网站和乐于助人的社区。

1 个答案:

答案 0 :(得分:1)

可变长度数组的定义

int lottery[ i ][ j ];

不正确,因为变量ij未初始化。

此循环也无效

   for( a = 1; a <= `KURE_SIZE`; ++a )
        kure[a] = a;

我试图访问数组之外​​的内存。此数组的有效索引范围是[0, KURE_SIZE-1]

因此这句话

int x = 1 + rand() % KURE_SIZE;

必须更改为

int x = rand() % KURE_SIZE;

因为变量x用作数组kure

的索引