Vous êtes sur la page 1sur 38

Université Sidi Moulay Abdellah

Faculté des Sciences Dhar El Mahraz

Sciences Mathématiques et Applications (SMA)

Informatique3 : Algorithmique et Programmation C


Travaux Dirigés et Examens avec corrections

Par le professeur
Sabri My Abdelouahed
abdelouahed.sabri@usmba.ac.ma
TD Algorithmique et programmation C SMA S3

Série n°1 : Lecture, écriture et affectation


Exercice 1 :
Ecrire un programme en langage C qui fait la permutation circulaire de trois variables
entières lues au clavier. Afficher les valeurs de trois variables avant et après la permutation.

Exercice 2 :
Ecrire un programme C qui affiche la moyenne de quatre entiers entrés au clavier et qui
affiche leur moyenne en utilisant :

a. 5 variables.
b. 2 variables.

Exercice 4 :
Ecrire un programme qui demande à l’utilisateur d’entrer le prix hors taxes (PHT) d’un
article, le nombre d’articles (NA) et le taux de la taxe sur la valeur ajoutée (TTVA), puis qui
calcule et affiche le prix total toutes taxes comprises (PTTC). Avec :
PTTC=NA*PHT*(1+TTVA)

Exercice 5 :
Quel est le résultat d’exécution du programme C suivant :
#include "stdio.h"
void main()
{
int i,j;
i=0;
j=i++;
printf("1) i = %d \t j = %d \n", i, j);
j*=++i;
printf("2) i = %d \t j = %d \n", i, j);
i=i-(++i);
j=j-(j++);
printf("3) i = %d \t j = %d \n", i, j);
}

Prof. Sabri My Abdelouahed 1/38


Abdelouahed.sabri@gmail.com
TD Algorithmique et programmation C SMA S3

Série n°2 : Les structures de contrôle


Exercice 1 :
Ecrire un programme C qui demande à l’utilisateur de saisir 3 valeurs et qui affiche la plus
petite des valeurs saisies.

Exercice 2 :
Soit les programmes C suivant :

#include <stdio.h> #include <stdio.h> #include <stdio.h>


