Académique Documents
Professionnel Documents
Culture Documents
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
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
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 ?
4
A