Recapitulação: Struct de Dados de Aluno
Parte da seção Logic & Flow do Journey de C da Coddy — lição 43 de 63.
Desafio
FácilCrie um programa em C que demonstre o fluxo de trabalho completo do uso de structs com um sistema de gerenciamento de estudantes. Seu programa deve:
- Definir uma
structchamadaStudentcom os seguintes membros:- Um inteiro
idpara armazenar o número de identificação do estudante - Um float
gradepara armazenar a nota do estudante
- Um inteiro
- Na função main, crie uma variável
Studentchamadastudent1 - Leia o ID e a nota do estudante da entrada usando
scanf:- Leia um inteiro para o ID e armazene-o em
student1.id - Leia um float para a nota e armazene-o em
student1.grade
- Leia um inteiro para o ID e armazene-o em
- Após ler a entrada, realize a seguinte validação e cálculos:
- Se a nota for maior que 100.0, defina-a como 100.0
- Se a nota for menor que 0.0, defina-a como 0.0
- Calcule uma nota bônus adicionando 5.0 à nota atual (após a validação)
- Se a nota bônus exceder 100.0, defina a nota bônus como 100.0
- Imprima as informações do estudante neste formato exato:
Student Information:ID: [id]Original Grade: [grade]Bonus Grade: [bonus_grade]Grade Status: [status]
- O status da nota deve ser determinado da seguinte forma:
- Se a nota original for 90.0 ou superior:
Excellent - Se a nota original for de 80.0 a 89.9:
Good - Se a nota original for de 70.0 a 79.9:
Average - Se a nota original for inferior a 70.0:
Needs Improvement
- Se a nota original for 90.0 ou superior:
Este desafio testa sua compreensão da definição de struct, criação de variáveis, acesso a membros usando o operador ponto, manipulação de entrada com scanf e lógica condicional para validação e processamento de dados. Você praticará o fluxo de trabalho completo de trabalhar com structs em um cenário prático.
Experimente você mesmo
#include <stdio.h>
// TODO: Defina a struct Student aqui
int main() {
// TODO: Crie uma variável Student chamada student1
// Ler entrada
int id;
float grade;
scanf("%d", &id);
scanf("%f", &grade);
// TODO: Armazene os valores de entrada nos membros da struct
// TODO: Implemente a validação da nota e o cálculo do bônus
// TODO: Determine o status da nota
// Exibir os resultados
printf("Student Information:\n");
printf("ID: %d\n", /* TODO: imprimir o ID do estudante */);
printf("Original Grade: %.1f\n", /* TODO: imprimir a nota original */);
printf("Bonus Grade: %.1f\n", /* TODO: imprimir a nota com bônus */);
printf("Grade Status: %s\n", /* TODO: imprimir o status da nota */);
return 0;
}Todas as lições de Logic & Flow
1Fundamentos de Ponteiros
O que é um Ponteiro?Declarando PonteirosO Operador de Endereço (&)O Operador de Desreferência (*)Ponteiros NULLRecapitulação: Fundamentos de Ponteiros4Projeto: Utilitário de Texto Simples
Visão Geral do ProjetoContando Caracteres7Estruturas (structs)
O que é uma Struct?Declarando uma StructCriando Variáveis de StructAcessando Membros de uma StructInicializando StructsRecapitulação: Struct de Dados de Aluno2Ponteiros e Arrays
Nomes de Arrays como PonteirosElementos de Array - PonteirosAritmética de PonteirosComparando PonteirosRecapitulação: Percorrendo Arrays com Ponteiros5Ponteiros e Funções
Passagem por ValorPassando Ponteiros para FunçõesModificando Variáveis via PonteirosUm Exemplo Clássico: SwapPassando Arrays para FunçõesRecapitulação: Ponteiros como Argumentos3Arrays de Caracteres e Strings
Strings como Arrays de charO Terminador NuloEntrada de Strings com scanfUsando strlen()Usando strcpy()Usando strcat()Usando strcmp()Recapitulação: Funções Básicas de Strings6Gerenciamento de Memória
Memória Stack vs. HeapAlocação Dinâmica - malloc()Usando sizeof() para AlocaçãoVerificando Falhas de AlocaçãoLiberando Memória com free()Alocando com calloc()Recapitulação: Array Dinâmico9Projeto: Cadastro Simples de Contatos
Projeto: Definir a Struct de ContatoFunção para Criar um Contato