void main () void main () void main ()
{ { {
int i; int i=0; int i=0;
for (i=0; i<=5; i=i+1) i++; i++;
{ for (i; i<=5; i=i+1) for (i=0; i<=5; i=i+2)
printf ("i= %d\n",i); { {
} printf ("i= %d\n",i); printf ("i= %d\n",i);
printf ("i égale à } }
%d\n", i); printf ("i égale à printf ("i égale à
} %d\n", i); %d\n", i);
} }
Compiler manuellement et donner les résultats d’exécution de chacun

Exercice 4 :
Ecrire un programme C qui affiche 5 fois « J’apprends à programmer en "C" » utilisant :
1- for
2- while
3- do-while

Exercice 5 :
Ecrire un programme qui demande à l’utilisateur d’entrer un nombre n, de calculer et
d’afficher :
- la somme des entiers de 1 à n : ∑𝑛𝑘=1 𝐾
- le factoriel de ce nombre

Exercice 6 :
Ecrire un algorithme qui demande à l’utilisateur d’entrer un nombre n, et ensuite d’afficher
la table de multiplication de ce nombre,
Exemple : dans le cas où l'utilisateur entre le nombre 8, la table de multiplication de 8 est:
8x1=8
8 x 2 = 16

8 x 10 = 80

Prof. Sabri My Abdelouahed 2/38


Abdelouahed.sabri@gmail.com
TD Algorithmique et programmation C SMA S3

Série n°3 : Les tableaux


Exercice 1 :
Ecrire un programme permettant de saisir les éléments d’un tableau. La taille du tableau
doit être saisie par l’utilisateur. Le programme doit aussi afficher chaque élément du tableau
dans une ligne en précisant l’indice.
Exercice 2 :
Modifier le programme de l’exercice précédent pour :
 Afficher les éléments du tableau dans un ordre croissant
 Afficher les éléments du tableau dans un ordre décroissant
 Afficher la somme et la moyenne de tous les éléments.
Exercice 3 :
Ecrire un programme permettant de compter et afficher le nombre d’occurrences d’un
élément dans un tableau. L’utilisateur doit saisir l’élément à chercher.
Les éléments du tableau sont 1 25 87 -85 80 80 25 25 87 1 85
Exemple 1 : Entrer la valeur à chercher:
25
Le chiffre 25 apparait 3 fois
Exemple 2 : Entrer la valeur à chercher:
3
Aucune occurrence n'est trouvée pour 3
Exercice 4 :
Modifier le programme précédant pour afficher aussi les indices des occurrences
Exemple : Entrer la valeur à chercher:
80
Le chiffre 80 apparait 2 fois aux indices: 4 5
Exercice 5 :
Ecrire un programme qui permet de créer et d’afficher un tableau à deux dimensions
comme suit :
5 8
(−22 33)
55 0
Exercice 6 :
Ecrire un programme qui lit les dimensions L et C d'un tableau T à deux dimensions du
type int (dimensions maximales: 50 lignes et 50 colonnes). Remplir le tableau par des valeurs
entrées au clavier et afficher le tableau ainsi que la somme de tous ces éléments.
Exemple : Nombre de lignes (max.50) : 2
Nombre de colonnes (max.50) : 2
Elément[0][0] : 4
Elément[0][1] : 78
Elément[1][0] : 12
Elément[1][1] : 0
Tableau donné:
4 78
12 0
Somme des éléments : 94

Prof. Sabri My Abdelouahed 3/38


Abdelouahed.sabri@gmail.com
TD Algorithmique et programmation C SMA S3

Série n°4 : Les pointeurs

Exercice 1 :
Donner le résultat d’exécution des programmes suivants :
#include <stdio.h> #include <stdio.h>
main() main()
{ {
short a=51, b=-78, *ptr; float A=51, B, *P;
ptr=&a; P=&A;
printf("%d\t", *ptr); B = *P+1;
b=*ptr; *P = *P+10 ;
printf ("%d\t", b); *P += 2 ;
*ptr=0; ++*P ;
printf ("%d\t%d",b, a); (*P)++;
} printf("%.2f\t", *P);
}
Exercice 2 :
Modifier les programmes de l’exercice précédent pour permettre le même fonctionnement
mais sans utilisation de pointeurs
Exercice 3 :
Compléter le tableau suivant :
A B C P1 P2
Initialisation 1 2 3 / /
P1=&A 1 2 3 &A /
P2=&C
*P1=(*P2)++
P1=P2
P2=&B
*P1-=*P2
++*P2
*P1*=*P2
A=++*P2**P1
P1=&A
Exercice 4 :
Ecrire un programme, utilisant les pointeurs, qui permet de vérifier si un caractère saisi par
l’utilisateur est une consonne ou voyelle

Prof. Sabri My Abdelouahed 4/38


Abdelouahed.sabri@gmail.com
TD Algorithmique et programmation C SMA S3

Série n°5 : les fonctions


Exercice 1 :
Ecrire une fonction MOYENNE du type float pour afficher la moyenne arithmétique de
deux nombres réels passés en argument.
Tester la fonction en demandant à l’utilisateur de saisir deux nombres réels.
Exercice 2 :
Ecrire une fonction qui teste si un nombre entier positif (unsigned int) passé en argument
est un nombre premier.
Ecrire une procédure (fonction de type void) qui affiche les nombres premiers compris
entre deux valeurs passées en argument.
Ecrire un programme de test.
Exercice 3 :
Ecrire un programme qui permet de déclarer une variable globale :
int tab[10] = {1,2,4,8,16,32,64,128,256,512};
Ecrire une fonction « affiche » pour afficher les éléments du tableau et leurs adresses
mémoires,
Faire l’appel de la fonction « affiche » dans « main »
Exercice 4 :
Modifier le programme de l’exercice précédent en ajoutant les fonctions :
- « saisir » pour remplir le tableau par des valeurs saisies par l’utilisateur
- « indice » qui renvoie l’indice de la valeur maximale.
- « trie » les éléments du tableau dans l’ordre croissant.
- « produit » qui calcule le produit scalaire de deux tableaux passés en argument.
- Tester les différentes fonctions
Exercice 5 :
Donner le résultat d’exécution de chacun des codes suivants :
#include <stdio.h>* #include <stdio.h>
void permuter (int, int); void permuter (int A, int *B);
void main() void main()
{ {
int x=8,y=-15; int x=8,y=-15;
printf("x=%d et y=%d\n",x,y); printf("x=%d et y=%d\n",x,y);
permuter (x, y); permuter (x, &y);
printf("x=%d et y=%d\n",x,y); printf("x=%d et y=%d\n",x,y);
} }
void permuter (int A, int B) void permuter (int A, int *B)
{ {
int t; int t;
t = A; t = A;
A = B; A = *B;
B = t; *B = t;
} }
Exercice 6 :
Ecrire un programme qui permet de calculer et afficher les solutions de l’équation
ax2+bx+c=0. Pour le faire il faut créer :
- Une fonction de prototype void saisie(float *aa,float *bb,float *cc) qui permet de
saisir a,b,c.
- Une fonction de prototype void calcul(float aa,float bb,float cc) qui exécute les
calculs et affiche les résultats.
- main() va appeler les fonctions saisie(&a,&b,&c) et calcul(a,b,c).
a, b, c sont des variables locales à main();

Prof. Sabri My Abdelouahed 5/38


Abdelouahed.sabri@gmail.com
TD Algorithmique et programmation C SMA S3

Série 6 : les chaines de caractères


Exercice 1 :
Parmi les déclarations suivantes, identifier celles incorrectes :
char a[] = char b[12] = "un deux char c[] = 'abcdefg';
"un\ndeux\ntrois\n"; trois";
char d[1] = 'x'; char d[10] = {'x'} char d[10] = {'x', '\0'}
char f[] = "Cette " "phrase" char e[5] = "cinq"; char e[5] = "5";
"est coupée";
Exercice 2 :
Ecrire un programme qui demande à l’utilisateur de saisir une ligne de texte (ne dépassant pas
200 caractères) et la mémorise dans une variable « ligne » et affiche:
a) Le texte saisi
b) La longueur (taille) du texte
c) le nombre de 'a' contenus dans le texte
d) Le texte à l’envers
Remarque : il ne faut pas utiliser les fonctions prédéfinies dans <ctype.h>
Exercice 3 :
Ecrire un programme qui demande de saisir le nom de l'utilisateur et qui affiche :
a) Sa longueur totale. Utiliser la fonction « int strlen("chaine") » de <string.h>
b) Le nom avec la première lettre en majuscule et le reste en minuscule.
Utiliser les fonctions « char toupper(char) et char tolower(char) » de <ctype.h>
Exercice 4 :
Ecrire un programme qui lit un nombre entre 1 et 7 et qui affiche le nom du jour de la semaine
correspondant.
Utiliser un tableau de chaines de caractères
char JOURS[7][9] = {"lundi", "mardi", "mercredi","jeudi", "vendredi",
"samedi","dimanche"};
Exercice 5 :
Modifier le programme de l’exercice 4 en ajoutant une fonction MajJour qui permet de mettre
une chaine passée en argument en majuscule.
Utiliser cette fonction pour afficher le jour équivalent à la valeur saisie en majuscule
Exercice 6 :
Ecrire un programme qui lit deux chaines de caractères TXT1 et TXT2 saisies au clavier et
qui les concatène (ajoute les éléments de TXT2 à la fin de TXT1) et les affiche.
a) Sans utiliser la fonction strcat ()
b) Avec utilisation de la fonction strcat ()
Exercice 7 :
 Modifier le programme de l’exercice 6 en ajoutant une fonction MajJourChaine qui
permet de mettre une chaine passée en argument en majuscule.
 Utiliser cette fonction pour mettre en majuscule les deux chaines de caractères avant
de les concaténer.

Prof. Sabri My Abdelouahed 6/38


Abdelouahed.sabri@gmail.com
Contrôle de fin de semestre (SN 2016 / 2017) SMA S3

Contrôle de fin de semestre (session normale 2016 / 2017) :


(Durée : 1h 30)

NB : Les documents ne sont pas autorisés

Questions de cours : (4pts)


1. On peut classer les langages informatiques en trois catégories : langages interprétés,
langages compilés et langages intermédiaires. Donner brièvement la différence entre
ces trois catégories
2. Lesquelles des propositions suivantes sont correctes (Sans justifications) :
A. Le langage C est sensible à la casse,
B. Le langage C est un langage compilé,
C. Le langage C est un langage interprété,
D. Dans un code C, on peut écrire plusieurs instructions séparées par des virgules
dans une même ligne.

Exercice 1 : (2pts)

Donner le résultat d’exécution du programme C suivant :

