Вывод пустого квадрата из звездочек - 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(). - Программа возвращает ноль, что означает успешное выполнение.