Vous êtes sur la page 1sur 2

IFITEP I3 - INFOC

Groupe C1

2006/2007

Test Langage C
1 heure - Tous documents interdits
Nom : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Prenom : . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exercice 1
Sachant quune variable de type int a une taille de 2 octets et utilise le codage
complement `a deux, quels sont les plus petit et plus grand nombres entiers que lon
peut stocker dans une variable de ce type ?
Exercice 2
En supposant que les variables n, p et q sont de type int et quelles contiennent
respectivement les valeurs 8, 13 et 29, quelles sont les valeurs des expressions
suivantes :
1
2
3
4
5

n + p /
n + q /
n + p %
(n + q)
n + p /

q
p
q
% p
n + p

Exercice 3
Soit le programme suivant :
1
2

#include <s t d i o . h>


#include < s t d l i b . h>

3
4
5
6
7
8

int main ( void )


{
p r i n t ( H e l l o World ! \ n )
return EXIT SUCCESS ;
}

Sa compilation echoue avec le message suivant :


hello.c: Dans la fonction  main :
hello.c:6: attention : implicit declaration of function print
hello.c:7: error: erreur de syntaxe before "return"
Proposez une version corrigee du programme.

- 1/2 -

djoume.salvetti@upmc.fr

IFITEP I3 - INFOC

Groupe C1

2006/2007

Exercice 4
Le programme suivant provoque une erreur de segmentation `a lexecution :
1
2

#include <s t d i o . h>


#include < s t d l i b . h>

3
4
5
6
7
8
9
10
11

int main ( void )


{
int a = 0 ;
p r i n t f ( Entre z un nombre : ) ;
s c a n f ( %d , a ) ;
p r i n t f ( Merci pour %d \n , a ) ;
return EXIT SUCCESS ;
}

Expliquez pourquoi et proposez une correction.

Question 4.1 : Ecrire


un programme qui demande `a lutilisateur de rentrer deux
nombres entiers au clavier, puis qui les affiche dans lordre croissant.

Question 4.2 : Ecrire


un programme qui demande `a lutilisateur de lui fournir un
nombre entier positif et inferieur `a 100 et ceci jusqu`a ce que la reponse soit
satisfaisante ; le dialogue se presentera ainsi :
donnez un entier positif inf
erieur a
` 100 : 452
donnez un entier positif inf
erieur `
a 100 : 0
donnez un entier positif inf
erieur `
a 100 : 28
merci pour le nombre 28
Question 4.3 : Dans le programme de lexercice precedent, lutilisateur se voit
poser la meme question, quil sagisse dune premi`ere demande ou dune nouvelle
demande suite `a une reponse incorrecte. Ameliorez-le de facon `a ce que le dialogue se
presente ainsi :
donnez un entier positif inf
erieur `
a 100 : 452
SVP positif inf
erieur `
a 100 : 0
SVP positif inf
erieur `
a 100 : 28
merci pour le nombre 28

Question 4.4 : Ecrire


un programme qui lit 10 notes et indique combien dentre
elles sont superieures `a leur moyenne (cest `a dire la moyenne de ces 10 notes et non
la valeur 10).

Question 4.5 : Ecrire


une fonction permettant de calculer la factorielle dun
nombre.
Rappel : n! = n (n 1) (n 2) ... 3 2 1 et 0! = 1

Question 4.6 : Ecrire


une fonction permettant dechanger le contenu de deux
variables de type int dont les adresses sont passees en argument.
- 2/2 -

djoume.salvetti@upmc.fr