Fácil C
Classificação de idade
Enunciado
Escreva um programa que leia uma idade inteira e use if/else if/else para imprimir:
- "Crianca" se idade < 12
- "Adolescente" se 12 <= idade < 18
- "Adulto" se idade >= 18
Requisitos
- Usar
if,else ifeelse. - Ler um inteiro do usuário.
- Imprimir exatamente uma das três palavras.
Código inicial
#include <stdio.h>
int main(void) {
int idade;
scanf("%d", &idade);
// complete com if/else if/else
return 0;
}
Saída esperada
Adulto
Ver dica
Use scanf para ler a idade e compare com os limites usando && para intervalos.
Mostrar solução
#include <stdio.h>
int main(void) {
int idade;
scanf("%d", &idade);
if (idade < 12) {
printf("Crianca\n");
} else if (idade < 18) {
printf("Adolescente\n");
} else {
printf("Adulto\n");
}
return 0;
}
Passo a passo
- Incluímos
<stdio.h>para usarprintfescanf. - Declaramos
int idadepara armazenar o valor lido. scanf("%d", &idade)lê um inteiro do teclado.- O primeiro
ifverifica seidade < 12; se verdadeiro, imprime "Crianca". - O
else ifsó é testado se o primeiro falhar; verificaidade < 18(como já sabemos que idade >= 12, cobre 12 a 17). - O
elsefinal cobre todos os casos restantes (idade >= 18). return 0indica que o programa terminou com sucesso.
Por que funciona
A estrutura if/else if/else garante que apenas um bloco seja executado. As condições são avaliadas em ordem, e a primeira verdadeira executa seu bloco, ignorando os demais. Isso implementa uma decisão exclusiva.
Erros comuns
- Esquecer o
&noscanf:scanf("%d", idade);causa comportamento indefinido (provavelmente erro de segmentação). - Usar
=em vez de==na condição:if (idade = 12)atribui 12 e sempre é verdadeiro (a menos que 12 seja falso). - Não tratar todos os intervalos: se usar apenas
if (idade < 12)eif (idade >= 18), idades entre 12 e 17 não imprimem nada.
Outra forma de resolver
Usar switch com divisão por faixas, mas é menos legível para intervalos. O if encadeado é mais claro.
Saída esperada
Adulto