Вывод пустого квадрата из звездочек - C (СИ)
Формулировка задачи:
Не могу написать программу для вывода пустого квадрата из "*" в Си. Заполненный квадрат выводится без проблем, через 2 цикла for... Это задачка из Дейтла. Перепробовал и так и так, но не идёт. Заранее Вам большое спасибо!!!
Решение задачи: «Вывод пустого квадрата из звездочек»
textual
Листинг программы
#include <stdio.h> #include <string.h> /* квадраторисовалка */ #define SIDE_SIZE 10 int main(){ char row[SIDE_SIZE + 1]; int i; /* верхняя строка */ memset(row, '*', SIDE_SIZE); /* завершающий ноль */ row[SIDE_SIZE] = 0; printf("%s\n", row); /* середина */ memset(row + 1, ' ', SIDE_SIZE - 2); for ( i = 0; i < SIDE_SIZE - 2; i++ ) printf("%s\n", row); /* нижняя сторона */ memset(row, '*', SIDE_SIZE); printf("%s\n", row); return (0); }
Объяснение кода листинга программы
В этом коде создается пустой квадрат из звездочек. Вот что происходит:
- Строка
row
инициализируется как массив символов с размеромSIDE_SIZE + 1
. - Первая строка квадрата (верхняя сторона) создается с помощью функции
memset()
, которая заполняет строкуrow
звездочками. - Последний символ строки устанавливается в ноль, чтобы завершить строку.
- Эта строка выводится на консоль с помощью функции
printf()
. - Вторая строка квадрата (середина) создается путем заполнения символами пробелов следующего массива
row + 1
, который является адресом первого элемента следующего массива, увеличенного на единицу. - Используя цикл
for
, строка выводится на консольSIDE_SIZE - 2
раза. - Третья строка квадрата (нижняя сторона) создается с помощью функции
memset()
, которая заполняет строкуrow
звездочками. - Эта строка выводится на консоль с помощью функции
printf()
. - Программа возвращает ноль, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д