Questão 1 — Condicionais múltiplas + laço
Escreva um programa que leia um número inteiro N (N ≥ 1).
Usando um laço, imprima apenas os números de 1 até N que:
- sejam múltiplos de 3,
- não sejam múltiplos de 4,
- estejam entre 10 e 200 (inclusive).
Se nenhum número atender aos critérios, imprimir:
Nenhum número atende aos critérios.
#include <stdio.h>
int atende_criterios(int num) {
return (num % 3 == 0) &&
(num % 4 != 0) &&
(num >= 10) &&
(num <= 200);
}
void imprimir_numeros_validos(int N) {
int i = 1;
int encontrado = 0; // flag para saber se achou pelo menos um
while (i <= N) {
if (atende_criterios(i)) {
if (encontrado) {
printf(" ");
}
printf("\n%d", i);
encontrado = 1;
}
i++;
}
if (!encontrado) {
printf("Nenhum numero atende aos criterios.");
}
}
int main() {
int N;
scanf("%d", &N);
imprimir_numeros_validos(N);
return 0;
}
Questão 2 — Condicionais + laço + soma condicional
Faça um programa que leia números inteiros enquanto o valor digitado for diferente de -1.
Usando um laço while, some apenas os números ímpares e positivos.
Ao digitar -1, o programa deve exibir a soma final.
#include <stdio.h>
// Verifica se o número é ímpar e positivo
int eh_impar_positivo(int num) {
return (num > 0) && (num % 2 == 1);
}
int ler_e_somar() {
int soma = 0;
int valor;
scanf("%d", &valor);
while (valor != -1) {
if (eh_impar_positivo(valor)) {
soma += valor;
}
scanf("%d", &valor);
}
return soma;
}
int main() {
int resultado = ler_e_somar();
printf("Soma dos impares positivos = %d\n", resultado);
return 0;
}
Questão 3 — Vetor + laços + análise numérica
Leia um inteiro T (T ≥ 5) e depois leia T valores inteiros em um vetor.
O programa deve determinar:
- o maior valor,
- o menor valor,
- quantos valores estão acima da média do vetor
#include <stdio.h>
#define MAX_T 1000
// Lê T valores e armazena no vetor
void ler_vetor(int vetor[], int T) {
int i = 0;
while (i < T) {
scanf("%d", &vetor[i]);
i++;
}
}
// Retorna o maior valor do vetor
int maior_valor(int vetor[], int T) {
int maior = vetor[0];
int i = 1;
while (i < T) {
if (vetor[i] > maior) {
maior = vetor[i];
}
i++;
}
return maior;
}
// Retorna o menor valor do vetor
int menor_valor(int vetor[], int T) {
int menor = vetor[0];
int i = 1;
while (i < T) {
if (vetor[i] < menor) {
menor = vetor[i];
}
i++;
}
return menor;
}
// Calcula a média dos valores no vetor
double calcular_media(int vetor[], int T) {
int soma = 0;
int i = 0;
while (i < T) {
soma += vetor[i];
i++;
}
return (double)soma / T;
}
// Conta quantos valores estão acima da média
int contar_acima_da_media(int vetor[], int T, double media) {
int cont = 0;
int i = 0;
while (i < T) {
if (vetor[i] > media) {
cont++;
}
i++;
}
return cont;
}
int main() {
int T;
scanf("%d", &T);
int vetor[MAX_T];
ler_vetor(vetor, T);
int maior = maior_valor(vetor, T);
int menor = menor_valor(vetor, T);
double media = calcular_media(vetor, T);
int acima = contar_acima_da_media(vetor, T, media);
printf("Maior valor = %d\n", maior);
printf("Menor valor = %d\n", menor);
printf("Acima da media = %d\n", acima);
return 0;
}
Questão 4 — Vetor + laço + condicional composta
Leia um vetor de 12 números inteiros representando vendas mensais.
Com um laço, conte:
- quantos meses tiveram vendas acima de 500,
- quantos ficaram abaixo de 100,
- quantos ficaram entre 200 e 300 (inclusive).
#include <stdio.h>
#define TAM 12
void ler_vendas(int vendas[]) {
int i = 0;
while (i < TAM) {
scanf("%d", &vendas[i]);
i++;
}
}
int contar_acima_500(int vendas[]) {
int cont = 0, i = 0;
while (i < TAM) {
if (vendas[i] > 500) cont++;
i++;
}
return cont;
}
int contar_abaixo_100(int vendas[]) {
int cont = 0, i = 0;
while (i < TAM) {
if (vendas[i] < 100) cont++;
i++;
}
return cont;
}
int contar_entre_200_e_300(int vendas[]) {
int cont = 0, i = 0;
while (i < TAM) {
if (vendas[i] >= 200 && vendas[i] <= 300) cont++;
i++;
}
return cont;
}
int main() {
int vendas[TAM];
ler_vendas(vendas);
printf("Acima de 500 = %d\n", contar_acima_500(vendas));
printf("Abaixo de 100 = %d\n", contar_abaixo_100(vendas));
printf("Entre 200 e 300 = %d\n", contar_entre_200_e_300(vendas));
return 0;
}
Questão 5 — Condicionais + laço do…while + cálculo cumulativo
Leia números inteiros repetidamente em um laço do…while.
O programa deve parar quando for digitado um número múltiplo de 10.
Durante o laço, some apenas números que:
- sejam positivos,
- sejam menores que 100,
- não sejam múltiplos de 4.
Ao terminar, imprimir a soma final.
#include <stdio.h>
// Verifica se o número deve ser somado
int deve_somar(int num) {
return (num > 0) && // positivo
(num < 100) && // menor que 100
(num % 4 != 0); // não múltiplo de 4
}
int main() {
int soma = 0;
int numero;
do {
scanf("%d", &numero);
// Só soma se NÃO for múltiplo de 10 (pois se for, é o sinal de parada)
if (numero % 10 != 0) {
if (deve_somar(numero)) {
soma += numero;
}
}
} while (numero % 10 != 0); // repete enquanto NÃO for múltiplo de 10
printf("Soma final = %d\n", soma);
return 0;
}