В данный момент учусь по книге «Язык Си в примерах». В одном из уроков был предложен следующий исходник:
/* Программа table.c "Таблица умножения" */
#include <stdio.h>
int main()
{
int i, j, n;
printf ("Введите n: ");
scanf ("%d", &n);
for(i = 1; i <= n ; i++) {
for(j = 1; j <= n ; j++) {
printf ("%5d", i * j);
}
printf("\n");
}
return 0;
}
Потом в уроке объяснялся механизм работы программы. Типа «вот этот фрагмент кода делает это, а вот этот - вот это.» Сама же суть работы программы проста. Она просто использует введенное целое число для создания таблицы умножения от 1 до этого_самого_числа. Вот пример:
Введите n: 5
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
Потом в задании было написано заменить строчку
for(j = 1 ; j <= n; j++)
for(j = n ; j > -n; j--)
и
Посмотрите что получилось.
Посмотрел. Получилось действительно интересно.
Введите n: 5
5 4 3 2 1 0 -1 -2 -3 -4
10 8 6 4 2 0 -2 -4 -6 -8
15 12 9 6 3 0 -3 -6 -9 -12
20 16 12 8 4 0 -4 -8 -12 -16
25 20 15 10 5 0 -5 -10 -15 -20
Насчет отрицательных чисел все ясно. Но только мне непонятна причина возникновения последовательности «5 10 15 20». Если ввести 3, то последовательность будет «3 6 9». Почему так? Я вообще без понятий. Мне казалось, что горизонтальные строки должны были быть пронумерованы от 1 до введенного_числа