#include <stdio.h>
void fct (int *A, int *B, int *C) ;
int x=3;
void main()
{
int x=6, y=-5, z=8;
printf("x=%d, y=%d et z=%d\n",x,y,z);
fct (&x, &y, &z);
printf("x=%d, y=%d et z=%d\n",x,y,z);
}
void fct (int *A, int *B, int *C)
{
int t;
t = *B;
x=55;
*B = *A;
*A=*C;
}

Prof. Sabri My Abdelouahed 7/38


Abdelouahed.sabri@gmail.com
Contrôle de fin de semestre (SN 2016 / 2017) SMA S3

Exercice 2 : (4pts)

Compléter le tableau suivant :

A B P1 P2

Initialisation 1 5 / /

P1=&A 1 5 &A /

P2=&B

*P1=++(*P2)

P1=P2

A= (*P2) - (*P1)++

Exercice 3 : (2pts)

Ecrire un programme C qui affiche la moyenne de cinq entiers saisis au clavier. Il faut utiliser
seulement deux variables.

Exercice 4 : (4pts)

On veut écrire un programme C pour résoudre l’équation du premier degré « ax+b=0 ».

Pour le faire il faut créer :

1) Une fonction de prototype void saisie(float *aa, float *bb) pour demander à
l’utilisateur de saisir les valeurs de a et b,
2) Une fonction de prototype void calcul(float aa, float bb) pour résoudre l’équation et
ainsi afficher les résultats,
3) La fonction main() va faire appel aux fonctions saisie(&a, &b) et calcul(a, b).
A noter que a, b sont des variables locales à main().

Exercice 5 : (4pts)

Ecrire un programme C qui demande à l’utilisateur de saisir une ligne de texte (ne dépassant
pas 128 caractères) et la mémorise dans une variable « ligne » et ainsi affiche:

1) La longueur (taille) du texte sans utiliser la fonction « strlen »,


2) Les voyelles contenues dans le texte ainsi que leurs indices (emplacement).
Exemple : Si l’utilisateur saisi «Je programme» le programme va lui afficher :
Le texte est composé de 12 caractères.
Les voyelles sont :
e à l'indice 2
o à l'indice 6
a à l'indice 9
e à l'indice 12

Prof. Sabri My Abdelouahed 8/38


Abdelouahed.sabri@gmail.com
Contrôle de fin de semestre (SR 2016 / 2017) SMA S3

Contrôle de rattrapage (2016 / 2017)


(Durée : 1h 30)

NB : Les documents ne sont pas autorisés

Questions de cours :
1. On peut classer les langages informatiques en trois catégories : langages interprétés,
langages compilés et langages intermédiaires. Donner brièvement la différence entre
ces trois catégories.
2. Donner, avec exemple, la différence entre conversion explicite et conversion implicite.

Exercice 1 :
Donner le résultat d’exécution du programme C suivant :
#include "stdio.h"
void main()
{
int i,j=6;
i=-5;
j=i++;
printf("1) i = %d \t j = %d \n", i++, j--);
i=i-(++i);
j=j-(j++);
printf("2) i = %d \t j = %d \n", i, j);
}

Exercice 2 :
Ecrire un programme C qui simule une calculatrice de 3 opérations *, +, -. À l’exécution,
l’utilisateur sera invité à saisir deux nombres ainsi que le type d’opération : + pour addition, -
pour soustraction et * pour multiplication et après lui afficher le résultat.
Remarque : Il faut utiliser la structure de contrôle switch-case

Prof. Sabri My Abdelouahed 9/38


Abdelouahed.sabri@gmail.com
Contrôle de fin de semestre (SR 2016 / 2017) SMA S3

Exercice 3 :
Compléter le tableau suivant :
c A B C P1 P2

Initialisation 15 20 128 / /

P1=P2=&A

(*P2)++

P2=&C

P2=&B+C

*P2=*P1-16

P2=P2 – 128

*P2=++(*P1)-
17

Exercice 4 :
Ecrire un programme C qui affiche la « Table de multiplication » d’un nombre saisi au
clavier. Pour le faire il faut créer :
1) Une fonction pour demander à l’utilisateur de saisir un nombre et le stocker dans la
variable passée en argument
2) Une fonction pour afficher la table de multiplication d‘un nombre passé en argument
3) La fonction principale qui va faire appel aux deux fonctions

Exercice 5 :
Ecrire un programme C qui demande à l’utilisateur de saisir une ligne de texte (ne dépassant
pas 40 caractères) et la mémorise dans une variable « ligne » et affiche:
1) La longueur (taille) du texte en utilisant la fonction « strlen »,
2) Le nombre de consonnes contenues dans le texte.
Utiliser un tableau de voyelles.
3) Le texte à l’envers
Bonne chance

Prof. Sabri My Abdelouahed 10/38


Abdelouahed.sabri@gmail.com
Université Sidi Mohamed Ben Abdellah Année universitaire : 2017 / 2018
Faculté des Sciences Dhar Mehraz Fès Filière : SMA
Semestre : 3

Informatique 3
Contrôle de fin de semestre (session normale) :
(Durée : 1h 30)
NB : Les documents ne sont pas autorisés

Questions de cours : (4pts)

3. Donner, avec exemple, la différence entre conversion implicite et explicite


4. Donner, avec exemple, la différence entre passage par valeur et passage par adresse.

Exercice 1 : (2pts)

Ecrire un programme qui affiche à l’écran la moyenne de 3 réels lus au clavier

Exercice 2 : (6pts)

Soit la déclaration des variables suivantes :

int A, B, *P, *Q.

Le tableau suivant représente les cases mémoires des variables :

Variable A B P Q
Adresse Mémoire 7628 7624 7616 7608

Compléter le tableau suivant :

A B P Q &P &Q
Initialisation 5 -14 / / 7616 7608

P=&A

Q=&B

*P = ++(*Q) -
(*Q)--
P-- ;
Q++ ;
(*P) -= (-14) ;

Prof. Sabri My Abdelouahed 11/38


Abdelouahed.sabri@gmail.com
Exercice 3 : (4pts)

On veut écrire un programme C pour résoudre l’équation du premier degré « ax+b=0 ».

Pour le faire il faut créer :

4) Une fonction de prototype void saisie(float *var) pour demander à l’utilisateur de


saisir les valeurs de a et b,
5) Une fonction de prototype void calcul(float aa, float bb) pour résoudre l’équation et
afficher les résultats,
6) La fonction main() : déclarer les variables a et b et faire appel aux fonctions « saisie »
et « calcul ».

Exercice 4 : (4pts)

