Académique Documents
Professionnel Documents
Culture Documents
Exercice 1:
Tester le programme suivant et conclure.
#include <stdio.h>
void main()
{
printf("BONJOUR ");
printf("IL FAIT BEAU\n"); /* équivalent à puts("BONJOUR"); */
printf("BONNES VACANCES");
}
Exercice 2:
Expérimentez avec les séquences d'échappement que vous trouvez dans le tableau ci-dessous et
complétez les colonnes vides.
description
séq. d'échapp.
\n new line
\t
\b
\r
\"
\\
\0
\a
Exercice 7:
Exercice 1:
Que va-t-il se passer lors de l'exécution du programme suivant, si l'utilisateur saisit 67, 62 et 6543?
#include <stdio.h>
#include <conio.h>
void main()
{
char c;
printf("ENTRER UN CARACTERE: ");
scanf("%c",&c);
printf("VOICI SON CODE ASCII: %d\n",c);
printf("POUR CONTINUER FRAPPER UNE TOUCHE ");
getch();
}
Exercice 2:
Ecrire un programme qui permute et affiche les valeurs de trois variables A, B, C de type entier qui
sont entrées au clavier :
A ==> B , B ==> C , C ==> A
Exercice 3:
Ecrire un programme qui affiche le quotient et le reste de la division entière de deux nombres
entiers entrés au clavier ainsi que le quotient rationnel de ces nombres.
Exercice 4:
Ecrire un programme qui calcule la somme de quatre nombres du type int entrés au clavier,
a) en se servant de 5 variables (mémorisation des valeurs entrées)
b) en se servant de 2 variables (perte des valeurs entrées)
Exercice 5:
Ecrire un programme qui affiche la résistance équivalente à trois résistances R1, R2, R3 (type
double),
- si les résistances sont branchées en série:
Rsérie = R1+R2+R3
Exercice 6:
a) Ecrire un programme qui calcule le prix TTC (type double) d'un article à partir du prix net (type
int) et du pourcentage de TVA (type int) à ajouter. Utilisez la formule suivante en faisant attention
aux priorités et aux conversions automatiques de type:
b) Ecrire un programme qui calcule le prix net d'un article (type double) à partir du prix TTC (type
double) et du pourcentage de TVA (type int) qui a été ajoutée.
(Déduisez la formule du calcul de celle indiquée ci-dessus)
TP 3 :
N .MLAYAH & W .ELTAIEF 5 2004-2005
Les instructions de branchement conditionnel
Objectifs :
- Comprendre l’utilité des instructions de branchement conditionnel
Exercice 1:
Considérez la séquence d'instructions suivante:
if (A>B) printf ("premier choix \n"); else
if (A>10) printf ("deuxième choix \n");
if (B<10) printf ("troisième choix \n");
else printf ("quatrième choix \n");
a) Copiez la séquence d'instructions en utilisant des tabulateurs pour marquer les blocs if - else.
b) Déterminez les réponses du programme pour chacun des couples de nombres suivants et vérifiez
à l'aide de l'ordinateur.
A=10 et B=5 :
A=5 et B=5 :
A=5 et B=10 :
A=10 et B=10 :
A=20 et B=10 :
A=20 et B=20 :
Exercice 2 :
Ecrivez un programme qui lit trois valeurs entières (A, B et C) au clavier et qui affiche la plus
grande des trois valeurs, en utilisant:
a) if - else et une variable d'aide MAX
b) if - else if - ... - else sans variable d'aide
c) les opérateurs conditionnels et une variable d'aide MAX
d) les opérateurs conditionnels sans variable d'aide
Exercice 3 :
Ecrivez un programme qui lit trois valeurs entières (A, B et C) au clavier. Triez les valeurs A, B et
C par échanges successifs de manière à obtenir :
val(A), val(B) et val(C).
Affichez les trois valeurs.
Exercice 4 :
Utilisez une variable d'aide D pour la valeur du discriminant b2-4ac et décidez à l'aide de D, si
l'équation a une, deux ou aucune solution réelle. Utilisez des variables du type int pour A, B et C.
Considérez aussi les cas où l'utilisateur entre des valeurs nulles pour A; pour A et B; pour A, B et
C. Affichez les résultats et les messages nécessaires sur l'écran.
TP 4 :
Objectifs :
- Utiliser les structures répétitives dans les programmes C
- Distinguer la différence entre les différentes structures
- Savoir la structure adéquate selon le programme à écrire
Exercice 1:
Ecrivez un programme qui lit N nombres entiers au clavier et qui affiche leur somme, leur produit et leur
moyenne. Choisissez un type approprié pour les valeurs à afficher. Le nombre N est à entrer au clavier.
Résolvez ce problème,
a) en utilisant while,
b) en utilisant do - while,
c) en utilisant for.
d) Laquelle des trois variantes est la plus naturelle pour ce problème?
Exercice 2:
Complétez la 'meilleure' des trois versions de l'exercice 1 :
Répétez l'introduction du nombre N jusqu'à ce que N ait une valeur entre 1 et 15.
Quelle structure répétitive utilisez-vous? Pourquoi?
Exercice 3:
Calculez par des soustractions successives le quotient entier et le reste de la division entière de deux entiers
entrés au clavier.
Exercice 4:
Calculez la factorielle N! = 1*2*3*...*(N-1)*N d'un entier naturel N en respectant que 0!=1.
a) Utilisez while,
b) Utilisez for.
Exercice 5:
Calculez par multiplications successives XN de deux entiers naturels X et N entrés au clavier.
Exercice 6:
Calculez la somme des N premiers termes de la série harmonique :
1 + 1/2 + 1/3 + ... + 1/N
Exercice 7:
Exercice 10:
Calculez le N-ième terme UN de la suite de FIBONACCI qui est donnée par la relation de récurrence:
U1=1, U2=1 et UN=UN-1 + UN-2 (pour N>2)
Déterminez le rang N et la valeur UN du terme maximal que l'on peut calculer si on utilise pour UN :
- le type int
- le type long
- le type double
- le type long double
Exercice 11:
a) Calculez la racine carrée X d'un nombre réel positif A par approximations successives en utilisant la
relation de récurrence suivante:
XJ+1 = (XJ + A/XJ) / 2, avec X1=A ;
La précision du calcul J est à entrer par l'utilisateur.
b) Assurez-vous lors de l'introduction des données que la valeur pour A est un réel positif et que J est un
entier naturel positif, plus petit que 50.
c) Affichez lors du calcul toutes les approximations calculées :
La 1ère approximation de la racine carrée de ... est ...
La 2e approximation de la racine carrée de ... est ...
Exercice 12:
Affichez un triangle isocèle formé d'étoiles de N lignes (N est fourni au clavier):
Nombre de lignes : 8
*
***
*****
*******
*********
***********
*************
***************
Exercice 13:
Affiche la table des produits pour N variant de 1 à 10 :
X*Y I 0 1 2 3 4 5 6 7 8 9 10
--------------------------------------------------
0 I 0 0 0 0 0 0 0 0 0 0 0
1 I 0 1 2 3 4 5 6 7 8 9 10
2 I 0 2 4 6 8 10 12 14 16 18 20
3 I 0 3 6 9 12 15 18 21 24 27 30
4 I 0 4 8 12 16 20 24 28 32 36 40
5 I 0 5 10 15 20 25 30 35 40 45 50
6 I 0 6 12 18 24 30 36 42 48 54 60
7 I 0 7 14 21 28 35 42 49 56 63 70
8 I 0 8 16 24 32 40 48 56 64 72 80
9 I 0 9 18 27 36 45 54 63 72 81 90
10 I 0 10 20 30 40 50 60 70 80 90 100
TP 5 :
Exercice 1 :
Ecrire un programme qui lit la dimension N d'un tableau T du type int, remplit le tableau par des
valeurs entrées au clavier et affiche le tableau.
a) Calculer et afficher ensuite la somme des éléments du tableau.
b) Déterminer et afficher l’élément maximum du tableau et sa position
c) Déterminer et afficher l’élément minimum du tableau et sa position
d) Ranger ensuite les éléments du tableau T dans l'ordre inverse sans utiliser de tableau
d'aide. Afficher le tableau résultant.
e) Copiez ensuite toutes les composantes strictement positives dans un deuxième tableau
TPOS et toutes les valeurs strictement négatives dans un troisième tableau TNEG.
f) Afficher les tableaux TPOS et TNEG.
Remarque : Si le tableau contient plusieurs maxima ou minima, le programme retiendra la position
du premier maximum ou minimum rencontré.
Exercice 2: Produit scalaire de deux vecteurs
Ecrire un programme qui calcule le produit scalaire de deux vecteurs d'entiers U et V (de même dimension).
Exemple:
| 3 2 -4 | * | 2 -3 5 | = 3*2+2*(-3)+(-4)*5 = -20
Exercice 3:
Ecrire un programme qui permet de rechercher dans un tableau d'entiers A une valeur VAL entrée
au clavier. Afficher la position de VAL si elle se trouve dans le tableau, sinon afficher un message
correspondant.
Exercice 4: Maximum et minimum des valeurs d'un tableau
Ecrire un programme qui détermine la plus grande et la plus petite valeur dans un tableau d'entiers
A. Afficher ensuite la valeur et la position du maximum et du minimum. Si le tableau contient
plusieurs maxima ou minima, le programme retiendra la position du premier maximum ou
minimum rencontré.
Exercice 1:
Lesquelles des chaînes suivantes sont initialisées correctement ? Corrigez les déclarations fausses
et indiquez pour chaque chaîne de caractères le nombre d'octets qui sera réservé en mémoire.
char c[] = "a\nb" ;
char c[8] = "a bb ccc" ;
Char c[] = 'OSI' ;
char c[10] = '1';
char c[] = "dec" "corr";
char c[2] = {'a', '\0'};
char c[4] = {'a', 'b', 'c'};
char c[4] = "'x'";
Exercice 2:
Ecrire un programme qui demande l'introduction de votre nom et votre prénom et qui
- Affiche la longueur totale du nom.
- Compare le nom et le prénom lexico graphiquement.
- Compare le nom et le prénom en tenant compte juste des k premiers caractères
- Copie la moitié du nom et la moitié du prénom dans une troisième variable et l’affiche.
- Inverse le nom et l’affiche
- Recherche la première occurrence d’un caractère dans le nom et l’affiche.
- Rechercher la première occurrence d’une sous chaîne dans le prénom.
Exercice 3:
Ecrire un programme qui lit N mots (N entré par l’utilisateur) et les affiche ensuite dans une ligne.
Utiliser deux variables au maximum.
Exercice 4:
Ecrire un programme qui lit un texte T et enlève toutes les apparitions d’un caractère saisi au
clavier en tassant les éléments restants. Les modifications se feront dans la même variable T.
Exercice 1 :
Ecrire un programme qui permet de faire des opérations sur les nombres complexes selon le choix
de l’utilisateur (somme, module, argument, division)
Exercice 2 :
Ecrire un programme qui permet de saisir les caractéristiques matérielles et logicielles d’un
ordinateur dans une structure puis les afficher.
- numéro de série
- type du processeur
- la vitesse du processeur
- taille de la mémoire
- type de la mémoire
- type du chipset
- système d’exploitation installé
Exercice 3 :
Écrire un programme qui permet de saisir un tableau de 3 ordinateurs avec les caractéristiques
précédentes. Calcule et affiche l’ordinateur ayant la plus grande vitesse puis la moyenne des
vitesses.
Exercice 4 :
Ecrire un programme qui permet de saisir un ensemble de produits (chacun caractérisé par son
code, sa désignation, la quantité en stock et le prix unitaire) dans un tableaux et afficher ensuite les
informations relatives à un produit à partir de son code.
Exercice 5 :
Utiliser la fonction getdate pour récupérer la date maintenue par le système d’exploitation et
l’afficher.
Exercice 1:
Déclarer un réel r et un pointeur pr vers un réel. Imprimer la valeur de r et de pr. Initialiser le réel
à une valeur arbitraire et faire pointer pr vers r. Imprimer la valeur de r et de pr. Modifier le réel
pointé par pr (en utilisant pr). Imprimer la valeur de r.
Exercice 2 :
Sachant qu’on a :
int x ;
int *p ;
p=&x ;
Ecrire l’équivalent des expressions suivantes en fonction de x, donner le contenu de x et *p.
Y=*p + 1 ;
*p = *p + 2 ;
*p +=2 ;
++*p ;
(*p)++ ;
Exercice 3 :
Sachant qu’on travaille avec une machine dont la taille du mot mémoire est 2 octets. Et que le type
float est codé sur 4 octets. Donner les valeurs de P et Q, *P et *Q, x et y après l’exécution de
chaque instruction. On suppose que x et y sont rangé aux adresses 20 et 30.
float x=5,y=3 ;
float *P, *Q ;
P=&x ; Q=&y ;
P+=5 ;
Q - - ;
Exercice 4 :
Ecrire un programme qui, pour un tableau de taille N, affiche ses éléments dans l’ordre croissant
puis dans l’ordre décroissant en utilisant le concept pointeur.
Exercice 5 :
Donnez le contenu de A, B, C, P1 et P2 après chaque instruction.
int A = 1; int B = 2;int C = 3;
int *P1, *P2;
P1=&A; P2=&C; *P1=(*P2)++;
Exercice 1:
Implémenter le programme suivant en C
programme MANIPULATION
| entier A,B,C
| en A ranger 208
| en B ranger 5
| en C ranger -34
| écrire A,B,C
| MANIPULER(A,B,C)
| écrire A,B,C
fprogramme (* fin MANIPULATION *)
procédure MANIPULER(X,Y,Z)
| donnée: entier X,Y
| résultat: entier Z
| écrire X,Y,Z
| en X ranger X divent 2
| en Y ranger Y*2
| en Z ranger X+Y
| écrire X,Y,Z
fprocédure (* fin MANIPULER *)
Exercice 2:
Ecrire la fonction TRANSPO_MATRICE à cinq paramètres MAT, L, LMAX, C, CMAX qui
effectue la transposition de la matrice MAT en utilisant la fonction PERMUTER.
TRANSPO_MATRICE retourne une valeur logique qui indique si les dimensions de la matrice
sont telles que la transposition a pu être effectuée. Ecrire un petit programme qui teste la fonction
TRANSPO_MATRICE.
Exercice 3:
On voudrait écrire un ensemble de fonctions qui permettent de faire quelques manipulations sur les
tableaux à une dimension. Ecrire les fonctions suivantes :
- SAISIE_TAB pour la saisie des éléments d’un tableau
AFFICH_TAB pour l’affichage des éléments d’un tableau
void main()
{
/* test des deux fonctions déjà définies */
int table[5] ; /* déclaration d’un tableau nommé table, de type int et de dimension 5 */
SAISIE_TAB (table, 5) ; /* appel de la fonction SAISIE_TAB pour remplir table */
AFFICH_TAB(table,5); /* appel de la fonction SAISIE_TAB pour afficher table */
}
Exercice 1:
Soit le fichier classe.txt contenant trois colonnes, séparés par des tabulations, décrivant
respectivement les noms et les notes des étudiants d’une classe en algorithmique et en
programmation.
Ecrire un programme en langage C permettant de calculer la moyenne de chaque étudiant et la
placer dans une quatrième colonne.
Exercice 2:
Soit le fichier complexe.txt contenant des nombres complexes représentés par une partie
imaginaire et une partie réelle placée chacune dans une colonne.
Ecrire un programme C permettant de :
a) définir une structure adéquate pour représenter un nombre complexe.
b) Transférer le contenu de ce fichier dans une liste chaînée.
c) Trier la liste par ordre croissant des modules.
d) Transférer le contenu de la liste triée dans le fichier en ajoutant les modules
correspondants.
Exercice 3:
Ecrire un programme C permettant de comparer deux fichiers file1 et file2 et afficher les mots
communs à ces deux fichiers.
Exercice 4:
Ecrire un programme C permettant de vérifier l’existence dans fichier d’un mot lu à partir du
clavier et afficher le nombre d’occurrences de ce mot.
Exercice 4:
Institut Supérieur
des Etudes Technologiques
de Mahdia
Avenue Elmourouj
99327637 : xaF511170427637
Hiboune/ 00427637
Mahdia : léT المهدية1115
هيبون شارع المروج
Exercice 1 :
Réaliser un programme qui affiche les lettres communes à deux mots fournis au
clavier. On prévoira d’afficher plusieurs fois une lettre qui apparaît à plusieurs reprises dans
chacun des deux mots.
On supposera que ces mots ne peuvent pas comporter plus de 26 caractères et on les lira à
l’aide de la fonction gets. On utilisera le formalisme pointeur.
Exp :
Donnez un premier mot : monsieur
Donnez un deuxième mot : bonjour
La lettre o est commune aux deux mots
La lettre n est commune aux deux mots
La lettre u est commune aux deux mots
La lettre r est commune aux deux mots
Exercice 2 :
Imaginez que vous écrivez un programme qui ait besoin d’informations géographiques.
Soit la structure « ville » susceptible de contenir pour chaque ville :
Le nom ( 30 caractères)
La latitude ( nombre flottant)
La longitude ( nombre flottant)
Le nombre d’habitants ( entier long)
Le pays auquel elle appartient ( 20 caractères)
La surface ( nombre flottant)
L’emplacement de la ville dans le pays ( Nord, Sud, Est ou Ouest)
Examen : Programmation 2
Documents non autorisés
Matière :Programmation 2 Durée : 2 heures
Enseignant(e)s :N.MLAYAH Date : 13/01/2005
Exercice 1 :
Une suite géométrique est définie par :
U0
et
q tel que Un= q * Un-1 pour n ≥ 1
1. Ecrire la fonction suite de type long qui a comme paramètre respectivement U0, q et
un entier positif n et qui retourne la valeur de Un. Utiliser la méthode récursive.
2. La somme d’une suite géométrique est définie comme suit :
( n21 n1 )
n2 un1 ( 1q )
uk
1q
k n1
Ecrire la fonction somme de type long qui a comme paramètre respectivement U0, q,
n2
Il s’agit de rechercher la planète qui passe le plus prés du soleil, la planète qui passe le plus
loin, la planète la plus grande et la planète la plus massive.
1. Définir une structure planete regroupant les propriétés d’une planète. Le nom sera
représenté par un tableau de 8 caractères.
2. Définir une variable planetes représentant le tableau des planètes. Les champs de chaque
structure seront initialisés avec les valeurs contenues dans chaque ligne. Par exemple,
l’élément 0 du tableau planètes sera initialisé à : {"Mercure", 459e5, 697e5, 2439,3.3e23}.
2. Définir une variable plus de type structure à 4 champs : pres, loin, grande et lourde de
types int.
3. Ecrire le programme C qui :
- affecte au champ pres le rang dans le tableau planetes de la planète qui passe le plus
prés du soleil, au champ loin le rang de celle qui passe le plus loin du soleil, au champ
grande le rang de la plus grande (plus grand rayon) et au champ massive le rang de la
plus massive ;
- affiche les réponses sous la forme :
? passe le plus près du soleil
? passe le plus loin du soleil
? est la plus grande
? est la plus massive
(où ? est un nom de planète).
Ce programme aura le schéma suivant :
#include <stdio.h>
main()
{
définitions
construction de la valeur de la variable plus
affichage
}