1. Altere o programa anterior para imprimir a figura abaixo:
    ****1
    ***22
    **333
    4444
    55555
    Dica: ao invés de usar printf("
    "); use printf("%d",i); onde i é a variável de contagem. Perceba que você deve gerar as sequências 12345 (para números) e 43210 (para *).
Sugestão: como no anterior, faça primeiro um programa que, dado um número pelo teclado, imprime asteriscos e o número. Por ex.: o usuário digita 3 e o programa imprime **333 (2 *'s e 3 números 3).

Passo 1

O enunciado pede um programa em C que imprima o seguinte padrão de 5 linhas, onde o número de asteriscos (*) decresce de 4 a 0 e o dígito da linha se repete de 1 a 5 vezes:
****1
***22
**333
* 444455555
Conteúdo: estruturas de repetição (laços) e nested loops.

Passo 2

Para resolver, generalizamos o padrão para um valor n. Em cada linha i (de 1 a n):
  • imprimimos n - i asteriscos,
  • em seguida imprimimos i cópias do dígito i,
  • depois pulamos para a próxima linha.

Passo 3

Em C, usamos um laço externo para i de 1 até n. Dentro dele temos dois laços internos:
  1. um para gerar os n - i asteriscos com printf("*"),
  2. outro para gerar as i repetições de i com printf("%d", i).
    Ao final de cada linha, usamos printf(" ").

Passo 4

Agora, o programa completo em C que lê um valor de n e imprime o padrão desejado:
#include <stdio.h>

int main() {
 int n, i, j;
 scanf("%d", &n);
 for (i \(=1\); i <= n; i\(++\)) {
 for (j \(=1\); j <= n - i; j\(++\)) {
 printf("*");
 }
 for (j \(=1\); j <= i; j\(++\)) {
 printf("%d", i);
 }
 printf("
");
 }
 return 0;
}

Resposta

#include <stdio.h>

int main() {
 int n, i, j;
 scanf("%d", &n);
 for (i \(=1\); i <= n; i\(++\)) {
 for (j \(=1\); j <= n - i; j\(++\)) {
 printf("*");
 }
 for (j \(=1\); j <= i; j\(++\)) {
 printf("%d", i);
 }
 printf("
");
 }
 return 0;
}

Exercícios relacionados