Ecrire un code C qui permet de :

 Déclarer un tableau de caractères et l’initialiser avec : 't', 'f', 'a', 'g','e', 'y', 'r'
 Compter et afficher le nombre de caractères
 Trier et afficher les caractères du plus petit au plus grand (ordre alphabétique)
 Afficher les caractères dans l’ordre inverse
Exercice 5 : (2pts)

Ecrire un programme C qui demande à l’utilisateur de saisir une chaine caractères (de taille
maximale 255) et qui affiche ce texte en majuscule.

NB : Utiliser les fonctions prédéfinies pour la majuscule

Prof. Sabri My Abdelouahed 12/38


Abdelouahed.sabri@gmail.com
Corrigé de la Série n°1 : Lecture, écriture et affectation

Exercice 1 :
#include "stdio.h"
void main()
{
int a,b,c,temp;
printf("Donner 3 variables\n");
scanf ("%d %d %d",&a,&b,&c);
printf("Les variables avant permutation: a=%d, b=%d et c=%d\n", a, b ,c);
temp=a;
a=c;
c=b;
b=temp;
printf ("Les variables après permutation: a=%d, b=%d et c=%d\n", a ,b ,c);
}

Exercice 2 :
a- Avec 5 variables
#include "stdio.h"
void main()
{ int a,b,c,d,moy;
printf("Donner 4 entiers \n");
scanf ("%d %d %d %d",&a,&b,&c, &d);
moy=(a+b+c+d)/4;
printf ("La moyenne est: %d", moy);
}
b- Avec 2 variables
#include "stdio.h"
void main()
{ int a,moy;
printf("Donner 4 entiers \n");
scanf ("%d",&a);
moy=a;
scanf ("%d",&a);
moy=moy+a;
scanf ("%d",&a);
moy=moy+a;
scanf ("%d",&a);
moy=moy+a;
printf ("La moyenne est: %d", moy/4);
}

Exercice 3 :
#include "stdio.h"
void main()
{
int NA;
float PTTC,PHT,TTVA;
printf ("Entrer le prix HT:");
scanf("%f",&PHT);

Prof. Sabri My Abdelouahed 13/38


Abdelouahed.sabri@gmail.com
printf("Entrer le nombre d'articles:");
scanf("%d", &NA);
printf("Entrer le TTVA:");
scanf("%f",&TTVA);
PTTC=NA*PHT*(1+TTVA);
printf("le prix total toutes taxes comprises est: %f",PTTC);
}

Exercice 4 :
Après exécution, on aura sur la console :
1) i = 1 j=0
2) i = 2 j=2
3) i = 0 j=1

Prof. Sabri My Abdelouahed 14/38


Abdelouahed.sabri@gmail.com
Corrigé de la Série n°2 : les structures de contrôle

Exercice 1 :
#include "stdio.h"
void main()
{
int a,b;
printf("Entrer deux valeurs:\n");
scanf("%d",&a);
scanf("%d",&b);
printf("La plus petite des valeurs saisies est:");
if (a<b)
printf("%d",a);
else
printf("%d",b);
}

Exercice 2 :
i= 0 i= 1 i= 0
i= 1 i= 2 i= 2
i= 2 i= 3 i= 4
i= 3 i= 4 i egale a 6
i= 4 i= 5
i= 5 i egale a 6
i égale à 6

Exercice 3 :
1- for
#include <stdio.h>
void main ()
{
int i=0;
//1- Utilisant la boucle for
for (i=0; i<5; i++)
{
printf ("J'apprends à programmer en C\n");
}
}
2- while
#include <stdio.h>
void main ()
{
int i=0;
while (i<5)
{
printf ("J'apprends à programmer en C\n");
i++;
}}

Prof. Sabri My Abdelouahed 15/38


Abdelouahed.sabri@gmail.com
3- do-while
#include <stdio.h>
void main ()
{
int i=0;
do
{
printf ("J'apprends à programmer en C\n");
i++;
}while (i<5);
}

Exercice 4 :
1- la somme des n premiers éléments
#include <stdio.h>
void main ()
{
int i,n,S=0;
printf("Entrer un nombre:");
scanf("%d",&n);
for (i=0;i<=n;i++)
S=S+i;
printf ("La somme des %d premiers éléments est: %d\n",n,S);
}
2- Le factoriel d’un nombre
#include <stdio.h>
void main ()
{
int i,n,F=1;
printf("Entrer un nombre:");
scanf("%d",&n);
for (i=1;i<=n;i++)
F=F*i;
printf ("Le factoriel de %d est %d\n",n,F);
}

Exercice 5 :
#include <stdio.h>
void main ()
{
int i,n;
printf("Entrer un nombre:");
scanf("%d",&n);
//a- le factoriel
for (i=1;i<=10;i++)
printf("%d x %i = %d\n", n, i, n*i);
}

Prof. Sabri My Abdelouahed 16/38


