Ces exercices couvre des concepts de base tels que les structures, les pointeurs, les tableaux et les fonctions. En plus, la création, l’insertion, la suppression et l’affichage de listes chaînées en langage C.
Partie 1: Déclarations de Structures (20 points)
Question 1 (5 points):
Déclarez une structure nommée Personne
qui a les champs suivants :
- Nom (chaîne de caractères)
- Âge (entier)
- Taille (float)
Question 2 (5 points):
Déclarez une structure nommée Point
représentant un point dans un espace en deux dimensions avec les champs x
et y
de type entier.
Question 3 (5 points):
Déclarez une structure nommée Rectangle
qui a deux champs de type Point
représentant les coins supérieur gauche et inférieur droit du rectangle.
Question 4 (5 points):
Déclarez une structure nommée Etudiant
qui hérite de la structure Personne
et ajoute un champ moyenne
de type float.
Partie 2: Utilisation des Structures (30 points)
Question 5 (10 points):
Écrivez un programme en C qui utilise la structure Personne
pour créer deux instances de personnes, les initialise avec des valeurs et les affiche.
Question 6 (10 points):
Écrivez une fonction en C qui prend une structure Rectangle
en tant que paramètre et calcule la superficie du rectangle. Utilisez cette fonction dans un programme pour calculer la superficie d’un rectangle donné.
Question 7 (10 points):
Écrivez un programme en C qui utilise la structure Etudiant
pour créer une liste d’étudiants, initialisez-les avec des valeurs et affichez la moyenne de chaque étudiant.
Partie 3: Pointeurs et Structures (20 points)
Question 8 (10 points):
Écrivez une fonction en C qui prend en entrée un pointeur vers une structure Personne
et modifie l’âge de cette personne. Utilisez cette fonction pour mettre à jour l’âge d’une personne donnée dans un programme.
Question 9 (10 points):
Écrivez un programme en C qui utilise la structure Rectangle
et des pointeurs pour créer dynamiquement un rectangle, l’initialise avec des valeurs et affiche sa superficie.
Partie 4: Tableaux de Structures (20 points)
Question 10 (10 points):
Déclarez un tableau de structures Point
pour représenter les coordonnées de 5 points dans un espace en deux dimensions. Initialisez les points avec des valeurs et affichez-les.
Question 11 (10 points):
Écrivez une fonction en C qui prend un tableau de structures Personne
et détermine l’âge moyen des personnes dans le tableau.
Partie 5: Listes Chaînées (30 points)
Question 12 (10 points):
Déclarez une structure Element
qui contient un entier (valeur
) et un pointeur vers la structure Element
suivante. Cette structure représentera un élément d’une liste chaînée.
Question 13 (10 points):
Écrivez une fonction en C qui prend une valeur en entrée et crée un nouvel élément de liste chaînée avec cette valeur. La fonction doit retourner un pointeur vers le nouvel élément.
Question 14 (10 points):
Écrivez une fonction en C qui prend un pointeur vers le début d’une liste chaînée et une valeur, et insère un nouvel élément avec cette valeur au début de la liste.
Question 15 (10 points):
Écrivez une fonction en C qui prend un pointeur vers le début d’une liste chaînée et affiche toutes les valeurs dans la liste.
Question 16 (10 points):
Écrivez une fonction en C qui prend un pointeur vers le début d’une liste chaînée et supprime le premier élément de la liste.
Question 17 (10 points):
Écrivez un programme en C qui utilise toutes les fonctions précédentes pour créer, manipuler et afficher une liste chaînée d’entiers.
Solution
Exercice 1:
Question 1:
// Déclaration de la structure Personne
struct Personne {
char nom[50];
int age;
float taille;
};
Exercice 2:
Question 2:
// Déclaration de la structure Point
struct Point {
int x;
int y;
};
Exercice 3:
Question 3:
// Déclaration de la structure Rectangle avec deux points représentant les coins supérieur gauche et inférieur droit
struct Rectangle {
struct Point coinSuperieurGauche;
struct Point coinInferieurDroit;
};
Exercice 4:
Question 4:
// Déclaration de la structure Etudiant héritant de Personne
struct Etudiant {
struct Personne personne;
float moyenne;
};
Exercice 5:
Question 5:
#include <stdio.h>
int main() {
// Utilisation de la structure Personne
struct Personne personne1 = {"Alice", 25, 1.75};
struct Personne personne2 = {"Bob", 30, 1.80};
// Affichage des informations
printf("Personne 1 - Nom: %s, Age: %d, Taille: %.2f\n", personne1.nom, personne1.age, personne1.taille);
printf("Personne 2 - Nom: %s, Age: %d, Taille: %.2f\n", personne2.nom, personne2.age, personne2.taille);
return 0;
}
Question 6 :
#include <stdio.h>
// Déclaration de la structure Rectangle
struct Rectangle {
float longueur;
float largeur;
};
// Fonction pour calculer la superficie d'un rectangle
float calculerSuperficie(struct Rectangle* rect) {
return rect->longueur * rect->largeur;
}
int main() {
// Utilisation de la structure Rectangle
struct Rectangle monRectangle = {5.0, 3.0};
// Calcul de la superficie
float superficie = calculerSuperficie(&monRectangle);
// Affichage du résultat
printf("Superficie du rectangle : %.2f\n", superficie);
return 0;
}
Question 7 :
#include <stdio.h>
// Déclaration de la structure Personne
struct Personne {
char nom[50];
int age;
float taille;
};
// Déclaration de la structure Etudiant héritant de Personne
struct Etudiant {
struct Personne personne;
float moyenne;
};
int main() {
// Création d'une liste d'étudiants
struct Etudiant listeEtudiants[3];
// Initialisation des étudiants avec des valeurs fictives
listeEtudiants[0].personne.age = 20;
listeEtudiants[0].moyenne = 15.5;
listeEtudiants[1].personne.age = 22;
listeEtudiants[1].moyenne = 18.0;
listeEtudiants[2].personne.age = 21;
listeEtudiants[2].moyenne = 14.0;
// Affichage de la moyenne de chaque étudiant
for (int i = 0; i < 3; i++) {
printf("Étudiant %d - Âge: %d, Moyenne: %.2f\n", i + 1, listeEtudiants[i].personne.age, listeEtudiants[i].moyenne);
}
return 0;
}
Question 8 :
#include <stdio.h>
// Déclaration de la structure Personne
struct Personne {
int age;
};
// Fonction pour modifier l'âge à l'aide d'un pointeur
void modifierAge(struct Personne* personne, int nouvelAge) {
personne->age = nouvelAge;
}
int main() {
// Utilisation de la structure Personne
struct Personne personne1 = {25};
// Appel de la fonction pour modifier l'âge
modifierAge(&personne1, 30);
// Affichage du nouvel âge
printf("Nouvel âge : %d\n", personne1.age);
return 0;
}
Question 9 (10 points):
#include <stdio.h>
#include <stdlib.h>
// Déclaration de la structure Rectangle
struct Rectangle {
float longueur;
float largeur;
};
// Fonction pour créer dynamiquement un rectangle
struct Rectangle* creerRectangle(float longueur, float largeur) {
struct Rectangle* nouveauRectangle = (struct Rectangle*)malloc(sizeof(struct Rectangle));
if (nouveauRectangle != NULL) {
nouveauRectangle->longueur = longueur;
nouveauRectangle->largeur = largeur;
}
return nouveauRectangle;
}
int main() {
// Utilisation de la structure Rectangle avec des pointeurs
struct Rectangle* monRectangle = creerRectangle(6.0, 4.0);
// Vérification si la création a réussi
if (monRectangle != NULL) {
// Calcul de la superficie
float superficie = monRectangle->longueur * monRectangle->largeur;
// Affichage du résultat
printf("Superficie du rectangle : %.2f\n", superficie);
// Libération de la mémoire allouée dynamiquement
free(monRectangle);
} else {
printf("Échec de création du rectangle.\n");
}
return 0;
}
Question 10 :
#include <stdio.h>
// Déclaration de la structure Point
struct Point {
int x;
int y;
};
int main() {
// Déclaration et initialisation d'un tableau de structures Point
struct Point tableauPoints[5] = {{1, 2}, {3, 4}, {5, 6}, {7, 8}, {9, 10}};
// Affichage des coordonnées des points
for (int i = 0; i < 5; i++) {
printf("Point %d - Coordonnées : (%d, %d)\n", i + 1, tableauPoints[i].x, tableauPoints[i].y);
}
return 0;
}