Vous êtes sur la page 1sur 4

Nom et prénom : ………………………………………………………………………………………

A
N° apogée : ………………………………………………………………………………………

Barême : Bonne réponse (1 pt), Pas de réponse (0 pt), Mauvaise réponse (-0.5 pt)
UNIVERSITE IBN TOFAIL Année : 2022-2023
Faculté des Sciences Filière : SMI S3
Département d’Informatique Durée : 1h30
KENITRA
Programmation I
EXAMEN FINAL
Question 1
Laquelle des expressions suivantes n’est pas un complément de l’expression logique suivante ?
x == y || x != z
 A. !(x != y && x == z)  B. x != y && x == z
 C. !(x == y || x != z)  D. aucune des autres réponses n’est correcte

Question 2
Qu’affiche l’extrait de code suivant ?
int x = 7, y = 10, z = 5, res = 0;
res = ++y - 10 || z - 5 && x;
res += y++ - 11 || z++ - 5 && x;
res += y + 1 > 11 && (z++ >= 6 || x);
printf("res: %d\n", res);
 A. res: 0  B. res: 1
 C. res: 2  D. aucune des autres réponses n’est correcte

Question 3
Laquelle des phrases suivantes concernant les fonctions n'est pas vraie ?
 A. Une variable déclarée localement dans une fonction peut avoir le même identifiant qu'un des
paramètres de cette fonction.
 B. Les données envoyées par la fonction appelante à la fonction appelée seront reçues dans le
même ordre que celui dans lequel elles ont été transmises.
 C. Les paramètres sont définis comme des variables locales dans l’entête de la fonction et ne
doivent pas être redéfinis dans la section de déclaration locale de la fonction.
 D. aucune des autres réponses n’est correcte

Utiliser le code ci-dessous pour les questions 4 et 5.


int f(int m) { int main() {
int d = 0; int i;
switch(m % 2) { int num = 0;
case 1: d = 31;break; for(i = 1;i<6;i++)
case 0: d = m==2?28:30; num += f(i);
} printf("num: %d\n", num);
return d; } return 0; }

Question 4
Laquelle des réponses suivantes est le résultat de l'instruction printf ?
 A. num: 151  B. num: 152
 C. num: 153  D. num: 154

1
A
Question 5
Laquelle des réponses suivantes est le résultat de l'instruction printf si l'expression (m % 2) est
remplacée par (m % 2 == 0) ?
 A. num: 151  B. num: 152
 C. num: 153  D. num: 154
Utiliser le code ci-dessous pour les questions 6 et 7.
int a, b, c, d = 0;
for(a = 64; a > 1; a /= 2)
for(b = 1; b < 27; b *= 3)
for(c = 2; c < 10; c += 2)
d++;
printf("som: %d\n", a+b+c);
printf("d: %d\n", d);

Question 6
 A. som: 40  B. som: 38
 C. som: 36  D. som: 34

Question 7
 A. d: 84  B. d: 66
 C. d: 60  D. d: aucune des autres réponses n’est correcte

Utiliser le code ci-dessous pour les questions 8, 9 et 10.


#define N 8 int main() {
int g(int t[], int n) { int x[N] = {9,5,15,3,14,17,7};
int i, res = 0; int y[N] = {11,15,14,17,16,0,5};
for(i = 0; i < N; i++) { int i, ct = 0;
if(t[i] == n) { for(i = 0; i < N; i++) {
res = 1; ct += g(y, x[i]); }
t[i] = -1; printf("ct: %d\n", ct);
i = N;} printf("y[0]: %d\n", y[0]);
} printf("y[5]: %d\n", y[5]);
return res; } return 0; }

Question 8
 A. ct: 0  B. ct: 5
 C. ct: 8  D. aucune des autres réponses n’est correcte

Question 9
 A. y[0]: 0  B. y[0]: -1
 C. y[0]: 11  D. aucune des autres réponses n’est correcte

Question 10
 A. y[5]: 0  B. y[5]: -1
 C. y[5]: 16  D. aucune des autres réponses n’est correcte

Question 11
Quel sera le contenu des trois premiers éléments du tableau t après l’exécution de l’extrait de code
suivant ?
int t[10]={10,20,30}; int *p; p=&t[2]; p -= 1; --(*--p);
 A. {9,19,29}  B. {10,20,27}
 C. {9,20,30}  D. aucune des autres réponses n’est correcte

2
A
Question 12
Si p et q sont des pointeurs sur un int, pointant sur des éléments d'un tableau, laquelle des propositions
suivantes n'est pas valide :
 A. p = q + 2;  B. *p = p - q;
 C. *p = p + q;  D. *p = *p + *q;

Question 13
Si c est une variable de type char, laquelle des instructions suivantes est incorrecte ?
 A. i += c; /* i de type int */  B. c = 2 * c - 1;
 C. printf(c);  D. putchar(c);

Question 14
Supposons que t soit un tableau int à une dimension et que p soit un pointeur sur un int. Supposons
que p = t vient d'être effectuée. Laquelle des expressions suivantes est incorrecte ?
 A. p == &t[0]  B. *p == t[0]
 C. p == t[0]  D. p[0] == t[0]

Question 15
Soit l’extrait de code suivant :
struct photo {
char nom[50] ;
int rang ;
};
int main() {
struct photo chat={"imgChat", 50} ;
struct photo *pict = &chat;
return 0 ;
}
En considérant la structure ci-dessus, quelle est l’instruction correcte pour affecter au rang la valeur
45 ?
 A. pict.rang=45;  B. rang->pict=45;
 C. pict->rang=45 ;  D. rang.pict=45 ;

Question 16
Qu’affiche le programme suivant ?
void h(int* x,int y) {
y=y+10 ;
*x=*x+y ;
}
int main() {
int v1=22,v2=23 ;
h(&v1,v2) ;
h(&v2,v1) ;
printf("%d",v1+v2) ;
return 0 ;
}
 A. 139  B. 108
 C. 170  D. aucune des autres réponses n’est correcte

3
A
Question 17
Qu’affiche le programme suivant ?
int main()
{
int x = 1, z[2] = {10, 11};
int *p = NULL;
p = &x;
*p = 10;
p = & z[1];
*(& z[0] + 1) += 3;
printf("%d, %d, %d\n", x, z[0], z[1]);
return 0;
}
 A. 1, 10, 11  B. 1, 10, 14
 C. 10, 14, 11  D. 10, 10, 14

Question 18
Qu’affiche le programme suivant ?
f(int **ptr2,int **ptr1) { int main() {
int*ii; int v1=5, v2=10;
ii=*ptr2; int *p1=&v1, *p2=& v2;
*ptr2=*ptr1; f(&p1, & p2);
*ptr1=ii; printf("%d %d",v2,v1);
**ptr1 *= **ptr2; return 0 ;
**ptr2 += **ptr1; } }

 A. 60 70  B. 50 50
 C. 50 60  D. 60 50

Question 19
Qu’affiche l’extrait de code suivant ?
int a[]={10,20,30,40,50};
int *p[]={a,a+3,a+4,a+1,a+2};
int **pp=p;
pp++;
printf("%d%d", pp-p, **pp) ;

 A. 140  B. 141
 C. 142  D. Erreur de compilation

Question 20
Si p1, p2 et p3 sont des pointeurs de type char, int et float, respectivement, laquelle des assertions
suivantes est vraie ?

 A. Les tailles de p1, p2 et p3 sont identiques.


 B. La taille de p3 est supérieure à la taille de p1.
 C. La taille de p2 est supérieure à la taille de p1.
 D. La taille de p3 est supérieure à la taille de p2.

4
A

Vous aimerez peut-être aussi