Crie uma estrutura representando os alunos de um determinado curso. A estrutura deve conter a matrícula do aluno, nome, nota da primeira prova, nota da segunda prova e nota da terceira prova.
(a) Permita ao usuário entrar com os dados de 5 alunos.
(b) Encontre o aluno com maior nota da primeira prova.
© Encontre o aluno com maior média geral.
(d) Encontre o aluno com menor média geral
(e) Para cada aluno diga se ele foi aprovado ou reprovado, considerando o valor 6 para aprovação.

Passo 1

O exercício pede pra gente criar um tipo (struct) que represente cada aluno, armazenar 5 desses alunos, e depois realizar algumas buscas e classificações sobre as notas.

Passo 2

Primeiro, a gente define uma struct em C chamada Aluno, que tem os campos matrícula (int), nome (string) e três notas (float).
Depois, declaramos um array com 5 elementos desse tipo Aluno, pra guardar os dados de 5 alunos.
Em seguida, usamos um loop for de 0 a 4 para ler da entrada padrão a matrícula, o nome e as três notas de cada aluno.

Passo 3

Para encontrar o aluno com maior nota na primeira prova, fazemos outro loop for que compara a nota1 de cada aluno com uma variável que guarda a maior nota até então. Quando encontramos uma nota maior, atualizamos essa variável e guardamos o índice desse aluno.
Para achar o aluno com maior e o com menor média geral, primeiro dentro do mesmo ou em outro loop calculamos a média de cada aluno como (n1 + n2 + n3)/3. Em seguida comparamos com as variáveis de maior e menor média guardadas até o momento e atualizamos o índice correspondente.

Passo 4

Para checar aprovação ou reprovação, bastar percorrer novamente o array e, para cada aluno, comparar sua média com 6.0: se for maior ou igual, ele está aprovado; caso contrário, reprovado.

Passo 5

Por fim, imprimimos na tela: o aluno com maior nota na primeira prova, o aluno com maior média, o aluno com menor média e, para cada um dos 5 alunos, seu nome, sua matrícula e se foi aprovado ou reprovado.

Resposta

#include <stdio.h>
#include <string.h>
#define NUM_ALUNOS 5
typedef struct {
int matricula;
char nome[50];
float n1;
float n2;
float n3;
} Aluno;
int main() {
Aluno alunos[NUM_ALUNOS];
int i;
// (a) Leitura dos 5 alunos
for (i = 0; i < NUM_ALUNOS; i++) {
    printf("Aluno %d:\n", i + 1);
    printf("  Matrícula: ");
    scanf("%d", &alunos[i].matricula);
    getchar(); // limpa o '\n' remanescente
    printf("  Nome: ");
    fgets(alunos[i].nome, sizeof(alunos[i].nome), stdin);
    // remove '\n' no final do nome
    alunos[i].nome[strcspn(alunos[i].nome, "\n")] = '\0';
    printf("  Nota 1: ");
    scanf("%f", &alunos[i].n1);
    printf("  Nota 2: ");
    scanf("%f", &alunos[i].n2);
    printf("  Nota 3: ");
    scanf("%f", &alunos[i].n3);
    printf("\n");
}

// (b) Maior nota da primeira prova
int idx_maior_n1 = 0;
float maior_n1 = alunos[0].n1;
for (i = 1; i < NUM_ALUNOS; i++) {
    if (alunos[i].n1 > maior_n1) {
        maior_n1 = alunos[i].n1;
        idx_maior_n1 = i;
    }
}

// (c) Maior média geral
int idx_maior_media = 0;
// (d) Menor média geral
int idx_menor_media = 0;
float media;
float maior_media = (alunos[0].n1 + alunos[0].n2 + alunos[0].n3) / 3.0f;
float menor_media = maior_media;

for (i = 1; i < NUM_ALUNOS; i++) {
    media = (alunos[i].n1 + alunos[i].n2 + alunos[i].n3) / 3.0f;
    if (media > maior_media) {
        maior_media = media;
        idx_maior_media = i;
    }
    if (media < menor_media) {
        menor_media = media;
        idx_menor_media = i;
    }
}

// Saída dos resultados
printf("Aluno com maior nota na primeira prova:\n");
printf("  Matrícula: %d, Nome: %s, Nota1: %.2f\n\n",
       alunos[idx_maior_n1].matricula,
       alunos[idx_maior_n1].nome,
       alunos[idx_maior_n1].n1);

printf("Aluno com maior média geral (%.2f):\n", maior_media);
printf("  Matrícula: %d, Nome: %s\n\n",
       alunos[idx_maior_media].matricula,
       alunos[idx_maior_media].nome);

printf("Aluno com menor média geral (%.2f):\n", menor_media);
printf("  Matrícula: %d, Nome: %s\n\n",
       alunos[idx_menor_media].matricula,
       alunos[idx_menor_media].nome);

// (e) Situação de cada aluno
printf("Situação dos alunos:\n");
for (i = 0; i < NUM_ALUNOS; i++) {
    media = (alunos[i].n1 + alunos[i].n2 + alunos[i].n3) / 3.0f;
    printf("  %s (Matrícula %d): média = %.2f -> %s\n",
           alunos[i].nome,
           alunos[i].matricula,
           media,
           (media >= 6.0f) ? "APROVADO" : "REPROVADO");
}

return 0;
}

Exercícios relacionados