As questões devem ser implementadas em C.
Desenvolva um programa que leia dois valores a e b(a \leq b) e mostre os seguintes resultados: (1)
a. Todos os números em [a, b].
b. Todos os números ímpares em [a, b].
c. Todos os números impares em [a, b] múltiplos de 3 .

Passo 1

O enunciado pede um programa em C que leia dois valores inteiros a e b com a condição \,a \le b\, e mostre três coisas:
  • (a) todos os números no intervalo [a,b];
  • (b) todos os números ímpares no intervalo [a,b];
  • (c) todos os números ímpares em [a,b] que sejam múltiplos de 3.
Informações relevantes dadas:
  • Os valores de entrada são inteiros (vamos assumir tipo inteiro em C).
  • O intervalo é inclusivo: ambos a e b fazem parte de [a,b].
  • A condição \,a \le b\, está garantida pelo enunciado (opcionalmente pode-se tratar caso contrário).

Passo 2

Escolha de método: usar laços (loops) simples. A solução mais direta e didática é percorrer os inteiros de a até b com um laço \text{for} e imprimir conforme a condição pedida. Isso é apropriado para provas e para implementação em C sem bibliotecas extras.
Explicação de “percorrer o intervalo”: significa usar um contador n que toma valores
n = a, a+1, a+2, \dots, b
ou seja, um laço do tipo \text{for} (n = a; n \le b; n++).

Passo 3

Como detectar números ímpares: usar o resto da divisão inteira (operador “módulo”). Um inteiro n é ímpar quando
n \bmod 2 \neq 0.
Em C o operador é o símbolo \%, então o teste em código será n \% 2 != 0.
Exemplos rápidos: 4 \bmod 2 = 0 (par), 5 \bmod 2 = 1 (ímpar).

Passo 4

Como detectar múltiplos de 3: um inteiro n é múltiplo de 3 quando
n \bmod 3 = 0.
Em C o teste é n \% 3 == 0.
Combinação para (c): selecionar n tal que n \bmod 2 \neq 0 e n \bmod 3 = 0 ao mesmo tempo, isto é, n ímpar e divisível por 3. Em C: (n \% 2 != 0) && (n \% 3 == 0).

Passo 5

Formato de saída: para ficar legível na prova e em testes automáticos, é comum imprimir cada lista em uma linha, com os números separados por espaços. Também é útil imprimir um cabeçalho curto antes de cada lista para identificar a seção (por exemplo, “Todos:”, “Impares:”, “Impares multiplos de 3:”).
Decisão de implementação fácil para provas: usar três laços separados (um para cada item). Isso simplifica a lógica e é perfeitamente eficiente para intervalos de tamanho razoável.

Passo 6

Detalhes de implementação em C:
  • Incluir <stdio.h>.
  • Ler a e b com scanf("%d %d", &a, &b).
  • (Opcional) Se desejar robustez, trocar os valores caso a>b, mas como o enunciado garante a \le b isso não é obrigatório. Para ser amigável, o programa abaixo faz a troca caso o usuário não respeite a condição.
  • Usar laços \text{for} com um inteiro n que vai de a até b.
  • Para imprimir uma lista sem espaço final extra, controlar se é o primeiro elemento (variável booleana/inteira first) e imprimir um espaço antes dos elementos subsequentes.

Passo 7

Exemplo rápido de lógica (em palavras, traduzível diretamente para C):
  • Ler a e b.
  • Imprimir cabeçalho da parte (a).
  • Para n indo de a até b: imprimir n separado por espaço.
  • Repetir para parte (b) mas só imprimindo quando n \bmod 2 \neq 0.
  • Repetir para parte (c) só imprimindo quando n \bmod 2 \neq 0 e n \bmod 3 = 0.

Passo 8

Dicas de prova e atenção:
  • Lembre-se que o operador de resto em C é \% e funciona também com números negativos (comportamento definido em C99/C11 para inteiros, mas para provas normalmente os exemplos são não-problemáticos). Se houver negativos, os testes com \% 2 e \% 3 ainda distinguem pares/ímpares e múltiplos respectivamente.
  • Sempre usar o laço com condição \,n \le b\, para garantir inclusão de b.
  • Teste mentalmente com um exemplo: a=3, b=10. Resultado esperado:
    • Todos: 3\\\ 4\\\ 5\\\ 6\\\ 7\\\ 8\\\ 9\\\ 10
    • Ímpares: 3\\\ 5\\\ 7\\\ 9
    • Ímpares múltiplos de 3: 3\\\ 9

Resposta

#include <stdio.h>
int main(void) {
int a, b;
if (scanf("%d %d", &a, &b) != 2) return 0;
/* Garantir a <= b por segurança (enunciado diz que já vale) */
if (a > b) {
    int t = a; a = b; b = t;
}

/* (a) Todos os números em [a,b] */
printf("Todos os numeros em [%d,%d]:\n", a, b);
for (int n = a; n <= b; ++n) {
    if (n != a) printf(" ");
    printf("%d", n);
}
printf("\n");

/* (b) Todos os números ímpares em [a,b] */
printf("Numeros impares em [%d,%d]:\n", a, b);
int first = 1;
for (int n = a; n <= b; ++n) {
    if (n % 2 != 0) {
        if (!first) printf(" ");
        printf("%d", n);
        first = 0;
    }
}
printf("\n");

/* \text{(c)} Todos os números ímpares em [a,b] múltiplos de 3 */
printf("Numeros impares multiplos de 3 em [%d,%d]:\n", a, b);
first = 1;
for (int n = a; n <= b; ++n) {
    if ((n % 2 != 0) && (n % 3 == 0)) {
        if (!first) printf(" ");
        printf("%d", n);
        first = 0;
    }
}
printf("\n");

return 0;
}

Exercícios relacionados