2012-02-27 5 views
1

SRand/Rand를 사용하여 난수 배열을 생성하고 있습니다. 배열 크기는 사용자가 넣으라는 메시지에 따라 달라집니다. 기본적으로 사용자가 9의 크기를 입력하면 배열은 9 개의 숫자 여야합니다. 그런 다음이 배열은 배열 값을 18 미만으로 유지하기 위해 매개 변수와 함께 rand()를 사용하여 채워야합니다. 문제는 임의의 크기 배열이 때때로 생성된다는 것입니다. 아마 4 번이나 5 번 째마다 배열을 12-14 숫자로 프로그램을 실행합니다. 내 코드에서 문제가 보이지 않습니다. 아래에 스 니펫을 포함 시켰습니다. 누구든지 그것에 대해 밝히셨습니까?고정 크기 배열이 고정되어 있지 않습니다.

int main(void) 
{ 
    int N; 
    int i; 

    printf("Please enter a number\n"); 
    scanf("%d", &N); 

    srand (time(NULL)); 
    int numarray[N]; 
    for(i=1; i<numarray[N]; i++) 
    { 
     numarray[i]=rand()%21; 
     printf("%d\n", numarray[i]); 
    } 

    return 0; 
} 
+0

아하이 봐요! 나는 오랫동안 그것을보고 있었다 나는 명백한 것을 보지 않았다! 모두에게 고마워요. – adohertyd

답변

5
for(i=1; i<numarray[N]; i++) 

당신은 잘못된 값 전체를 반복하고 있습니다.

  • 배열은 인덱스가 배열의 단지 값 인 (numarray[N]의 값보다 작은 경우 당신은 중지하고 있지 1.
  • , 0에서 시작하고 하나이기 때문에이 경우 정의되지 배열 끝 이후).

나는 당신이하고 싶은 생각 : 코드 줄에서

for(i = 0; i < N; i++) 
4

: 그것은 알 수없는 값을 가지고 있도록

for(i=1; i<numarray[N]; i++) 

numarray[N]는 초기화되지 않은 변수입니다. 0 일 수도 있고 60,000 일 수도 있습니다.

결과적으로 루프는 알 수없는 반복 횟수 동안 실행됩니다.

2

N 대신 numarray [N]에서 for 루프 색인 종료를 실제로 사용하셨습니까?

관련 문제