Неожиданные результаты умножения с целочисленными значениями, прочитанными scanf - PullRequest
1 голос
/ 09 марта 2012

Я новичок в C и пытаюсь написать код умножения вектора. Я читаю в массиве и масштабе. Затем я умножаю эту шкалу на каждый элемент в массиве.

for (i = 0 ; i < 5 ; i++) 
{
    scanf("%d", &numbers[i]);
}

puts("Please enter the scale:");
scanf("%d", s);

puts("The scaled vector is:");

for (j = 0 ; j < 5 ; j++) 
{
    int r = numbers[j] * s  ;
    printf("%d\n", r);
}

Однако, когда я запускаю этот код, я получаю неожиданные значения со следующими вводами:

1
2
3
4
5

Масштаб:

2

Выход:

6130616
12261232
18391848
24522464
30653080

Когда я заменю s здесь numbers[j] * s на 2, например, он вернет ожидаемый результат.

1 Ответ

6 голосов
/ 09 марта 2012

Отправьте указатель на scanf, чтобы вы могли получить значение:

puts ("Please enter the scale:");
scanf ("%d" , &s);
...