Nested loops and patterns · Вложенные циклы и паттерны
A loop inside a loop
- You can put one loop inside another. The inner loop runs fully for each step of the outer loop.
- This is how you work with rows and columns, or compare every pair of items.
- If the outer loop runs
Rtimes and the inner runsCtimes, the inner body runsR × Ctimes.
Цикл внутри цикла
- Вы можете поместить один цикл внутрь другого. Внутренний цикл выполняется полностью для каждого шага внешнего цикла.
- Так вы работаете со строками и столбцами или сравниваете каждую пару элементов.
- Если внешний цикл выполняется
Rраз, а внутреннийCраз, тело внутреннего цикла выполнитсяR × Cраз.
Rows and columns
- Think of the outer loop as the row and the inner loop as the column.
- For a block of
*, the outer loop picks a row; the inner loop prints the stars in that row. - After the inner loop finishes a row, print a newline
\nto start the next row.
Строки и столбцы
- Представьте внешний цикл как строку, а внутренний цикл как столбец.
- Для блока из
*элементов внешний цикл выбирает строку; внутренний цикл печатает звезды в этой строке. - После завершения внутреннего цикла для строки напечатайте перевод строки
\n, чтобы начать следующую строку.
Building a line, then a block
printf("*")prints one star without moving to a new line.- Print all the stars for one row first, then one
printf("\n")to end the row. - Repeat for every row, and the rows stack into a block.
Построение линии, затем блока
printf("*")печатает одну звезду без перехода на новую строку.- Сначала напечатайте все звезды для одной строки, затем один
printf("\n"), чтобы завершить строку. - Повторите для каждой строки, и строки сложатся в блок.
#include <stdio.h>
int main(void) {
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 3; col++) {
printf("*");
}
printf("\n"); // end the row
}
return 0;
}
Counting with nested loops
- Nested loops also count pairs. To count pairs
(i, j)withi < j, start the inner loop ati + 1. - A counter inside the inner loop adds up the matches.
- Watch the start and end values — off-by-one mistakes are common here.
Подсчет с вложенными циклами
- Вложенные циклы также подсчитывают пары. Чтобы подсчитать пары ⟨
(i, j)⟩ и ⟨i < j⟩, начните внутренний цикл со значенияi + 1. - Счетчик внутри внутреннего цикла суммирует совпадения.
- Следите за начальными и конечными значениями — здесь часто допускаются ошибки «off-by-one» (сдвиг на единицу).
Common mistakes
- The inner loop runs fully for each single turn of the outer loop.
- Check the bounds so a pattern has no extra or missing row.
Распространенные ошибки
- Внутренний цикл выполняется полностью для каждого отдельного прохода внешнего цикла.
- Проверьте границы, чтобы у паттерна не было лишних или недостающих строк.
Now you try
- Use an inner
printfwithout\nto build a row, then aprintf("\n")to end it. - For the function task, do not write a
main— the checker provides one.
Теперь попробуйте сами
- Используйте внутренний
printfбез\nдля построения строки, а затемprintf("\n")для её завершения. - Для задачи функции не пишите
main— проверочная система предоставит его сама.
In main, use nested loops to print a 3×3 block of * — three stars on each of three lines. · Внутри main используйте вложенные циклы, чтобы вывести блок 3×3 из символов * — три звезды на каждой из трех строк.
Click Run to see the output here. · Нажмите Запустить, чтобы увидеть результат здесь.
In main, print a left-aligned triangle of * that is 4 rows tall: row 1 has one *, row 2 has two, up to row 4 with four. · В main распечатайте левосторонний треугольник из * высотой 4 строк: строка 1 содержит один *, строка 2 — два, и так далее до строки 4 с четырьмя.
Click Run to see the output here. · Нажмите Запустить, чтобы увидеть результат здесь.
Complete int count_pairs(int n) so it returns how many pairs (i, j) satisfy 1 <= i < j <= n. Use nested loops (start the inner loop at i + 1). Do not write a main. · Завершите int count_pairs(int n) так, чтобы она возвращала количество пар ⟨(i, j)⟩, удовлетворяющих условию 1 <= i < j <= n. Используйте вложенные циклы (начинайте внутренний цикл со значения i + 1). Не пишите main.
Click Run to see the output here. · Нажмите Запустить, чтобы увидеть результат здесь.