Abdelouahed.sabri@gmail.com
Corrigé de la Série n°3 : les tableaux
Exercice 1 :
#include <stdio.h>
main()
{
int tbl[255]; // on choisit une taille maximale
int i, l; // l sera la taille réelle que l'utilisateur va saisir
printf ("Entre le nombre d'élément du tableau: ");
scanf("%d",&l); // ne pas oublier l'adresse
for (i=0; i<l;i++) // les indices commencent par o et se terminent par l-1
{
printf("Entrer l'élément num: %d= ", i+1);
scanf("%d",&tbl[i]);
}

for (i=0; i<l;i++) // les indices commencent par o et se terminent par l-1
{
printf("Tableaux[%d]=%d\n",i,tbl[i]);
}
}
Exercice 2:
#include <stdio.h>
main()
{
int tbl[255]; // on choisit une taille maximale
int i, l; // l sera la taille réelle que l'utilisateur va saisir
int temp;
printf ("Entre le nombre d'élément du tableau: ");
scanf("%d",&l); // ne pas oublier l'adresse
for (i=0; i<l;i++) // les indices commencent par o et se terminent par l-1
{
printf("Entrer l'élément num: %d= ", i+1);
scanf("%d",&tbl[i]);
}
// Tri par ordre croissant
for (i=0; i<l; i++)
{
for (int j=i+1; j<l; j++)
{
if (tbl[i]>tbl[j])
{
temp=tbl[i];
tbl[i]=tbl[j];
tbl[j]=temp;
}
}
}
printf("Affichage dans un ordre décroissant\n");
for (i=0; i<l;i++)
{
printf("Tableaux[%d]=%d\n",i,tbl[i]);

Prof. Sabri My Abdelouahed 17/38


Abdelouahed.sabri@gmail.com
}
printf("Affichage dans un ordre croissant\n");
for (i=l-1; i>=0;i--) // le tableau est trié et on va afficher du dernier au premier
{
printf("Tableaux[%d]=%d\n",i,tbl[i]);
somme=somme+tbl[i];
}
// Il faut faire la conversion explicite en float pour afficher correctement la moyenne
printf ("La somme est: %d et la moyenne est %.2f\n", somme, (float) somme/l);
}
Exercice 3 :
#include <stdio.h>
void main ()
{
int i, N, compt=0, t[]= {1,25, 87, -85, 80, 80, 25, 25, 87, 1, 85};
printf("Entrer la valeur à chercher: \n");
scanf("%d",&N);
for (i=0; i<11; i++)
{
if (t[i]==N) compt++;
}
printf ("Le chiffre %d apparait %d fois \n", N,compt);

}
Exercice 4 :
#include <stdio.h>
void main ()
{
int i, j , N, compt=0, t[]= {1,25, 87, -85, 80, 80, 25, 25, 87, 1, 85}, tIndice[11];
printf("Entrer la valeur a chercher: \n");
scanf("%d",&N);
for (i=0; i<11; i++)
{
if (t[i]==N)
{
tIndice[compt]=i;
compt++;
}
}
if (compt>0)
{
printf ("Le chiffre %d apparait %d fois aux indices: ", N,compt);
for (j=0;j<compt;j++) printf("%d\t", tIndice[j]);
}
else printf("Aucune occurrence n'est trouvée pour %d\n", N);
}
Exercice 5 :
void main()
{
/* Déclarations */
int I, J, T[3][2]={5, 8, -22, 33, 55,0}; /* tableau donné */

Prof. Sabri My Abdelouahed 18/38


Abdelouahed.sabri@gmail.com
printf("Tableau donné :\n");
for (I=0; I<3; I++)
{
for (J=0; J<2; J++)
printf("%7d", T[I][J]);
printf("\n");
}
}
Exercice 6 :
#include <stdio.h>
main()
{
/* Déclarations */
int T[50][50]; /* tableau donné */
int L, C; /* dimensions */
int I, J; /* indices courants */
long SOM; /* somme des éléments - type long à cause */
/* de la grandeur prévisible du résultat. */

/* Saisie des données */


printf("Nombre de lignes (max.50) : ");
scanf("%d", &L );
printf("Nombre de colonnes (max.50) : ");
scanf("%d", &C );
for (I=0; I<L; I++)
for (J=0; J<C; J++)
{
printf("Elément[%d][%d] : ",I,J);
scanf("%d", &T[I][J]);
}
/* Affichage du tableau */
printf("Tableau donné :\n");
for (I=0; I<L; I++)
{
for (J=0; J<C; J++)
printf("%7d", T[I][J]);
printf("\n");
}
/* Calcul de la somme */
for (SOM=0, I=0; I<L; I++)
for (J=0; J<C; J++)
SOM += T[I][J];
/* Edition du résultat */
printf("Somme des éléments : %ld\n", SOM);
return 0;
}

Prof. Sabri My Abdelouahed 19/38


Abdelouahed.sabri@gmail.com
Corrigé de la Série n°4 : les pointeurs
Exercice 1 :
#include <stdio.h> #include <stdio.h>
main() main()
{ {
short a=51, b=-78, *ptr; float A=51, B, *P;
ptr=&a; P=&A;
printf("%d\t", *ptr); // 51 B = *P+1;
b=*ptr; *P = *P+10 ;
printf ("%d\t", b); // 51 *P += 2 ;
*ptr=0; ++*P ;
printf ("%d\t%d",b, a); // 51 0 (*P)++;
} printf("%.2f\t", *P); // 65.00
}
Exercice 2
#include <stdio.h> #include <stdio.h>
main() main()
{ {
short a=51, b=-78; float A=51, B;
printf("%d\t", a); // 51 B = A+1;
b=a; A = A+10 ;
printf ("%d\t", b); // 51 A += 2 ;
a=0; ++A ;
printf ("%d\t%d",b, a); // 51 0 (A)++;
} printf("%.2f\t", A);
}
Exercice 3
A B C P1 P2
Initialisation 1 2 3 / /
P1=&A 1 2 3 &A /
P2=&C 1 2 3 &A &C
*P1=(*P2)++ 3 2 4 $A $C
P1=P2 3 2 4 &C &C
P2=&B 3 2 4 &C &B
*P1-=*P2 3 2 2 &C &B
++*P2 3 3 2 &C &B
*P1*=*P2 3 3 6 &C &B
A=++*P2**P1 24 4 6 &C &B
P1=&A 24 4 6 &A &B
Exercice 4 :
#include <stdio.h>
main()
{
char tab[]={'a', 'e', 'i', 'o', 'u', 'y'}, c;
int i;
debut: printf ("Entrer un caractère en minuscule:\n");
scanf("%c",&c);

Prof. Sabri My Abdelouahed 20/38


Abdelouahed.sabri@gmail.com
if ((int)c<65 || (int)c>122)
goto debut;
printf ("%d",c);
for (i=0; i<6; i++)
{
if (*(tab+i) ==c)
{
printf ("%c est une voyelle\n", c);
return;
}
}
printf("%c est une consonne\n",c);
}

Prof. Sabri My Abdelouahed 21/38


Abdelouahed.sabri@gmail.com
Corrigé de la Série n°5 : les fonctions
Exercice 1 :
#include <stdio.h>
float MOYENNE (float, float);
void main()
{
float x,y,m;
printf("Entrer deux nombres: ");
scanf("%f%f",&x,&y);
m=MOYENNE(x,y);
printf("La moyenne de %.2f et %.2f est %.2f",x,y,m);
}
float MOYENNE (float a, float b)
{
return (a+b)/2;
}
Exercice 2 :
#include <stdio.h>
int premier(unsigned int);
void affichePremiers(unsigned int, unsigned);
void main()
{
unsigned int b1,b2;
printf ("Entrer les bords de l'interval\n");
scanf ("%d%d",&b1,&b2);
affichePremiers(b1,b2);
}
void affichePremiers(unsigned int x, unsigned y)
{
int i;
printf("Les nombre premiers entre %d et %d sont:\n", x,y);
for (i=x; i<=y; i++)
if (premier(i)==1) printf("%d ",i);
}
int premier(unsigned int a)
{
// Un nombre premier ne se divise seulement par 1 et lui-même.
int i, compt=0;
if (a==1) // 1 n'est pas premier
return 0;
for (i=2; i<a; i++)
if (a%i ==0)
compt++;
if (compt >0)
return 0;
else
return 1;
}

