2016-10-11 3 views
0
#include <conio.h> 
#include <time.h> 

int i = 1; 



int main() 
{ 
    int nums[20]; 

    srand(time(NULL)); 

    while(i < 20){ 
     nums[i] = rand()% 10; 
     i++; 

    } 
    printf("%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n", nums[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]); 
} 

Когда я запускаю этот код, я получаю значения, которых я ожидаю, т.е. ниже 10, за исключением значений для 2, 3 и 4, а чаще всего 4 отрицателен .... Любая помощь на то, что я сделал неправильно было бы appriciatedПрисвоение случайных значений массиву в C

+0

#include также был включен там –

+0

'Е ("% d \ п% d \ п% d \ п% d \ п% d \ п% д \ п% г \ п% г \ п% г \ п% г \ п% г \ п% г \ п% г \ п% г \ п% г \ п% г \ п% г \ п% d \ n% d \ n% d \ n ", числа [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 , 20]), можно было бы писать более четко. На самом деле, я не думаю, что последний аргумент имеет смысл –

ответ

3
nums[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] 

эквивалентно

nums[20] 

из-за смешной ,-operator.

Try перечисляя элементы, как это (начиная с 0):

nums[0], nums[1], ..., num[19] 

И инициализировать i к 0:

i = 0; 

Или, хотя это, как правило, выглядит подозрительно, начните 1, но потом объявить

int nums[21]; 
+0

И превратить 'i' в локальную переменную, а не глобальную. –

2

Написать последнюю строку в виде петли вместо:

for(int i = 0; i < 20; i++) 
    printf("%d\n", nums[i]); 
+0

У этого есть возможность бежать, как ожидалось, знаете ли вы, что это было, я делал неправильно? –

+0

Как сказал @AlexD, вы не можете индексировать массивы типа 'nums [1, 2, 3, ...]', потому что '(1, 2, 3, ...)' оценивает значение '20'. –

Смежные вопросы