Faça um programa que leia o nome de um aluno, a quantidade de provas realizadas por ele e suas respectivas notas. O algoritmo deve apresentar ao final o nome e a média das notas obtidas do aluno.
Obs.: Utilize a função gets para fazer leitura de strings. (2)

Passo 1

O enunciado pede que o programa:
  • leia o nome de um aluno (uma string);
  • leia a quantidade de provas realizadas por ele (um inteiro);
  • leia as respectivas notas das provas (números, uma por prova);
  • calcule a média das notas e apresente, ao final, o nome do aluno e a média calculada.
Dados que o programa deve receber:
  • o nome do aluno (uma linha de texto; usar a função gets conforme pedido);
  • a quantidade de provas n (um inteiro);
  • as n notas x_1, x_2, \dots, x_n (valores numéricos, por exemplo ponto flutuante).
O programa deve exibir:
  • o nome do aluno;
  • a média das notas.

Passo 2

Roteiro do algoritmo (passo a passo lógico):
  1. Ler o nome do aluno usando gets.
  2. Ler a quantidade de provas n.
  3. Inicializar uma variável acumuladora S (soma) com zero.
  4. Repetir n vezes: ler uma nota x_i e adicionar a S.
  5. Calcular a média \bar{x} usando a fórmula
\bar{x} = \frac{\sum_{i=1}^{n} x_i}{n}.
  1. Imprimir o nome do aluno e a média \bar{x}.

Passo 3

Explicando a fórmula da média (para você entender e conseguir aplicar na prova):
  • A média aritmética das n notas x_1, x_2, \dots, x_n é definida por
\bar{x} = \frac{x_1 + x_2 + \cdots + x_n}{n} = \frac{\sum_{i=1}^{n} x_i}{n}.
  • Aqui x_i é a i-ésima nota e n é a quantidade total de notas. No código isso corresponde a ler cada nota e somar em uma variável acumuladora S, depois dividir S por n.

Passo 4

Tipos de variáveis que vamos usar e por quê:
  • nome: buffer de caracteres (por exemplo char nome[100];) para guardar a string do aluno. O tamanho 100 é arbitrário mas suficiente para nomes comuns.
  • n: inteiro (int) para a quantidade de provas.
  • S: número de ponto flutuante (float ou double) para acumular a soma das notas (usar float é suficiente).
  • nota: número de ponto flutuante (float) para ler cada nota.
  • media: número de ponto flutuante (float) para guardar a média calculada.

Passo 5

Sobre a função gets (pedida no enunciado) e cuidados:
  • gets(nome) lê uma linha inteira até o caractere de nova linha e coloca a string em nome.
  • Observação prática: gets é insegura porque não impede estouro de buffer se a linha for maior que o espaço disponível. Entretanto, como o enunciado exige gets, usaremos gets no exemplo. Na prática, prefira fgets(nome, sizeof(nome), stdin) para evitar estouro.
  • Para evitar problemas com gets, garanta que o array nome seja grande o suficiente para os nomes esperados (por exemplo 100 caracteres).

Passo 6

Casos especiais e validações simples que vale considerar:
  • Se n \le 0 a divisão por n não faz sentido. Podemos detectar isso e avisar o usuário ou terminar o programa. No exemplo abaixo, verifico n \le 0 e saio com mensagem de erro.
  • Assuma que o usuário irá fornecer n notas (cada uma lida por scanf("%f", &nota)).
  • Formatação de saída: normalmente mostra-se a média com duas casas decimais (por exemplo %.2f).

Passo 7

Pseudocódigo rápido antes do código real:
  • Ler nome com gets.
  • Ler n com scanf.
  • Se n <= 0 então imprimir mensagem de erro e sair.
  • S = 0
  • Para i de 1 até n:
    • ler nota
    • S = S + nota
  • media = S / n
  • Imprimir nome e media

Resposta

#include <stdio.h>
int main(void) {
char nome[100];
int n, i;
float nota, soma = 0.0f, media;
printf("Digite o nome do aluno:\n");
gets(nome); /* Conforme pedido no enunciado (nota: gets é insegura em C moderno) */

printf("Digite a quantidade de provas:\n");
if (scanf("%d", &n) != 1) {
    printf("Entrada invalida para a quantidade de provas.\n");
    return 1;
}

if (n <= 0) {
    printf("Quantidade de provas invalida.\n");
    return 1;
}

for (i = 0; i < n; i++) {
    printf("Digite a nota %d:\n", i + 1);
    if (scanf("%f", &nota) != 1) {
        printf("Entrada invalida para a nota.\n");
        return 1;
    }
    soma += nota;
}

media = soma / n;

printf("Aluno: %s\n", nome);
printf("Media: %.2f\n", media);

return 0;
}

Exercícios relacionados