Riepilogo: struct dei dati dello studente
Fa parte della sezione Logica e flusso del percorso C di Coddy. Lezione 43 di 63.
Sfida
FacileCrea un programma C che mostri il flusso di lavoro completo dell’uso delle struct con un sistema di gestione degli studenti. Il programma deve:
- Definire una
structchiamataStudentcon i seguenti membri:- Un intero
idper memorizzare il numero ID dello studente - Un float
gradeper memorizzare il voto dello studente
- Un intero
- Nella funzione main, creare una variabile
Studentchiamatastudent1 - Leggere l’ID e il voto dello studente dall’input usando
scanf:- Leggere un intero per l’ID e memorizzarlo in
student1.id - Leggere un float per il voto e memorizzarlo in
student1.grade
- Leggere un intero per l’ID e memorizzarlo in
- Dopo aver letto l’input, eseguire le seguenti operazioni di convalida e calcolo:
- Se il voto è maggiore di 100.0, impostarlo a 100.0
- Se il voto è minore di 0.0, impostarlo a 0.0
- Calcolare un voto bonus aggiungendo 5.0 al voto corrente (dopo la convalida)
- Se il voto bonus supera 100.0, impostare il voto bonus a 100.0
- Stampare le informazioni dello studente in questo formato esatto:
Student Information:ID: [id]Original Grade: [grade]Bonus Grade: [bonus_grade]Grade Status: [status]
- Determinare lo stato del voto come segue:
- Se il voto originale è pari o superiore a 90.0:
Excellent - Se il voto originale è compreso tra 80.0 e 89.9:
Good - Se il voto originale è compreso tra 70.0 e 79.9:
Average - Se il voto originale è inferiore a 70.0:
Needs Improvement
- Se il voto originale è pari o superiore a 90.0:
Questa sfida verifica la tua comprensione della definizione di struct, della creazione di variabili, dell’accesso ai membri usando l’operatore punto, della gestione dell’input con scanf e della logica condizionale per la convalida e l’elaborazione dei dati. Ti eserciterai nel flusso di lavoro completo per lavorare con le struct in uno scenario pratico.
Provalo tu
#include <stdio.h>
// TODO: Define aquí la estructura Student
int main() {
// TODO: Crea una variable Student llamada student1
// Lee la entrada
int id;
float grade;
scanf("%d", &id);
scanf("%f", &grade);
// TODO: Almacena los valores de entrada en los miembros de la estructura
// TODO: Implementa la validación de la nota y el cálculo de la bonificación
// TODO: Determina el estado de la nota
// Muestra los resultados
printf("Student Information:\n");
printf("ID: %d\n", /* TODO: imprime el ID del estudiante */);
printf("Original Grade: %.1f\n", /* TODO: imprime la nota original */);
printf("Bonus Grade: %.1f\n", /* TODO: imprime la nota con bonificación */);
printf("Grade Status: %s\n", /* TODO: imprime el estado de la nota */);
return 0;
}Tutte le lezioni di Logica e flusso
1Fondamenti dei puntatori
Che cos’è un puntatore?Dichiarare i puntatoriL’operatore di indirizzo (&)L’operatore di dereferenziazione (*)Puntatori NULLRiepilogo: nozioni di base sui puntatori4Progetto: Utility di testo semplice
Panoramica del progettoConteggio dei caratteri7Strutture (struct)
Che cos'è una struct?Dichiarare una structCreare variabili structAccedere ai membri di una structInizializzare le structRiepilogo: struct dei dati dello studente2Puntatori e array
I nomi degli array come puntatoriElementi degli array e puntatoriAritmetica dei puntatoriConfrontare i puntatoriRiepilogo: attraversamento di un array con i puntatori5Puntatori e funzioni
Passaggio per valorePassare puntatori alle funzioniModificare le variabili tramite puntatoriUn esempio classico: scambiare valoriPassare array alle funzioniRiepilogo: argomenti puntatore nelle funzioni3Array di caratteri e stringhe
Stringhe come array di charIl terminatore nullInput di stringhe con scanfUso di strlen()Uso di strcpy()Uso di strcat()Uso di strcmp()Riepilogo: funzioni di base per le stringhe6Gestione della memoria
Memoria Stack vs. HeapAllocazione dinamica - malloc()Usare sizeof() per l'allocazioneVerificare il fallimento dell'allocazioneLiberare la memoria con free()Allocare con calloc()Riepilogo: array dinamico9Progetto: Inserimento semplice di un contatto
Progetto: Definire una struct ContattoFunzione per creare un contattoEsercitati da solo: Compilatore C online