Вложенные циклы
- (разбор Д/З)
- Невложенный цикл по вводу (просто упражнение): ввести последовательность натуральных чисел, заканчивающуюся нулём. Посчитать количество нечётных чисел.
Обратите внимание на то, что n — переменная, участвующая в условии. Таким образом scanf("%d", &n) становится в канонической схеме цикла и изменением, и инициализацией и поэтому встречается в тексте программы дважды. Избежать этого нельзя, потому что данные сначала надо ввести, потом проверить, а потом только обработать, и затем уже ввести новые.
Вложенные циклы — это просто выполнение одного цикла внутри другого. В следующем примере функция printf() будет вызвана 3*4==20 раз:
Заметим, что функции printf() передаются четыре параметра — форматная строка и три числа (выражение i*j предварительно вычисляется). Каждое из этих чисел выводится printf-ом на месте соответствующего %d.
Таблица умножения в столбик — это не слишком красиво. Попробуем выводить всё умножение на j в одну строку, а перевод строки выводить в конце каждого внутреннего цикла. Параллельно заметим, что числа по %d выводятся разной длины, что портит таблицу. Воспользуемся явным указанием количества знакомест:
- Если попытаться вывести таким образом полную таблицу умножения от 1 до 12, получится некрасиво (строка будет слишком длинная). На самом деле место вывода перевода строки не должно быть привязано к концу внутреннего цикла. Заведём отдельный счётчик формул, и когда он будет равен 4, станем обнулять его и выводить перевод строки:
Операция ++wrap отличается от wrap++ тем, что значение wrap сначала увеличивается, а потом только участвует в вычислении выражения (т. е. при первом же сравнении wrap равно уж не 0, а 1)
Домашнее задание
(тренировочное упражнение) Посчитать сумму цифр числа
Ввести последовательность натуральных чисел, заканчивающуюся нулём. Посчитать сумму всех цифр в последовательности.
- (тренировочное упражнение) ввести число N, проверить, является ли оно простым (поделить на все возможные делители от 2 до N/2; на самом деле до корень из N, но корни мы ещё не умеем извлекать)
- Вводится последовательность положительных чисел, завершающаяся 0. Посчитать количество простых чисел среди них
Вывести таблицу умножения «как в тетради», т. е.
1*1=1 2*1=2 3*1=3 4*1=1 1*2=2 2*2=4 3*2=6 4*2=8 1*3=3 2*3=6 3*3=9 4*3=12 ... ... ... ... 1*12=12 2*12=24 3*12=36 4*12=48 5*1=5 6*1=6 7*1=7 8*1=8 5*2=10 6*2=12 7*2=14 8*2=16 5*3=15 6*3=18 7*3=21 8*3=24 ... ... ... ... 5*12=60 6*12=72 7*12=84 8*12=96 9*1=5 10*1=10 11*1=11 12*1=12 9*2=10 10*2=20 11*2=22 12*2=24 9*3=15 10*3=30 11*3=33 12*3=36 ... ... ... ... 9*12=108 10*12=120 11*12=121 12*12=144