Раздел «Язык Си».TableProblem:

Таблица умножения

Следующая программа выводит на экран таблицу умножения.

 /* Программа 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;
}

Переменные i и j соответствуют номеру строчки и номеру столбца.

Здесь мы встречаемся с циклом в цикле. Переменная внешнего цикла i сначала равна 1. Начинает работу внутренний цикл

        for (j = 1; j <= n ; j++) {
             printf ("%5d", i * j);
        }
— он печатает первую строчку таблицы.

Переменная внутреннего цикла j меняется от 1 до n включительно. При этом для каждого значения j печатается на экран результат произведения i * j.

формат вывода определяется как "%5d", что означает "печатать целое число, выделяя под него 5 позиций". При этом, если в числе меньше, чем пять разрядов, то оно придвигается к правому краю, а слева добавляются пробелы.

Когда заканчивается внутренний цикл, происходит переход на новую строчку (команда printf ("\n") ). После этого переменная внешнего цикла i увеличивает своё значение на 1 и становится равна 2. Затем снова запускается внутренний цикл, и печатается вторая строчка таблицы умножения.

Пример работы программы (пользователь ввёл число 5 ):

bash$ ./table
Введите 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

Задания

1. Строчку

 for (j = 1 ; j <= n; j++) 
замените на
 for (j = n ; j > -n; j--) 
и посмотрите что получится.

2. Строчку

 printf("%5d", i * j) 
замените на
 printf("%05d", i * j) 
и посмотрите, что получится.
TheoryWebForm
Type: Теория
Scope:  
AlgoSection:  
CSection: Базовые конструкции
Complexity: low
Кeywords: for, printf