Пол Дейтл 4.16 рис 4; for; как сделать проще - C (СИ)
Формулировка задачи:
Нужно нарисовать с помощью for квадрат: 9 пробелов и звездочку до 10 звездочек - https://ideone.com/msYvvd
Можно ли сделать короче?
int i, x;
for (x = 0; x < 10; ++x)
{
for (i = (10-1); i > x; --i)
{
printf("#");
}
for (i = 0; i <= x; ++i)
{
printf("*");
}
printf("\n");
}Решение задачи: «Пол Дейтл 4.16 рис 4; for; как сделать проще»
textual
Листинг программы
int main()
{
const char *STARS = "**********";
for (unsigned i = 0; i < 10; ++i)
printf("%10s\n", STARS + 9 - i);
}
Объяснение кода листинга программы
В этом коде:
- Объявлена константная строка
STARS, которая содержит 10 символов звездочек. - Затем следует цикл
for, который выполняется 10 раз, с переменнойiв качестве счетчика. - Внутри цикла, каждый раз, выводится строка, используя формат
printf, с использованиемSTARS + 9 - iдля получения подстрокиSTARSс 9 символов, которые не являются новыми строками, и доiсимволов, которые являются новыми строками. - Каждая строка выводится с отступами, используя символ форматирования
%10s\n. - Значение
iувеличивается на 1 после каждой итерации цикла. - Цикл завершается, когда значение
iстановится равным 10. Следует отметить, что этот код выведет строку из 9 символов звездочек, а не 10, так как последний символ будет заменен символом новой строки.