Vous êtes sur la page 1sur 2

Nom:……………………..…………….……………….… N.exam :………………….

……
Prénom :……………………………….………………… Durée 1h30 Niveau CP2

Contrôle 2 Programmation C (2020-2021)


L’utilisation de téléphone portable, calculatrice ou tout document est interdite.

Exercice 1 Pour chaque question choisissez la bonne réponse


Q1 Si un pointeur p sur une structure STR est défini par « struct STR { int a; struct { double x, y; } t; } *p ; », alors
le champ x de la structure STR pointée par p est accessible par l'expression :
p.t.x p->a.x p->t->x p->t.x
Q2 Si f est une fonction prenant en paramètre un pointeur sur un tableau de double et renvoyant un pointeur d'entier,
alors le prototype de f peut s'écrire :
int f (double [ ]) int* f ([ ] double) int* f (double*) int (*f) (double [ ])
Q3 Si p est défini par « int * p; », alors « &p[1]+ 1 » est de type :
(int) (int*) (int**) C'est une expression erronée
Q4 Si t est défini par « int * t; », alors « &t » est de type :
(int) (int*) (int**) C'est une expression erronée
Q5 Si t est défini par « int t[ ] = { 1, 0 }; » , alors « t[t[*(t + 1)]] » vaut :
0 1 t C'est une expression erronée
Q6 Si t est défini par « int t[ ] = { 1, 0 }; » , alors « t[*(t + *t)] » vaut :
0 1 t C'est une expression erronée
Q7 Si s et t sont définis par « int t[ ] = { 1, 2, 3, 4, 5 }; int * s = t + 4 » , alors « s[-2] » vaut :
1 3 4 C'est une expression erronée
Q8 Laquelle, des fonctions récursives suivantes, retourne la valeur de factoriel n ?

Exercice 2
Ecrire une fonction qui prend en paramètre deux variables de type Point, et retourne la distance euclidienne entre ces
deux points. typedef struct { int x, y ;} Point; // déclaration du type Point
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..

1
Exercice 3
static int a = 2; int b = 3; Soit le programme à côté, donner le résultat de
int f1 (int i) { return (i + 1); } son exécution :
int f2 (int i) { return (i ++); }
int f3 (int * i) { return ((*i) ++); } L1 :…………………………………………
int f4 (int a){ return (a++ + b++);}
int f5 (int * a, int c){ L2 :…………………………………………
static int d = 1; int e = 0; L3 :…………………………………………
return ((*a)++ + c + d++); }
int f6 (int * b, int c){ L4 :…………………………………………
int d = 1; return ((*b)++ + c + d++); } L5 :…………………………………………
main (){
int e = 0; L6 :…………………………………………
printf ("L1: %d\n L2: %d\n L3: %d\n ", f1(e), f2(e), f2(e));
L7 :…………………………………………
e = 0;
printf ("L4: %d\n L5: %d\n ", f3(&e), f3(&e)); L8 :…………………………………………
e = 0;
printf ("L6: %d\n L7: %d\n L8: %d\n", f4(e), f4(e), f4(b)); L9 :…………………………………………
e = 0; L10 :………………………………………
printf ("L9: %d\n L10: %d\n L11: %d\n L12: %d\n ", f5(&a, e),
f5(&e, a), f6(&b, a), f6(&e, e)); L11 :………………………………………
} L12 :………………………………………

Exercice 4
Ecrire une fonction qui prend en paramètre une chaîne de caractères (en minuscules), de la langue française, et
retourne le nombre de voyelles dans la chaîne.

……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..
……………………………………………………………………………………………...……………….…..

Vous aimerez peut-être aussi