Prof. Sabri My Abdelouahed 22/38


Abdelouahed.sabri@gmail.com
Exercice 3:
#include <stdio.h>
int tab[10] = {1,2,4,8,16,32,64,128,256,512};
void affiche(); // c'est obligatoire dans le cas où la fonction est déclarée après main
main()
{
affiche();
}
void affiche()
{
for (int i=0; i<10; i++)
{
printf("Elément numéro %d: %d et son adresse: %d\n", i, tab[i], &tab[i]);
}
}
Exercice 4:
#include <stdio.h>
int tab[10] = {1,2,4,8,16,32,64,128,256,512};
void affiche(); // c'est obligatoire dans le cas où la fonction est déclarée après main
void saisir();
void trie();
int indice();
int produit();
main()
{
saisir();
trie();
printf("Affichage du tableau trié\n");
affiche();
indice();
printf("Le produit de deux tableaux est :%d\n",produit());
}

void affiche()
{
for (int i=0; i<10; i++)
{
printf("Elément numéro %d: %d et son adresse: %d\n", i, tab[i], &tab[i]);
}
}
void saisir()
{
for (int i=0; i<10; i++)
{
printf("Elément l'élément d'indice %d: ", i);
scanf("%d",&tab[i]);
}
}
int indice()
{
int ind;
for (int i=0; i<9; i++)

Prof. Sabri My Abdelouahed 23/38


Abdelouahed.sabri@gmail.com
{
if(tab[i]>tab[i+1])
ind=tab[i];
}
return ind;
}
void trie()
{
int temp;
for (int i=0; i<10; i++)
{
for (int j=i+1; j<10; j++)
{
if (tab[i]<tab[j])
{
temp=tab[i];
tab[i]=tab[j];
tab[j]=temp;
}
}
}
}
int produit()
{
int tblBis[10]={20,0,55,-15,10,8,2,4,11,-2};
int prod=0;
for (int i=0; i<10; i++) // l1 == l2
{
prod=prod + (tab[i] * tblBis[i]);
}
return prod;
}
Exercice 4 : deuxième solution
#include <stdio.h>
void affiche(); // c'est obligatoire dans le cas où la fonction est déclarée après main
void saisir();
void tri();
int indice();
int tab[10] = {1,2,4,8,16,32,64,128,256,512};
int tab2[4] = {14,0,0 ,0};
void main()
{
saisir();
produit ();
tri();
affiche();
printf("l'indice de la plus grande valeur est %d", indice());

}
void tri()
{
int I,IndiceMin, J, temp;
for (I=0; I<(sizeof(tab)/sizeof(int)) -1; I++)
{

Prof. Sabri My Abdelouahed 24/38


Abdelouahed.sabri@gmail.com
/* Recherche du maximum à droite de A[I] */
IndiceMin=I;
for (J=I+1; J<(sizeof(tab)/sizeof(int)); J++)
{
if (tab[J]<tab[IndiceMin])
IndiceMin=J;
}
/* Echange de A[I] avec le maximum */
temp=tab[I];
tab[I]=tab[IndiceMin];
tab[IndiceMin]=temp;
}
}
void produit ()
{
int i, l1, l2, lMax, PS=0;
l1=(sizeof(tab)/sizeof(int));
l2=(sizeof(tab2)/sizeof(int));
lMax= l1>l2? l2 : l1;
for (i=0 ;i< lMax; i++)
PS+=tab[i]*tab2[i];
printf ("le produit est: %d\n", PS);
}
void affiche ()
{
int i;
for (i=0; i<(sizeof(tab)/sizeof(int)); i++)
printf("tab[%d]=%d, Adresse mémoire: %d\n", i, tab[i], &tab[i]);
}
void saisir()
{
int i;
printf("Entrer les éléments du tableau\n");
for (i=0; i<(sizeof(tab)/sizeof(int)); i++)
scanf("%d",&tab[i]);
}
int indice()
{
int i, max=tab[0], j=0;
for (i=0; i<(sizeof(tab)/sizeof(int)); i++)
{
if (max <tab[i])
{
max=tab[i];
j=i;
}
}
return j;
}
Exercice 5 :
x=8 et y=-15 x=8 et y=-15
x=8 et y=-15 x=8 et y=8

Prof. Sabri My Abdelouahed 25/38


Abdelouahed.sabri@gmail.com
Corrigé de la Série n°6 : les chaines de caractères

Exercice 1 :
char b[12] = "un deux trois"; est incorrecte car la taille de la chaine , qui est 13, est supérieure
à la taille réservée pour la variable b
char c[] = 'abcdefg' et char d[1] = 'x';
Sont des déclarations incorrectes ; car les chaines sont déclarées entre ""

Exercice 2 :
#include <stdio.h>
main()
{
/* Déclarations */
char ligne[201]; /* chaîne donnée */
int i,j, compt; /* indices courants */
int L; /* longueur de la chaîne */
int C; /* compteur des lettres 'e' */
/* Saisie des données */
printf("Entrez une ligne de texte (max.200 caractères) :\n");
gets(ligne); /* L'utilisation de scanf est impossible pour */
/* lire une phrase contenant un nombre variable de mots. */

/* a) Compter les caractères */


/* La marque de fin de chaîne '\0' est */
/* utilisée comme condition d'arrêt. */
L=0;
for (i=0; ligne[i]!='\0'; i++)
L++;
printf("Le texte est composé de %d caractères.\n",L);
/* b) Compter les lettres 'a' dans le texte */
compt=0;
for (i=0; i<L; i++)
{
if (ligne[i]=='a')
compt++;
}
printf("Le texte contient %d lettres \'a\'.\n",compt);
/* c) Afficher la phrase à l'envers */
for (i=L-1; i>=0; i--)
putchar(ligne[i]); /* ou printf("%c",ligne[I]); */
putchar('\n'); /* ou printf("\n"); */
return 0;
}

Exercice3 :
#include <stdio.h>
#include <string.h>
#include <ctype.h>
main()
{
char NOM[40];

Prof. Sabri My Abdelouahed 26/38


Abdelouahed.sabri@gmail.com
int i,l;
printf("Introduisez votre nom : \n");
scanf("%s", NOM);
// a) utiliser la fonction strlen pour récupérer la longueur du nom
l=strlen(NOM);
printf("Votre nom est composé de %d lettres.\n",l);
// b) utiliser toupper pour la première lettre et tolower pour le reste
NOM[0]=toupper(NOM[0]);
for (i=1;i<l;i++)
NOM[i]=tolower(NOM[i]);
printf("\nBonjour %s !\n", NOM);
return 0;
}

