Programmation Structurée 1- L1 GE
Chapitre 1 : Introduction au langage C
1. Historique et Caractéristiques du Langage C
Origine : Créé par Dennis Ritchie en 1972 pour développer le système d'exploitation
UNIX.
Caractéristiques :
o Langage de bas niveau, proche du matériel (hardware).
o Portable : peut être compilé et exécuté sur presque n'importe quel type de
machine.
o Efficace et performant : utilisé pour des systèmes d'exploitation, des pilotes de
périphériques, des jeux vidéo, etc.
2. Structure de Base d’un Programme en C
Un programme en C commence avec la fonction principale main() et peut inclure plusieurs
fonctions définies par l'utilisateur.
Exemple simple :
#include <stdio.h> : Inclut la bibliothèque standard d’entrée/sortie.
int main() : Déclaration de la fonction principale du programme, point d'entrée.
printf() : Fonction pour afficher un message.
return 0; : Renvoie une valeur à l'OS, indiquant que le programme s’est terminé
correctement.
Mme. Imen AZZOUZ 1
Programmation Structurée 1- L1 GE
3. Opérateurs
Opérateurs arithmétiques : +, -, *, /, % (modulo).
Opérateurs de comparaison : ==, !=, <, >, <=, >=.
Opérateurs logiques : && (ET logique), || (OU logique), ! (NON logique).
4. Mots-clés
Les mots-clés (ou keywords) sont des termes réservés qui ont une signification particulière et
sont utilisés pour effectuer des tâches spécifiques dans le programme. Ces mots ne peuvent
pas être utilisés comme noms de variables, de fonctions ou d'autres identificateurs. Voici une
liste des principaux mots-clés du langage C :
4.1. Types de données
int : Déclare une variable de type entier.
float : Déclare une variable de type nombre à virgule flottante (précision simple).
double : Déclare une variable de type nombre à virgule flottante (précision double).
char : Déclare une variable de type caractère.
void : Spécifie qu’une fonction ne retourne pas de valeur ou qu’une fonction n’a pas
de paramètre.
long : Modifie le type de données pour augmenter la capacité des entiers.
short : Modifie le type de données pour réduire la capacité des entiers.
signed : Indique qu'un entier ou un caractère peut être négatif ou positif.
unsigned : Indique qu'un entier ou un caractère ne peut être que positif (ou nul).
Exemple de déclaration de variables
4.2. Contrôle de flux
if : Introduit une condition dans un programme.
Mme. Imen AZZOUZ 2
Programmation Structurée 1- L1 GE
else : Fournit une alternative si la condition if est fausse.
switch : Permet de choisir entre plusieurs blocs de code en fonction de la valeur d’une
variable.
case : Marque un cas spécifique dans une instruction switch.
default : Définit le cas par défaut dans une instruction switch.
for : Boucle qui répète un bloc de code un nombre défini de fois.
while : Boucle qui répète un bloc de code tant qu’une condition est vraie.
do : Boucle similaire à while mais la condition est vérifiée après l'exécution du bloc
de code.
break : Interrompt immédiatement une boucle ou un switch.
continue : Saute directement à l'itération suivante dans une boucle.
return : Quitte une fonction et retourne une valeur.
4.3. Fonctions et blocs
void : Spécifie qu’une fonction ne renvoie pas de valeur.
return : Indique la valeur qu’une fonction renvoie.
4.4. Opérateurs logiques et relationnels
sizeof : Renvoie la taille en octets d'une variable ou d'un type de données.
typedef : Donne un nouveau nom à un type de données.
const : Définit une variable dont la valeur ne peut pas être modifiée après
l'initialisation.
volatile : Indique au compilateur qu'une variable peut changer de manière
imprévisible (ex. à cause d'interruptions matérielles).
5. Les variables en langage C
Les variables en langage C sont des emplacements en mémoire permettant de stocker des
données. Chaque variable a un type spécifique qui détermine la nature des données qu'elle
peut contenir, ainsi que la taille de mémoire qu'elle occupe. Voici un guide détaillé sur le
Avant d'utiliser une variable, il faut la déclarer, c'est-à-dire lui attribuer un type et un nom
Mme. Imen AZZOUZ 3
Programmation Structurée 1- L1 GE
Syntaxe
type nom_de_variable;
Exemple :
int nombre; // Déclare une variable de type entier
float pi; // Déclare une variable de type flottant
Règles de nommage des variables
En C, les noms de variables doivent suivre certaines règles :
Ils doivent commencer par une lettre ou un trait de soulignement ( _).
Ils ne doivent contenir que des lettres, des chiffres ou des traits de soulignement.
Ils ne peuvent pas être des mots réservés du langage C (comme int, return, etc.).
Ils sont sensibles à la casse (majuscule/minuscule).
Exemples de noms valides :
int age; // Valide
float _taille; // Valide
char lettre_A; // Valide
6. Types de données principales
Les types simples sont les suivants :
int : Entier standard
long : entier long
float : réel
double : réel long
char: caractère
Mme. Imen AZZOUZ 4
Programmation Structurée 1- L1 GE
void: Absence de type
Exemples :
int age = 20; // Entier
float temperature = 36.6; // Décimal
double pi = 3.14159; // Double précision
char lettre = 'A'; // Caractère
Modificateurs de type
Il existe deux modificateurs de type :
signé
non signé
Exemples :
unsigned int positif = 100; // Entier non signé, uniquement positif
long int grand_nombre = 100000; // Entier long
7. Définition de constantes
En C, les variables peuvent être déclarées comme constantes en utilisant le mot-clé const.
Une constante ne peut pas être modifiée après avoir été initialisée.
Exemple :
const int jours_dans_semaine = 7; // Constante, ne peut pas être modifiée
En C, les constantes peuvent aussi définis grace à la directive #define
Mme. Imen AZZOUZ 5
Programmation Structurée 1- L1 GE
Exemple :
#define Pi 3.1415927
8. Conversion de type (Casting)
Parfois, vous aurez besoin de convertir une variable d'un type en un autre. Cela peut se faire
avec le casting en C.
Exemple :
int a = 5;
float b = (float) a; // Convertit l'entier a en float
En C, lire et écrire des données se fait principalement à l'aide des fonctions d'entrée/sortie.
Voici un aperçu des concepts et des fonctions clés pour la lecture et l'écriture
9. Fonctions d'écriture (affichage) et de lecture en C
La bibliothèque <stdio> contient un ensemble de fonctions qui assure la communication de la
machine avec le monde extérieur.
Fonction d'écriture :
La fonction printf en C est utilisée pour afficher du texte ou des données à l'écran. Elle fait
partie de la bibliothèque standard d'entrée/sortie (bibliothèque stdio.h).
Syntaxe :
printf(<format>, <expr1>,<expr2>,…)
Spécificateurs de format courants :
%d : Entier (int)
%f : Nombre flottant (float, double)
%c : Caractère (char)
%s : Chaîne de caractères (string)
Mme. Imen AZZOUZ 6
Programmation Structurée 1- L1 GE
%x : Nombre en hexadécimal
%% : Pour afficher un pourcentage littéral %
Exemple :
#include <stdio.h>
int main() {
int age = 25;
float taille = 1.75;
printf("J'ai %d ans et je mesure %.2f mètres.\n", age, taille);
return 0;
Sortie :
J'ai 25 ans et je mesure 1.75 mètres.
Dans cet exemple, %d est utilisé pour afficher l'âge (entier), et %.2f est utilisé pour afficher la
taille (nombre flottant avec 2 décimales).
Fonction de lecture :
La fonction scanf en C est utilisée pour lire des données depuis l'entrée standard
(généralement le clavier) et les stocker dans des variables. Elle fait partie de la bibliothèque
standard d'entrée/sortie <stdio.h>, tout comme printf.
Exemple :
#include <stdio.h>
int main() {
int age;
Mme. Imen AZZOUZ 7
Programmation Structurée 1- L1 GE
float taille;
printf("Entrez votre âge : ");
scanf("%d", &age); // Lire un entier et le stocker dans 'age'
printf("Entrez votre taille (en mètres) : ");
scanf("%f", &taille); // Lire un nombre flottant et le stocker dans 'taille'
printf("Vous avez %d ans et vous mesurez %.2f mètres.\n", age, taille);
return 0;
Explication :
1. scanf("%d", &age); : Ici, %d spécifie que la fonction attend un entier, et &age est
l'adresse de la variable où cet entier sera stocké.
2. scanf("%f", &taille); : %f indique que la fonction attend un nombre flottant, et
&taille est l'adresse de la variable qui stockera la taille.
Important : Lorsque vous utilisez scanf, assurez-vous d'utiliser le bon spécificateur de format
et de passer l'adresse des variables, sinon vous risquez d'obtenir des résultats incorrects ou un
comportement indéfini.
Mme. Imen AZZOUZ 8
Programmation Structurée 1- L1 GE
Chapitre 2 : Les structures conditionnelles
1. Introduction
En C, les structures conditionnelles permettent de contrôler le flux d'exécution du programme
en fonction de certaines conditions. Les instructions conditionnelles les plus couramment
utilisées sont if, else, else if, et switch.
2. Instruction if
L'instruction if permet d'exécuter un bloc de code uniquement si une condition donnée est
vraie.
Syntaxe :
if (condition) {
// Bloc de code exécuté si la condition est vraie
Exemple :
#include <stdio.h>
int main() {
int age = 20;
if (age >= 18) {
printf("Vous êtes majeur.\n");
return 0;
3. Instruction if...else
L'instruction if...else permet d'exécuter un bloc de code si la condition est vraie, et un
Mme. Imen AZZOUZ 1
Programmation Structurée 1- L1 GE
autre bloc de code si la condition est fausse.
Syntaxe :
if (condition) {
// Bloc de code exécuté si la condition est vraie
} else {
// Bloc de code exécuté si la condition est fausse
Exemple :
#include <stdio.h>
int main() {
int age = 16;
if (age >= 18) {
printf("Vous êtes majeur.\n");
} else {
printf("Vous êtes mineur.\n");
return 0;
4. Instruction if...else if...else
Cette structure permet d'évaluer plusieurs conditions successives. Si une des conditions est
vraie, le bloc correspondant est exécuté. Si aucune condition n'est vraie, le bloc else est
exécuté.
Mme. Imen AZZOUZ 2
Programmation Structurée 1- L1 GE
Syntaxe :
if (condition1) {
// Bloc de code exécuté si la condition1 est vraie
} else if (condition2) {
// Bloc de code exécuté si la condition2 est vraie
} else {
// Bloc de code exécuté si aucune des conditions n'est
vraie
}
Exemple :
#include <stdio.h>
int main() {
int note = 75;
if (note >= 90) {
printf("Note excellente.\n");
} else if (note >= 75) {
printf("Bonne note.\n");
} else if (note >= 50) {
printf("Note passable.\n");
} else {
printf("Échec.\n");
return 0;
Mme. Imen AZZOUZ 3
Programmation Structurée 1- L1 GE
5. Instruction switch
L'instruction switch est utilisée lorsque vous voulez comparer une même variable à plusieurs
valeurs possibles. Cela permet une alternative plus lisible à plusieurs blocs if...else if.
Syntaxe :
switch (expression) {
case valeur1:
// Bloc de code exécuté si expression == valeur1
break; // Sortir du switch
case valeur2:
// Bloc de code exécuté si expression == valeur2
break; // Sortir du switch
default:
// Bloc de code exécuté si aucune des valeurs n'est
égale à l'expression
Exemple :
#include <stdio.h>
int main() {
int jour = 3;
switch (jour) {
case 1:
printf("Lundi\n");
break;
Mme. Imen AZZOUZ 4
Programmation Structurée 1- L1 GE
case 2:
printf("Mardi\n");
break;
case 3:
printf("Mercredi\n");
break;
case 4:
printf("Jeudi\n");
break;
case 5:
printf("Vendredi\n");
break;
case 6:
printf("Samedi\n");
break;
case 7:
printf("Dimanche\n");
break;
default:
printf("Jour invalide\n");
return 0; }
Mme. Imen AZZOUZ 5
Programmation Structurée 1- L1 GE
5. Opérateur ternaire
L'opérateur ternaire est une structure conditionnelle courte qui permet de remplacer un
if...else simple.
Syntaxe :
condition ? expression_si_vrai : expression_si_faux;
Exemple :
#include <stdio.h>
int main() {
int age = 20;
age >= 18 ? printf("Vous êtes majeur.\n") : printf("Vous êtes mineur.\n");
return 0;
6. Priorité des opérateurs relationnels et logiques
Les conditions sont souvent basées sur des opérateurs relationnels et logiques. Voici les
principaux :
Opérateurs relationnels :
o == : Égal à
o != : Différent de
o < : Inférieur à
o > : Supérieur à
o <= : Inférieur ou égal à
o >= : Supérieur ou égal à
Opérateurs logiques :
o && : ET logique (vrai si les deux conditions sont vraies)
o || : OU logique (vrai si au moins une des conditions est vraie)
o ! : NON logique (inverse le résultat de la condition)
Mme. Imen AZZOUZ 6
Programmation Structurée 1- L1 GE
Exemple :
#include <stdio.h>
int main() {
int a = 5, b = 10, c = 15;
if (a < b && b < c) {
printf("a est plus petit que b et b est plus petit que c\n");
return 0;
Conclusion
Les structures conditionnelles en C sont essentielles pour créer des programmes interactifs
capables de prendre des décisions. Elles permettent de modifier l'exécution du programme en
fonction de conditions spécifiques et sont utilisées pour résoudre de nombreux types de
problèmes dans la programmation.
Mme. Imen AZZOUZ 7
Programmation Structurée 1- L1 GE
Chapitre 3 : Les structures itératives
1. Introduction
Les structures itératives (ou boucles) en C permettent de répéter l'exécution d'un bloc de
code plusieurs fois. Il existe trois structures principales de boucles en C : la boucle for, la
boucle while et la boucle do...while.
1. Boucle for
La boucle for est utilisée lorsque vous savez à l'avance combien de fois vous souhaitez
exécuter un bloc de code. Elle est souvent utilisée lorsque l'on doit parcourir une plage de
valeurs.
Syntaxe :
for (initialisation; condition; incrémentation) {
// Bloc de code à exécuter
initialisation : La variable de contrôle de boucle est initialisée ici. Cette étape est exécutée
une seule fois au début de la boucle.
condition : La boucle continue de s'exécuter tant que cette condition est vraie. Si la
condition est fausse, la boucle s'arrête.
incrémentation : C'est ici que la variable de contrôle est modifiée après chaque itération
(incrémentée ou décrémentée).
Exemple :
#include <stdio.h>
int main() {
// Afficher les nombres de 1 à 5
for (int i = 1; i <= 5; i++) {
Mme. Imen AZZOUZ 1
Programmation Structurée 1- L1 GE
printf("%d\n", i);
return 0;
Explication :
La variable i est initialisée à 1.
Tant que i est inférieur ou égal à 5, le bloc de code est exécuté.
Après chaque itération, i est incrémenté de 1.
2. Boucle while
La boucle while est utilisée lorsqu'on ne sait pas à l'avance combien de fois le bloc de code
doit être exécuté. La condition est vérifiée avant chaque itération.
Syntaxe :
while (condition) {
// Bloc de code à exécuter
La condition est évaluée avant chaque itération. Si elle est vraie, le bloc de code est exécuté,
sinon la boucle s'arrête.
Exemple :
#include <stdio.h>
int main() {
int i = 1;
// Afficher les nombres de 1 à 5
while (i <= 5) {
printf("%d\n", i);
Mme. Imen AZZOUZ 2
Programmation Structurée 1- L1 GE
i++; // Incrémentation de i
return 0;
Explication :
La variable i est initialisée à 1.
Tant que i est inférieur ou égal à 5, le bloc de code s'exécute et i est incrémenté à
chaque tour.
3. Boucle do...while
La boucle do...while est similaire à la boucle while, à la différence près que la condition
est vérifiée après l'exécution du bloc de code. Cela garantit que le bloc de code est exécuté au
moins une fois.
Syntaxe :
do {
// Bloc de code à exécuter
} while (condition);
Le bloc de code est exécuté au moins une fois, puis la condition est vérifiée.
Exemple :
#include <stdio.h>
int main() {
int i = 1;
// Afficher les nombres de 1 à 5
do {
printf("%d\n", i);
Mme. Imen AZZOUZ 3
Programmation Structurée 1- L1 GE
i++; // Incrémentation de i
} while (i <= 5);
return 0;
Explication :
La variable i est initialisée à 1.
Le bloc de code est exécuté une première fois, puis i est incrémenté et la condition est
vérifiée à chaque tour.
La boucle continue tant que i est inférieur ou égal à 5.
4. Instruction break
L'instruction break permet de sortir immédiatement d'une boucle, même si la condition n'est
pas remplie. Elle est souvent utilisée dans des situations où une condition particulière est
rencontrée à l'intérieur de la boucle.
Exemple :
#include <stdio.h>
int main() {
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break; // Sortir de la boucle si i est égal à 5
printf("%d\n", i);
Mme. Imen AZZOUZ 4
Programmation Structurée 1- L1 GE
return 0;
5. Instruction continue
L'instruction continue permet de passer immédiatement à l'itération suivante d'une boucle,
sans exécuter le reste du code dans le bloc de la boucle.
Exemple :
#include <stdio.h>
int main() {
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue; // Passer cette itération si i est égal à 3
printf("%d\n", i);
return 0;
Conclusion
Les structures itératives en C permettent de répéter des blocs de code de manière contrôlée.
Les boucles for, while, et do...while sont adaptées à différentes situations : quand vous
connaissez le nombre d'itérations (for), quand la condition est dépendante d'un événement
(while), ou quand une action doit être effectuée au moins une fois (do...while).
Mme. Imen AZZOUZ 5
Programmation Structurée 1- L1 GE
Chapitre 4 : Les tableaux
1. Introduction
Les tableaux en C sont des structures de données qui permettent de stocker plusieurs éléments
du même type (par exemple, des entiers, des flottants, des caractères) en utilisant une seule
variable.
2. Déclaration d'un tableau
Pour déclarer un tableau, on spécifie le type des éléments, le nom du tableau et sa taille entre
crochets [ ].
Exemple :
int tableau[5]; // Déclare un tableau de 5 entiers
3. Initialisation d'un tableau
Un tableau peut être initialisé lors de sa déclaration.
Exemple :
int tableau[5] = {1, 2, 3, 4, 5}; // Déclare et initialise un tableau d'entiers
Si on ne spécifie pas tous les éléments, les valeurs restantes seront initialisées à 0.
int tableau[5] = {1, 2}; // Les éléments non spécifiés seront initialisés à 0
// tableau[0] = 1, tableau[1] = 2, tableau[2] = 0, tableau[3] = 0, tableau[4] = 0
4. Accès aux éléments du tableau
Les éléments d'un tableau sont indexés à partir de 0. On accède à un élément en spécifiant son
index entre crochets [ ].
Exemple :
int val = tableau[2]; // Accède au troisième élément du tableau (index 2)
Mme. Imen AZZOUZ 1
Programmation Structurée 1- L1 GE
5. Modifier un élément du tableau
On peut modifier un élément du tableau en l'assignant directement.
Exemple :
tableau[1] = 10; // Modifie le deuxième élément du tableau (index 1) à 10
6. Boucles avec des tableaux
Il est courant d'utiliser des boucles pour parcourir un tableau, que ce soit pour afficher ses
éléments ou les modifier.
Exemple :
for (int i = 0; i < 5; i++) {
printf("%d\n", tableau[i]); // Affiche chaque élément du tableau
7. Tableaux multi-dimensionnels
On peut aussi déclarer des tableaux avec plus d'une dimension, comme des tableaux à deux
dimensions (souvent utilisés pour représenter des matrices).
Exemple :
int matrice[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; // Déclare une matrice 3x3
Pour accéder à un élément dans un tableau à deux dimensions :
int val = matrice[1][2]; // Accède à l'élément de la deuxième ligne, troisième colonne
Remarque :
doit être spécifiée à la déclaration.
Mme. Imen AZZOUZ 2
Programmation Structurée 1- L1 GE
8. Remplissage et affichage d’un tableau unidimensionnel (vecteur)
8.1. Remplissage manuel
On peut assigner des valeurs directement à chaque élément du tableau.
Exemple :
#include <stdio.h>
int main() {
int tableau[5];
// Remplissage manuel
tableau[0] = 10;
tableau[1] = 20;
tableau[2] = 30;
tableau[3] = 40;
tableau[4] = 50;
// Affichage des éléments
for(int i = 0; i < 5; i++) {
printf("tableau[%d] = %d\n", i, tableau[i]);
return 0;
8. 2. Remplissage avec une boucle (via l'utilisateur)
On peut aussi remplir un tableau à l'aide d'une boucle et demander à l'utilisateur de saisir les
valeurs.
Exemple :
#include <stdio.h>
Mme. Imen AZZOUZ 3
Programmation Structurée 1- L1 GE
int main() {
int tableau[5];
// Remplissage du tableau par l'utilisateur
for(int i = 0; i < 5; i++) {
printf("Entrez la valeur de tableau[%d]: ", i);
scanf("%d", &tableau[i]);
// Affichage des éléments du tableau
printf("Les valeurs du tableau sont : \n");
for(int i = 0; i < 5; i++) {
printf("tableau[%d] = %d\n", i, tableau[i]);
return 0;
8. 3. Remplissage avec des valeurs calculées
Si on souhaite remplir un tableau avec des valeurs générées par un calcul (par exemple, les
multiples de 2), tu peux utiliser une boucle pour générer et remplir automatiquement le
tableau.
Exemple :
#include <stdio.h>
int main() {
int tableau[5];
// Remplissage avec des valeurs calculées (ici des multiples de 2)
for(int i = 0; i < 5; i++) {
tableau[i] = (i + 1) * 2; // Valeurs : 2, 4, 6, 8, 10
Mme. Imen AZZOUZ 4
Programmation Structurée 1- L1 GE
// Affichage des éléments du tableau
printf("Les valeurs du tableau sont : \n");
for(int i = 0; i < 5; i++) {
printf("tableau[%d] = %d\n", i, tableau[i]);
return 0;
9. Remplissage et affichage d'un tableau bidimensionnel
En C, un tableau bidimensionnel est souvent utilisé pour représenter des matrices ou des
grilles. Pour remplir et afficher un tableau bidimensionnel, on peut utiliser des boucles
imbriquées.
9. 1. Remplissage manuel et affichage d'un tableau bidimensionnel
On peut remplir chaque élément du tableau en lui assignant une valeur spécifique
manuellement.
Exemple :
#include <stdio.h>
int main() {
int matrice[2][3]; // Déclaration d'une matrice 2x3
// Remplissage manuel
matrice[0][0] = 1;
matrice[0][1] = 2;
matrice[0][2] = 3;
matrice[1][0] = 4;
Mme. Imen AZZOUZ 5
Programmation Structurée 1- L1 GE
matrice[1][1] = 5;
matrice[1][2] = 6;
// Affichage de la matrice
printf("Affichage de la matrice :\n");
for(int i = 0; i < 2; i++) {
for(int j = 0; j < 3; j++) {
printf("%d ", matrice[i][j]);
printf("\n"); // Sauter une ligne après chaque ligne du tableau
return 0;
9.2. Remplissage et affichage avec une boucle (via l'utilisateur)
Si on veut remplir le tableau avec des valeurs fournies par l'utilisateur, tu peux utiliser des
boucles imbriquées.
Exemple :
#include <stdio.h>
int main() {
int matrice[2][3]; // Déclaration d'une matrice 2x3
// Remplissage de la matrice par l'utilisateur
for(int i = 0; i < 2; i++) {
for(int j = 0; j < 3; j++) {
printf("Entrez la valeur pour matrice[%d][%d] : ", i, j);
scanf("%d", &matrice[i][j]);
Mme. Imen AZZOUZ 6
Programmation Structurée 1- L1 GE
// Affichage de la matrice
printf("Affichage de la matrice :\n");
for(int i = 0; i < 2; i++) {
for(int j = 0; j < 3; j++) {
printf("%d ", matrice[i][j]);
printf("\n"); // Sauter une ligne après chaque ligne du tableau
return 0;
9.3. Remplissage avec des valeurs calculées
Il est possible de remplir un tableau bidimensionnel en générant les valeurs à partir d'un
calcul. Par exemple, tu peux remplir la matrice avec des multiples de 3.
Exemple :
#include <stdio.h>
int main() {
int matrice[2][3]; // Déclaration d'une matrice 2x3
int valeur = 1; // Initialisation d'une variable de départ
// Remplissage automatique avec des valeurs calculées
for(int i = 0; i < 2; i++) {
for(int j = 0; j < 3; j++) {
matrice[i][j] = valeur * 3; // Remplissage avec des multiples de 3
Mme. Imen AZZOUZ 7
Programmation Structurée 1- L1 GE
valeur++;
// Affichage de la matrice
printf("Affichage de la matrice :\n");
for(int i = 0; i < 2; i++) {
for(int j = 0; j < 3; j++) {
printf("%d ", matrice[i][j]);
printf("\n");
return 0;
Mme. Imen AZZOUZ 8
TD Programmation Structurée 1- L1 GE
Travail Dirigé N° 1
Exercice 1 : Calcul de la moyenne de trois nombres
Écrire un programme en C qui permet de lire trois nombres, puis de calculer et d'afficher leur
moyenne.
Exercice 2 : Inverser deux variables
Écrire un programme en C qui permet d'échanger les valeurs de deux variables entières.
Exercice 3 : Calcul du périmètre d'un rectangle
Écrire un programme en C qui permet de calculer et d'afficher le périmètre d’un rectangle à
partir de sa longueur et de sa largeur. La formule du périmètre est :
Périmètre=2×(longueur+largeur)
Exercice 4 : Conversion d'unités (Kilomètres en Miles)
Écrire un programme en C qui permet de convertir une distance donnée en kilomètres en
miles. La formule de conversion est la suivante :
Miles=Kilomètres×0.621371
Exercice 5 : Calcul du salaire net
Écrire un programme en C qui calcule le salaire net d'un employé. Le programme doit
demander à l'utilisateur le salaire brut et le pourcentage des taxes. La formule est :
Salaire net=Salaire brut−(Salaire brut×(Taxe/100))
Exercice 6 : Calcul de l'IMC (Indice de Masse Corporelle)
Écrire un programme en C qui permet de calculer l'IMC d'une personne. L'utilisateur doit
entrer la taille en mètres et le poids en kilogrammes.
La formule est : IMC=Poids/Taille2
Mme. Imen AZZOUZ 1
TD Programmation Structurée 1- L1 GE
Travail Dirigé N° 2
Exercice 1 : Trouver le maximum entre deux nombres
Écrire un programme en C qui permet de lire deux nombres entiers, puis d'afficher le plus
grand des deux.
Exercice 2 : Pair ou impair
Écrire un programme en C qui permet de vérifier si un nombre entier donné est pair ou
impair.
Exercice 3 : Vérifier la majorité
Écrire un programme en C qui vérifie si une personne est majeure ou mineure, sachant que
l'âge de la majorité est 18 ans.
Exercice 4 : Calculatrice simple avec switch
Écrire un programme en C qui agit comme une calculatrice simple. L'utilisateur doit entrer
deux nombres et une opération (+, -, *, /). Le programme affiche ensuite le résultat.
Exercice 5 : Vérification d'un caractère voyelle ou consonne
Écrire un programme en C qui lit un caractère et vérifie s'il s'agit d'une voyelle ou d'une
consonne.
Exercice 6 : Classer un nombre
Écrire un programme en C qui vérifie si un nombre entier est positif, négatif ou nul.
Exercice 7 : Vérification de la validité d'un triangle
Écrire un programme en C qui permet de vérifier si trois longueurs données peuvent former
un triangle. Pour qu'un triangle soit valide, la somme de deux côtés doit toujours être
supérieure au troisième côté.
Mme. Imen AZZOUZ 1
TD Programmation Structurée 1- L1 GE
Mme. Imen AZZOUZ 2
TD Programmation Structurée 1- L1 GE
Travail Dirigé N° 3
Exercice 1 : Calcul du maximum de trois nombres
Écrire un programme en C qui permet de lire trois nombres entiers, puis d'afficher le plus
grand.
Exercice 2 : Calcul de la factorielle
Écrire un programme en C qui calcule la factorielle d'un nombre entier donné par l'utilisateur.
Exercice 3 : Somme des N premiers nombres entiers
Écrire un programme en C qui calcule la somme des N premiers nombres entiers.
Exercice 4 : Trouver la somme des chiffres d'un nombre
Écrire un programme en C qui trouve la somme des chiffres d'un nombre donné.
Exercice 5 : Afficher les multiples de 3 et 5 entre 1 et 100
Écrire un programme en C qui affiche tous les nombres entre 1 et 100 qui sont des multiples
de 3 ou de 5.
Exercice 6 : Trouver le plus grand commun diviseur (PGCD)
Écrire un programme en C qui calcule le plus grand commun diviseur (PGCD) de deux
nombres.
Exercice 7 : Vérifier si un nombre est un nombre premier
Écrire un programme en C qui vérifie si un nombre donné est un nombre premier.
Exercice 8 : Affichage d'une table de multiplication
Écrire un programme en C qui affiche la table de multiplication d'un nombre donné.
Mme. Imen AZZOUZ 1
TD Programmation Structurée 1- L1 GE
Travail Dirigé N° 4
Exercice 1 : Recherche d'un élément dans un tableau
Écrire un programme en C qui permet de rechercher un élément dans un tableau
unidimensionnel de 10 entiers.
Exercice 2 : Somme des éléments d'une matrice
Écrire un programme en C qui permet de remplir une matrice 2x2, puis d'afficher la somme
de tous les éléments de cette matrice.
Exercice 3 : Inversion d'un tableau
Écrire un programme en C qui permet d'inverser les éléments d'un tableau unidimensionnel de
5 entiers.
Exercice 4 : Maximum d'un tableau
Écrire un programme en C qui trouve et affiche le plus grand élément dans un tableau.
Exercice 5 : Tri d'un tableau (Tri par sélection)
Écrire un programme en C qui trie les éléments d'un tableau d'entiers dans l'ordre croissant en
utilisant l'algorithme du tri par sélection.
Exercice 6 : Comptage des éléments pairs et impairs d'un tableau
Écrire un programme en C qui compte le nombre d'éléments pairs et impairs dans un tableau
d'entiers.
Exercice 7 : Somme des diagonales d'une matrice
Énoncé : Écrire un programme en C qui calcule la somme des éléments de la diagonale
principale et de la diagonale secondaire d'une matrice carrée de taille 3x3.
Mme. Imen AZZOUZ 1
TD Programmation Structurée 1- L1 GE
Mme. Imen AZZOUZ 2
Correction TD Programmation Structurée 1- L1 GE
Correction Travail Dirigé N° 1
Exercice 1 : Calcul de la moyenne de trois nombres
Énoncé : Écrire un programme en C qui permet de lire trois nombres, puis de calculer et
d'afficher leur moyenne.
Correction :
#include <stdio.h>
int main() {
float a, b, c, moyenne;
// Saisie des trois nombres
printf("Entrez le premier nombre : ");
scanf("%f", &a);
printf("Entrez le deuxième nombre : ");
scanf("%f", &b);
printf("Entrez le troisième nombre : ");
scanf("%f", &c);
// Calcul de la moyenne
moyenne = (a + b + c) / 3;
// Affichage de la moyenne
printf("La moyenne des trois nombres est : %.2f\n", moyenne);
return 0;
Exercice 2 : Inverser deux variables
Énoncé : Écrire un programme en C qui permet d'échanger les valeurs de deux variables
entières.
Correction :
#include <stdio.h>
Mme. Imen AZZOUZ 1
Correction TD Programmation Structurée 1- L1 GE
int main() {
int a, b, temp;
// Saisie des deux valeurs
printf("Entrez la valeur de a : ");
scanf("%d", &a);
printf("Entrez la valeur de b : ");
scanf("%d", &b);
// Affichage des valeurs avant l'échange
printf("Avant l'échange : a = %d, b = %d\n", a, b);
// Échange des valeurs
temp = a;
a = b;
b = temp;
// Affichage des valeurs après l'échange
printf("Après l'échange : a = %d, b = %d\n", a, b);
return 0;
Exercice 3 : Calcul du périmètre d'un rectangle
Énoncé : Écrire un programme en C qui permet de calculer et d'afficher le périmètre d’un
rectangle à partir de sa longueur et de sa largeur. La formule du périmètre est :
Périmètre=2×(longueur+largeur)
Correction :
#include <stdio.h>
int main() {
Mme. Imen AZZOUZ 2
Correction TD Programmation Structurée 1- L1 GE
float longueur, largeur, perimetre;
// Saisie de la longueur et de la largeur
printf("Entrez la longueur du rectangle : ");
scanf("%f", &longueur);
printf("Entrez la largeur du rectangle : ");
scanf("%f", &largeur);
// Calcul du périmètre
perimetre = 2 * (longueur + largeur);
// Affichage du périmètre
printf("Le périmètre du rectangle est : %.2f\n", perimetre);
return 0;
Exercice 4 : Conversion d'unités (Kilomètres en Miles)
Énoncé : Écrire un programme en C qui permet de convertir une distance donnée en
kilomètres en miles. La formule de conversion est la suivante :
Miles=Kilomètres×0.621371
Correction :
Mme. Imen AZZOUZ 3
Correction TD Programmation Structurée 1- L1 GE
#include <stdio.h>
int main() {
float kilometres, miles;
// Saisie de la distance en kilomètres
printf("Entrez la distance en kilomètres : ");
scanf("%f", &kilometres);
// Conversion en miles
miles = kilometres * 0.621371;
// Affichage du résultat
printf("%.2f kilomètres équivaut à %.2f miles.\n", kilometres, miles);
return 0;
Exercice 5 : Calcul du salaire net
Énoncé : Écrire un programme en C qui calcule le salaire net d'un employé. Le programme
doit demander à l'utilisateur le salaire brut et le pourcentage des taxes. La formule est :
Salaire net=Salaire brut−(Salaire brut×(Taxe/100))
Correction :
#include <stdio.h>
int main() {
float salaire_brut, taxe, salaire_net;
// Saisie du salaire brut et du pourcentage de taxe
printf("Entrez le salaire brut : ");
scanf("%f", &salaire_brut);
Mme. Imen AZZOUZ 4
Correction TD Programmation Structurée 1- L1 GE
printf("Entrez le pourcentage de taxe : ");
scanf("%f", &taxe);
// Calcul du salaire net
salaire_net = salaire_brut - (salaire_brut * taxe / 100);
// Affichage du salaire net
printf("Le salaire net est : %.2f\n", salaire_net);
return 0;
Exercice 6 : Calcul de l'IMC (Indice de Masse Corporelle)
Énoncé : Écrire un programme en C qui permet de calculer l'IMC d'une personne.
L'utilisateur doit entrer la taille en mètres et le poids en kilogrammes.
La formule est : IMC=Poids/Taille2
Correction :
#include <stdio.h>
int main() {
float poids, taille, imc;
// Saisie du poids et de la taille
printf("Entrez votre poids (en kg) : ");
scanf("%f", &poids);
printf("Entrez votre taille (en mètres) : ");
Mme. Imen AZZOUZ 5
Correction TD Programmation Structurée 1- L1 GE
scanf("%f", &taille);
// Calcul de l'IMC
imc = poids / (taille * taille);
// Affichage de l'IMC
printf("Votre IMC est : %.2f\n", imc);
return 0;
Mme. Imen AZZOUZ 6
Correction TD Programmation Structurée 1- L1 GE
Correction Travail Dirigé N° 2
Exercice 1 : Trouver le maximum entre deux nombres
Énoncé : Écrire un programme en C qui permet de lire deux nombres entiers, puis d'afficher
le plus grand des deux.
Correction :
#include <stdio.h>
int main() {
int a, b;
// Saisie des deux nombres
printf("Entrez le premier nombre : ");
scanf("%d", &a);
printf("Entrez le deuxième nombre : ");
scanf("%d", &b);
// Comparaison
if (a > b) {
printf("%d est le plus grand.\n", a);
} else if (a < b) {
printf("%d est le plus grand.\n", b);
} else {
printf("Les deux nombres sont égaux.\n");
return 0;
Exercice 2 : Pair ou impair
Énoncé : Écrire un programme en C qui permet de vérifier si un nombre entier donné est pair
Mme. Imen AZZOUZ 1
Correction TD Programmation Structurée 1- L1 GE
ou impair.
Correction :
#include <stdio.h>
int main() {
int nombre;
// Saisie du nombre
printf("Entrez un nombre entier : ");
scanf("%d", &nombre);
// Vérification pair ou impair
if (nombre % 2 == 0) {
printf("%d est pair.\n", nombre);
} else {
printf("%d est impair.\n", nombre);
return 0;
Exercice 3 : Vérifier la majorité
Énoncé : Écrire un programme en C qui vérifie si une personne est majeure ou mineure,
sachant que l'âge de la majorité est 18 ans.
Mme. Imen AZZOUZ 2
Correction TD Programmation Structurée 1- L1 GE
Correction :
#include <stdio.h>
int main() {
int age;
// Saisie de l'âge
printf("Entrez votre âge : ");
scanf("%d", &age);
// Vérification de la majorité
if (age >= 18) {
printf("Vous êtes majeur.\n");
} else {
printf("Vous êtes mineur.\n");
return 0;
Exercice 4 : Calculatrice simple avec switch
Écrire un programme en C qui agit comme une calculatrice simple. L'utilisateur doit entrer
deux nombres et une opération (+, -, *, /). Le programme affiche ensuite le résultat.
Correction :
#include <stdio.h>
int main() {
float num1, num2, resultat;
char operation;
Mme. Imen AZZOUZ 3
Correction TD Programmation Structurée 1- L1 GE
// Saisie des nombres et de l'opération
printf("Entrez le premier nombre : ");
scanf("%f", &num1);
printf("Entrez le deuxième nombre : ");
scanf("%f", &num2);
printf("Entrez l'opération (+, -, *, /) : ");
scanf(" %c", &operation); // L'espace avant %c est pour éviter un problème de buffer
// Choix de l'opération avec switch
switch (operation) {
case '+':
resultat = num1 + num2;
printf("Résultat : %.2f\n", resultat);
break;
case '-':
resultat = num1 - num2;
printf("Résultat : %.2f\n", resultat);
break;
case '*':
resultat = num1 * num2;
Mme. Imen AZZOUZ 4
Correction TD Programmation Structurée 1- L1 GE
printf("Résultat : %.2f\n", resultat);
break;
case '/':
if (num2 != 0) {
resultat = num1 / num2;
printf("Résultat : %.2f\n", resultat);
} else {
printf("Erreur : Division par zéro.\n");
break;
default:
printf("Opération invalide.\n");
break;
return 0;
Exercice 5 : Vérification d'un caractère voyelle ou consonne
Écrire un programme en C qui lit un caractère et vérifie s'il s'agit d'une voyelle ou d'une
consonne.
Mme. Imen AZZOUZ 5
Correction TD Programmation Structurée 1- L1 GE
Correction :
#include <stdio.h>
int main() {
char caractere;
// Saisie du caractère
printf("Entrez un caractère : ");
scanf("%c", &caractere);
// Vérification de la voyelle ou consonne
if (caractere == 'a' || caractere == 'e' || caractere == 'i' || caractere == 'o' || caractere == 'u' ||
caractere == 'A' || caractere == 'E' || caractere == 'I' || caractere == 'O' || caractere == 'U') {
printf("%c est une voyelle.\n", caractere);
} else {
printf("%c est une consonne.\n", caractere);
return 0;
Exercice 6 : Classer un nombre
Énoncé : Écrire un programme en C qui vérifie si un nombre entier est positif, négatif ou nul.
Correction :
#include <stdio.h>
int main() {
int nombre;
// Saisie du nombre
printf("Entrez un nombre entier : ");
scanf("%d", &nombre);
Mme. Imen AZZOUZ 6
Correction TD Programmation Structurée 1- L1 GE
// Classification du nombre
if (nombre > 0) {
printf("%d est positif.\n", nombre);
} else if (nombre < 0) {
printf("%d est négatif.\n", nombre);
} else {
printf("%d est nul.\n", nombre);
return 0;
Exercice 7 : Vérification de la validité d'un triangle
Énoncé : Écrire un programme en C qui permet de vérifier si trois longueurs données peuvent
former un triangle. Pour qu'un triangle soit valide, la somme de deux côtés doit toujours être
supérieure au troisième côté.
Correction :
#include <stdio.h>
int main() {
int a, b, c;
// Saisie des trois côtés du triangle
printf("Entrez la longueur du premier côté : ");
scanf("%d", &a);
Mme. Imen AZZOUZ 7
Correction TD Programmation Structurée 1- L1 GE
printf("Entrez la longueur du deuxième côté : ");
scanf("%d", &b);
printf("Entrez la longueur du troisième côté : ");
scanf("%d", &c);
// Vérification de la validité du triangle
if (a + b > c && a + c > b && b + c > a) {
printf("Les longueurs peuvent former un triangle.\n");
} else {
printf("Les longueurs ne peuvent pas former un triangle.\n");
return 0;
Mme. Imen AZZOUZ 8
Correction TD Programmation Structurée 1- L1 GE
Correction Travail Dirigé N° 3
Exercice 1 : Somme des nombres impairs
Énoncé : Écrire un programme en C qui calcule la somme des nombres impairs compris entre
1 et 100.
Solution :
#include <stdio.h>
int main() {
int somme = 0;
// Boucle pour calculer la somme des nombres impairs
for (int i = 1; i <= 100; i += 2) {
somme += i;
// Affichage du résultat
printf("La somme des nombres impairs entre 1 et 100 est : %d\n", somme);
return 0;
Exercice 2 : Calcul de la factorielle
Énoncé : Écrire un programme en C qui calcule la factorielle d'un nombre entier donné par
l'utilisateur.
Mme. Imen AZZOUZ 1
Correction TD Programmation Structurée 1- L1 GE
Solution :
#include <stdio.h>
int main() {
int n, fact = 1;
// Saisie du nombre
printf("Entrez un nombre : ");
scanf("%d", &n);
// Calcul de la factorielle
for (int i = 1; i <= n; i++) {
fact *= i;
// Affichage du résultat
printf("La factorielle de %d est : %d\n", n, fact);
return 0;
Exercice 3 : Somme des N premiers nombres entiers
Énoncé : Écrire un programme en C qui calcule la somme des N premiers nombres entiers.
Solution :
#include <stdio.h>
int main() {
int N, i, somme = 0;
// Saisie de la valeur de N
printf("Entrez un nombre entier N : ");
scanf("%d", &N);
Mme. Imen AZZOUZ 2
Correction TD Programmation Structurée 1- L1 GE
// Boucle for pour calculer la somme
for (i = 1; i <= N; i++) {
somme += i;
printf("La somme des %d premiers nombres est : %d\n", N, somme);
return 0;
Exercice 4 : Trouver la somme des chiffres d'un nombre
Énoncé : Écrire un programme en C qui trouve la somme des chiffres d'un nombre donné.
Solution :
#include <stdio.h>
int main() {
int nombre, somme = 0, chiffre;
// Saisie du nombre
printf("Entrez un nombre entier : ");
scanf("%d", &nombre);
// Boucle while pour calculer la somme des chiffres
while (nombre != 0) {
chiffre = nombre % 10; // Extraire le dernier chiffre
somme += chiffre;
Mme. Imen AZZOUZ 3
Correction TD Programmation Structurée 1- L1 GE
nombre /= 10; // Retirer le dernier chiffre
printf("La somme des chiffres est : %d\n", somme);
return 0;
Exercice 5 : Afficher les multiples de 3 et 5 entre 1 et 100
Énoncé : Écrire un programme en C qui affiche tous les nombres entre 1 et 100 qui sont des
multiples de 3 ou de 5.
Solution :
#include <stdio.h>
int main() {
int i;
// Boucle for pour vérifier les multiples de 3 et 5
for (i = 1; i <= 100; i++) {
if (i % 3 == 0 || i % 5 == 0) {
printf("%d\n", i);
return 0;
Mme. Imen AZZOUZ 4
Correction TD Programmation Structurée 1- L1 GE
Exercice 6 : Trouver le plus grand commun diviseur (PGCD)
Énoncé : Écrire un programme en C qui calcule le plus grand commun diviseur (PGCD) de
deux nombres.
Solution :
#include <stdio.h>
int main() {
int a, b;
// Saisie des deux nombres
printf("Entrez deux nombres entiers : ");
scanf("%d %d", &a, &b);
// Utilisation de la méthode d'Euclide pour trouver le PGCD
while (a != b) {
if (a > b) {
a -= b;
} else {
b -= a;
printf("Le PGCD est : %d\n", a);
return 0;}
Mme. Imen AZZOUZ 5
Correction TD Programmation Structurée 1- L1 GE
Exercice 7 : Vérifier si un nombre est un nombre premier
Énoncé : Écrire un programme en C qui vérifie si un nombre donné est un nombre premier.
Solution :
#include <stdio.h>
int main() {
int nombre, i, estPremier = 1;
// Saisie du nombre
printf("Entrez un nombre entier : ");
scanf("%d", &nombre);
// Vérification si le nombre est premier
if (nombre <= 1) {
estPremier = 0;
} else {
for (i = 2; i <= nombre / 2; i++) {
if (nombre % i == 0) {
estPremier = 0;
break;
if (estPremier == 1) {
printf("%d est un nombre premier.\n", nombre);
} else {
printf("%d n'est pas un nombre premier.\n", nombre);
Mme. Imen AZZOUZ 6
Correction TD Programmation Structurée 1- L1 GE
return 0;
Exercice 8 : Affichage d'une table de multiplication
Énoncé : Écrire un programme en C qui affiche la table de multiplication d'un nombre donné.
Correction :
#include <stdio.h>
int main() {
int nombre, i;
// Saisie du nombre
printf("Entrez un nombre entier pour afficher sa table de multiplication : ");
scanf("%d", &nombre);
// Boucle for pour afficher la table de multiplication
for (i = 1; i <= 10; i++) {
printf("%d x %d = %d\n", nombre, i, nombre * i);
return 0;
Mme. Imen AZZOUZ 7
Correction TD Programmation Structurée 1- L1 GE
Correction Travail Dirigé N° 4
Exercice 1 : Recherche d'un élément dans un tableau
Énoncé : Écrire un programme en C qui permet de rechercher un élément dans un
tableau unidimensionnel de 10 entiers.
Solution :
#include <stdio.h>
int main() {
int tableau[10], element, trouve = 0;
// Remplissage du tableau
printf("Entrez 10 entiers :\n");
for (int i = 0; i < 10; i++) {
scanf("%d", &tableau[i]);
// Saisie de l'élément à rechercher
printf("Entrez l'élément à rechercher : ");
scanf("%d", &element);
// Recherche de l'élément
for (int i = 0; i < 10; i++) {
if (tableau[i] == element) {
printf("L'élément %d a été trouvé à l'indice %d.\n", element, i);
Mme. Imen AZZOUZ 1
Correction TD Programmation Structurée 1- L1 GE
trouve = 1;
break;
// Si l'élément n'est pas trouvé
if (!trouve) {
printf("L'élément %d n'a pas été trouvé dans le tableau.\n", element);
return 0;
Exercice 2 : Somme des éléments d'une matrice
Énoncé : Écrire un programme en C qui permet de remplir une matrice 2x2, puis d'afficher la
somme de tous les éléments de cette matrice.
Solution :
#include <stdio.h>
int main() {
int matrice[2][2], somme = 0;
// Remplissage de la matrice
printf("Entrez les éléments de la matrice 2x2 :\n");
for (int i = 0; i < 2; i++) {
Mme. Imen AZZOUZ 2
Correction TD Programmation Structurée 1- L1 GE
for (int j = 0; j < 2; j++) {
printf("M[%d][%d] : ", i, j);
scanf("%d", &matrice[i][j]);
somme += matrice[i][j]; // Ajout de l'élément à la somme
// Affichage de la somme des éléments
printf("La somme des éléments de la matrice est : %d\n", somme);
return 0;
Exercice 3 : Inversion d'un tableau
Énoncé : Écrire un programme en C qui permet d'inverser les éléments d'un tableau
unidimensionnel de 5 entiers.
Solution :
#include <stdio.h>
int main() {
int tableau[5], temp;
// Remplissage du tableau
printf("Entrez 5 entiers :\n");
for (int i = 0; i < 5; i++) {
Mme. Imen AZZOUZ 3
Correction TD Programmation Structurée 1- L1 GE
scanf("%d", &tableau[i]);
// Inversion du tableau
for (int i = 0; i < 5 / 2; i++) {
temp = tableau[i];
tableau[i] = tableau[5 - 1 - i];
tableau[5 - 1 - i] = temp;
// Affichage du tableau inversé
printf("Le tableau inversé est : ");
for (int i = 0; i < 5; i++) {
printf("%d ", tableau[i]);
printf("\n");
return 0;
Exercice 4 : Maximum d'un tableau
Énoncé : Écrire un programme en C qui trouve et affiche le plus grand élément dans un
tableau.
Mme. Imen AZZOUZ 4
Correction TD Programmation Structurée 1- L1 GE
Solution :
#include <stdio.h>
int main() {
int tableau[5], max, i;
// Remplissage du tableau
printf("Entrez 5 entiers : \n");
for (i = 0; i < 5; i++) {
scanf("%d", &tableau[i]);
// Initialisation du maximum au premier élément du tableau
max = tableau[0];
// Recherche du maximum
for (i = 1; i < 5; i++) {
if (tableau[i] > max) {
max = tableau[i];
printf("Le maximum du tableau est : %d\n", max);
return 0;}
Mme. Imen AZZOUZ 5
Correction TD Programmation Structurée 1- L1 GE
Exercice 5 : Tri d'un tableau (Tri par sélection)
Énoncé : Écrire un programme en C qui trie les éléments d'un tableau d'entiers dans l'ordre
croissant.
Correction :
#include <stdio.h>
int main() {
int tableau[5], i, j, min, temp;
// Remplissage du tableau
printf("Entrez 5 entiers : \n");
for (i = 0; i < 5; i++) {
scanf("%d", &tableau[i]);
// Tri par sélection
for (i = 0; i < 4; i++) {
min = i;
for (j = i + 1; j < 5; j++) {
if (tableau[j] < tableau[min]) {
min = j;
// Échange des éléments
if (min != i) {
temp = tableau[i];
tableau[i] = tableau[min];
Mme. Imen AZZOUZ 6
Correction TD Programmation Structurée 1- L1 GE
tableau[min] = temp;
// Affichage du tableau trié
printf("Tableau trié : ");
for (i = 0; i < 5; i++) {
printf("%d ", tableau[i]);
printf("\n");
return 0;
Exercice 6 : Comptage des éléments pairs et impairs d'un tableau
Énoncé : Écrire un programme en C qui compte le nombre d'éléments pairs et impairs dans
un tableau d'entiers.
Correction :
#include <stdio.h>
int main() {
int tableau[5], i, pairs = 0, impairs = 0;
// Remplissage du tableau
printf("Entrez 5 entiers : \n");
for (i = 0; i < 5; i++) {
scanf("%d", &tableau[i]);
Mme. Imen AZZOUZ 7
Correction TD Programmation Structurée 1- L1 GE
// Comptage des éléments pairs et impairs
for (i = 0; i < 5; i++) {
if (tableau[i] % 2 == 0) {
pairs++;
} else {
impairs++;
printf("Nombre de nombres pairs : %d\n", pairs);
printf("Nombre de nombres impairs : %d\n", impairs);
return 0;
Exercice 7 : Somme des diagonales d'une matrice
Énoncé : Écrire un programme en C qui calcule la somme des éléments de la diagonale
principale et de la diagonale secondaire d'une matrice carrée de taille 3x3.
Correction :
#include <stdio.h>
int main() {
int matrice[3][3], i, sommeDiagPrincipale = 0, sommeDiagSecondaire = 0;
Mme. Imen AZZOUZ 8
Correction TD Programmation Structurée 1- L1 GE
// Remplissage de la matrice
printf("Entrez les éléments de la matrice 3x3 : \n");
for (i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
scanf("%d", &matrice[i][j]);
// Calcul des sommes des diagonales
for (i = 0; i < 3; i++) {
sommeDiagPrincipale += matrice[i][i];
sommeDiagSecondaire += matrice[i][2 - i];
printf("Somme de la diagonale principale : %d\n", sommeDiagPrincipale);
printf("Somme de la diagonale secondaire : %d\n", sommeDiagSecondaire);
return 0;
Mme. Imen AZZOUZ 9