Exercice 4:
#include <stdio.h>
main()
{
/* Déclarations */
int a;
char JOURS[7][9] = {"lundi", "mardi", "mercredi",
"jeudi", "vendredi", "samedi","dimanche"};
/* Saisie du nombre */
printf("Entrez un nombre entre 1 et 7 : ");
scanf("%d", &a);
/* Affichage du résultat */
if (a>0 && a<8)
printf("Le %d jour de la semaine est %s.\n",a, JOURS[a]);
else
printf("entrer un nombre entre 1 et 7 :\n");
return 0;
}

Exercice 5:
#include <stdio.h>
#include <string.h>
void MajJour (char *);
main()
{
/* Déclarations */
int a; /* nombre entré */
char JOURS[7][9] = {"lundi", "mardi", "mercredi",
"jeudi", "vendredi", "samedi","dimanche"};
/* Saisie du nombre */
printf("Entrez un nombre entre 1 et 7 : ");
scanf("%d", &a);
/* Affichage du résultat*/
if (a>0 && a<8)
{
MajJour(JOURS[a-1]); // ici un passage par référence est utilisé
printf("Le %d jour de la semaine est %s.\n",a, JOURS[a-1]);
}
else

Prof. Sabri My Abdelouahed 27/38


Abdelouahed.sabri@gmail.com
printf("entrer un nombre entre 1 et 7\n");
return 0;
}
void MajJour (char * jr)
{
int i;
// mettre chaque caractère en majuscule de la chaine passée
for (i=0; i<strlen(jr); i++)
jr[i]=toupper(jr[i]);
}

Exercice 6:
#include <stdio.h>
#include <string.h>
main()
{
char txt1[255], txt2[255];
int i, j, l1,l2;
printf("entrer la 1ére chaine \n");
gets(txt1);
printf("entrer la 2éme chaine \n");
gets(txt2);
// a) sans strcat
l1=strlen(txt1);
l2=strlen(txt2);
for (i=l1,j=0; i<l1+l2+1;i++, j++)
txt1[i]=txt2[j];
puts(txt1);
// Avec strcat
printf("entrer la 1ére chaine \n");
gets(txt1);
printf("entrer la 2éme chaine \n");
gets(txt2);
strcat (txt1,txt2);
puts(txt1);
}

Exercice 7:
#include <stdio.h>
#include <string.h>
#include "ctype.h"
void MajJourChaine (char * texte)
{
int i;
// Mettre chaque caractère en majuscule de la chaine passée
for (i=0; i<strlen(texte); i++)
texte[i]=toupper(texte[i]);
}
main()
{
char txt1[255], txt2[255];
int i, j, l1,l2;
printf("entrer la 1ére chaine \n");

Prof. Sabri My Abdelouahed 28/38


Abdelouahed.sabri@gmail.com
gets(txt1);
printf("entrer la 2éme chaine \n");
gets(txt2);
MajJourChaine(txt1); // Mettre à jour txt1
MajJourChaine(txt2); // Mettre à jour txt2
strcat (txt1,txt2); // Concaténation
puts(txt1);
}

Prof. Sabri My Abdelouahed 29/38


Abdelouahed.sabri@gmail.com
Corrigé du contrôle (SN 2016/2017) SMA S3

Corrigé du contrôle de fin de semestre


(Session normale 2016/2017)
Questions de cours :
1- Voir le support de cours.
2- Le langage C’est un langage qui est compilé et qui est sensible à la casse (pour plus de
détails, voir le support de cours)
Exercice 1 :
Le résultat d’exécution du programme C est :
x=6, y=-5 et z=8
x=8, y=6 et z=8
Exercice 2 :
A B P1 P2
Initialisation 1 5 / /
P1=&A 1 5 &A /
P2=&B 1 5 &A &B
*P1=++(*P2) 6 6 &A &B
P1=P2 6 6 &B &B
A= (*P2) - (*P1)++ 0 7 &B &B
Exercice 3 :
#include "stdio.h"
void main()
{ int a,moy=0; // il faut utiliser seulement deux variables comme précisé dans l’énoncé
printf("Donner 5 entiers \n");
scanf ("%d",&a);
moy=a;
scanf ("%d",&a);
moy=moy+a;
scanf ("%d",&a);
moy=moy+a;
scanf ("%d",&a);
moy=moy+a;
scanf ("%d",&a);
moy=moy+a;
printf ("La moyenne est: %d", moy/5);
}
Exercice 4 :
#include "stdio.h"
void saisie(float *aa,float *bb)
{
printf("Résolution de l’équation du premier degré ax+b=0\n");
printf("ENTRER a: \n");
scanf("%f",aa); // pas d'adresse car c'est un pointeur
printf("ENTRER b: \n");

Prof. Sabri My Abdelouahed 30/38


Abdelouahed.sabri@gmail.com
Corrigé du contrôle (SN 2016/2017) SMA S3

scanf("%f", bb); // pas d'adresse car c'est un pointeur


}
void calcul(float aa, float bb)
{
printf ("\nL'équation %.2fx+%.2f=0 ",aa, bb);
if (aa==0 && bb==0)
printf("admet comme solution l'ensemble R\n");
else if(aa==0)
printf("n'admet pas de solution dans R\n");
else
printf ("a pour solution %.2f\n",-bb/aa);
}
void main()
{
float a,b;
saisie(&a, &b);
calcul(a,b);
}
Exercice 5 :
#include <stdio.h>
main()
{
/* Déclarations */
char ligne[128]; /* chaîne donnée */
int i,j; /* indices courants */
int L; /* longueur de la chaîne */
char voyelles[]={'a', 'e', 'i', 'o', 'u', 'y'}, c;
/* Saisie des données */
printf("Entrez une ligne de texte (max.128 caractères) :\n");
gets(ligne);
/* 1) Compter les caractères */
L=0;
for (i=0; ligne[i]!='\0'; i++)
L++;
printf("Le texte est composé de %d caractères.\n",L);
/* 2) Afficher les voyelles et leurs indices*/
for (i=0; i<L; i++)
{
for (j=0; j<6; j++)
{
if (*(voyelles+j) ==ligne[i])
{
printf ("%c à l'indice %d\n", ligne[i],i+1);
}
} }}

Prof. Sabri My Abdelouahed 31/38


Abdelouahed.sabri@gmail.com
Corrigé du contrôle de fin de semestre
(Session rattrapage 2016/2017)
Questions de cours :
1- Voir le support de cours.
2- Voir le support de cours.
Exercice 1 :
1) i = -4 j = -5
2) i = 0 j=1
Exercice 2 :
#include <stdio.h>
main()
{
char c;
float a,b;
printf("Choisir une opération");
printf("Taper + => addition, - => soustraction et * => multiplication\n");
printf("Exemple:\nPour faire l'addition de 1 et 2 taper: 1+2\n");
scanf("%f%c%f", &a,&c,&b);
switch (c)
{
case '+': printf ("%.2f+%.2f=%.2f",a,b,a+b);break;
case '-': printf ("%.2f-%.2f=%.2f",a,b,a-b);break;
case '*': printf ("%.2fx%.2f=%.2f",a,b,a*b);break;
default: printf("Opération incorrect");
}
}
Exercice 3 :
C A B C P1 P2

Initialisation 15 20 128 / /

P1=P2=&A 15 20 128 &A &A

(*P2)++ 16 20 128 &A &A

P2=&C 16 20 128 &A &C

P2=&B+C 16 20 128 &A &B + 128

*P2=*P1-16 16 20 128 &A &B + 128

P2=P2 – 128 16 20 128 &A &B

*P2=++(*P1)-17 17 0 128 &A &B

Prof. Sabri My Abdelouahed 32/38


Abdelouahed.sabri@gmail.com
Exercice 4 :
#include <stdio.h>
void saisir (int *);
void afficheTableMultiplication(int );
main()
{
int val;
saisir(&val);
afficheTableMultiplication(val);

}
void saisir (int *a)
{
printf("Entrer un nombre: ");
scanf("%d", a);
}
void afficheTableMultiplication(int b)
{
for (int i=0; i<=9; i++)
printf("%d x %d = %d\n", b, i, b*i);
}
Exercice 5 :
#include <stdio.h>
#include "string.h""
main()
{
char ligne[40], ligneEnvers[40];
char voy[]={'a','e', 'i', 'o', 'u', 'y'};
int l,compt=0;
puts("Entrer le texte:");
gets(ligne);
l=strlen(ligne);
printf("la taille du texte saisi est: %d\n", l);
for (int i=0; i<l ;i++)
{
for (int j=0; j<6; j++)
{
if (ligne[i]==voy[j])
compt++;
}
}
printf ("Le nombre de voyelles est: %d\n", compt);
// Texte à l'envers
for (int i=0; i<l; i++)
{
ligneEnvers[i]= ligne[l-i-1];
}
ligneEnvers[l]='\0'; // caractère de fin de texte
puts(ligneEnvers);
}

Prof. Sabri My Abdelouahed 33/38


Abdelouahed.sabri@gmail.com
Prof. SABRI My Abdelouahed 34/38
Université Sidi Mohamed Ben Abdellah Année universitaire : 2017 / 2018
Faculté des Sciences Dhar Mehraz Fès Filière : SMA
Semestre : 3

Corrigé du contrôle de fin de semestre (Session normale)

Questions de cours :
Voir le support de cours.

Exercice 1 :
#include "stdio.h"
int main()
{
float a, b ,c;
printf("entrer 3 nbres:\n");
scanf("%f%f%f", &a,&b,&c);
printf("la moyenne est %f", (a+b+c)/3);
return 0;
}

Exercice 2 :
Soit la déclaration des variables suivantes :
int A, B, *P, *Q.
Le tableau suivant représente les cases mémoires des variables :
Variable A B P Q
Adresse Mémoire 7628 7624 7616 7608
A B P Q &P &Q
Initialisation 5 -14 / / 7616 7608
P=&A 5 -14 7628 / 7616 7608
Q=&B 5 -14 7628 7624 7616 7608
*P = ++(*Q) -
0 -14 7628 7624 7616 7608
(*Q)--
P-- ;
Q++ ; 0 0 7624 7628 7616 7608
(*P) -= (-14) ;
P pointe sur la case mémoire dont l’adresse est 7628 (Case A) P—implique que P va
pointer sur la case juste à côté : 7624 (Case B)
De même pour Q qui ponté sur la case 7624 : Q++ implique que Q va pointer sur la case 7628
(*P) -= (-14)  (*P) = (*P) – (14)  P pointe sur B alors B=B+14= (-14) + 14 =0

Exercice 3 :
#include "stdio.h"

void saisie(float *val)


{
scanf("%f",val); // pas d'adresse car c'est un pointeur
}

Prof. SABRI My Abdelouahed 35/38


void calcul(float aa, float bb)
{
printf ("\nL'équation %.2fx+%.2f=0 ",aa, bb);
if (aa==0 && bb==0)
{
printf("admet comme solution l'ensemble R\n");
}
else if(aa==0)
{
printf("n'admet pas de solution dans R\n");
}
else
{
printf ("a pour solution %.2f\n",-bb/aa);
}
}
int main()
{
float a,b;
printf("Résolution de l'équation du premier degré ax+b=0\n");
saisie(&a);
printf("ENTRER b: \n");
saisie(&b);
calcul(a,b);
return 0;
}
Exercice 4 :
#include "stdio.h"
int main()
{
int j=0;
char txtBis[7]; char temp;
char txt[]={'t', 'f', 'a', 'g','e', 'y', 'r'};
for (int i=0; txt[i] !='\0'; i++)
j++;
printf("Le nombre d'élément est: %d\n", j);
for (int i=0; i<j; i++)
{
for (int k=i+1;k<j;k++)
if (txt[i] > txt[k])
{
// comparer les caractères est le même que comparer leurs codes ASCII
temp=txt[i];
txt[i]=txt[k];
txt[k]=temp;
}
}
for (int i=0; i<7; i++)

Prof. SABRI My Abdelouahed 36/38


{
printf("%c\t", txt[i]);
}
printf("\n");
for (int i=0; i<7; i++)
{
printf("%c\t", txt[7-i-1]);
}
return 0;
}
Exercice 5 :
#include "stdio.h"
#include "ctype.h"
int main()
{
char txt[255];
printf("Entrer un texte:\t");
gets(txt);
for (int i=0; txt[i]!='\0'; i++)
{
txt[i]=toupper(txt[i]);
}
puts(txt);
return 0;
}

Prof. SABRI My Abdelouahed 37/38

Vous aimerez peut-être aussi