Autotest de maˆıtrise du langage C
Chaque question propose plusieurs r´eponses possibles dont une, plusieurs ou ´eventuellement z´ero sont correctes. Il faut cocher toutes les r´eponses correctes.
IQ. 1 Le langage C est un langage
orient´e objet fonctionnel imp´eratif typ´e statiquement typ´e dynamiquement IQ. 2 Le langage C fut d´evelopp´e par
D. Ritchie et K. Thompson B. Kernighan et D. Ritchie
B. Stroustrup B. Gates S. Jobs
IQ. 3 L’instructionn = n + 1;est ´equivalente `a
n++; ++n; *n++; *++n; n += 1; n + 1 = n;
IQ. 4 La d´eclaration d’un pointeurpsur un entier se fait par
int* p; int p*; int[] p; int p[]; int& p; int p&;
IQ. 5 R´ecup´erer l’adresse d’une variablense fait par
*n; n*; []n; n[]; &n; n&;
IQ. 6 La d´eclaration d’une fonctionfprenant un tableautd’entiers en param`etre se fait par f(int* t) f(int t*) f(int[] t); f(int t[]); c’est impossible.
IQ. 7 La d´eclaration d’une fonctionfretournant un tableau d’entiers se fait par
int* f() int[] f() int[f()] int(f[]); c’est impossible.
IQ. 8 Le type des chaˆınes de caract`eres en C est
char char* char [] string n’existe pas
IQ. 9 Quelle syntaxe permet d’acc´eder `a l’objet point´e par un pointeurpet de le modifier ?
*p = a p = a &p = a c’est impossible
IQ. 10 Quelle syntaxe permet de modifier un pointeurp?
*p = a p = a &p = a c’est impossible
IQ. 11 La syntaxe p->f()est ´equivalente `a
p[f()] *(p.f()) *p.f() (*p).f() n’existe pas
IQ. 12 La syntaxe p[n]est ´equivalente `a
p+n *(p+n) *p+n p*n n’existe pas
IQ. 13 Apr`es la d´eclarationint n = 0, la valeur de l’expressionn = nest
true false 0 1 2 aucune ne compile pas
IQ. 14 Apr`es la d´eclarationint n = 0, la valeur de l’expressionn += nest
true false 0 1 2 aucune ne compile pas
IQ. 15 Apr`es la d´eclarationint n = 0, la valeur de l’expressionn <= nest
true false 0 1 2 aucune ne compile pas
IQ. 16 Apr`es la d´eclarationint n = 0, la valeur de l’expressionn == nest
true false 0 1 2 aucune ne compile pas
IQ. 17 Apr`es la d´eclarationint n = 0, la valeur de l’expressionn != nest
true false 0 1 2 aucune ne compile pas
IQ. 18 Apr`es l’ex´ecution du fragment de code int n = 0; n = !n;, la variablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 19 Apr`es l’ex´ecution du fragment de codeint n = 0; n = n++;, la variablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 20 Apr`es l’ex´ecution du fragment de codeint n = 0; n = ++n;, la variablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 21 Apr`es l’ex´ecution du fragment de codeint n = 1; int* p = &n; p++;, la variable n a la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 22 Apr`es l’ex´ecution du fragment de code int m = 1; int n = 1; int* p = &m; int*
q = &n; n = p == q;, la variablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 23 Apr`es l’ex´ecution du fragment de code int m = 1; int n = 1; int* p = &m; int*
q = &n; n = *p == *q;, la variablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 24 Apr`es l’ex´ecution du fragment de code int m = 1; int n = 1; int* p = &m; int*
q = &n; n = &p == &q;, la variablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 25 Apr`es l’ex´ecution du fragment de codeint n = 1; int* p = &n; *p++;, la variablen a la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 26 Apr`es l’ex´ecution du fragment de codeint n = 1; int* p = &n; ++*p;, la variablen a la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 27 Apr`es l’ex´ecution du fragment de code int n = 1; int* p = &(n+n); n = *p;, la variablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 28 Apr`es l’ex´ecution du fragment de code int n = 1; int* p = &n; n = *p+1;, la va- riablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 29 Apr`es l’ex´ecution du fragment de code int n = 1; int* p = &n; n = *(p+1);, la variablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 30 Apr`es l’ex´ecution du fragment de code int n = 1; n++++;, la variablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 31 Apr`es l’ex´ecution du fragment de codeint n = 1; int* p = &n; int** q = &p; ++**q;, la variablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 32 Apr`es l’ex´ecution du fragment de code int n = 0; int m = 1; n = m = n;, la va- riablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 33 Apr`es l’ex´ecution du fragment de code int n = 0; n = n == n;, la variable n a la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 34 Apr`es l’ex´ecution du fragment de codeint n = 0; n = n++ + n++;, la variablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 35 Lors de l’ex´ecution du fragment de codeint n = 1; f(n++, n++);, la fonctionfest appel´ee avec les valeurs
1,1 1,2 2,1 2,2 impr´evisible ne compile pas
IQ. 36 La fonctionfest d´efinie parint f(int n){ return n+1; }. Apr`es l’ex´ecution du frag- ment de codeint n = f(1);, la variablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 37 La fonction f est d´efinie par int f(int* p){ return *p+1; }. Apr`es l’ex´ecution du fragment de codeint n = 1; n = f(n);, la variablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 38 La fonction f est d´efinie par int f(int* p){ return *p+1; }. Apr`es l’ex´ecution du fragment de codeint n = 1; n = f(&n);, la variablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 39 La fonction f est d´efinie par int f(int* p){ return *p+1; }. Apr`es l’ex´ecution du fragment de codeint n = f(&1);, la variablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 40 La fonction fest d´efinie parint* f(){ int n = 1; return &n; }. Apr`es l’ex´ecution du fragment de codeint n = *f();, la variablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 41 La fonctionfest d´efinie parint* f(int* p){ int n = 1; return p; }. Apr`es l’ex´ecution du fragment de codeint n = 2; n = *f(&n);, la variablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 42 La fonctionfest d´efinie parvoid f(int* p, int* q){ int t = *p; *p = *q; *q = t; }. Quels sont les appels `a la fonctionfqui ´echangent les valeurs des variablesmetn.
f(m, n) f(*m, *n) f(&m, &n) f(!m, !n) f(m+n, m-n) La fonctionlenest d´efinie de la fa¸con suivante.
int len(char* s) { char* t = s;
while(*s++ != ’\0’);
return s-t;
}
IQ. 43 Dans le fragment de code len("abc");, la fonction lenretourne la valeur
-1 0 3 4 impr´evisible ne compile pas
IQ. 44 Dans le fragment de codechar* s = "abc"; len(s);, la fonctionlenretourne la va- leur
-1 0 3 4 impr´evisible ne compile pas
IQ. 45 Dans le fragment de code char s[] = {’a’, ’b’, ’c’}; len(s);, la fonction len retourne la valeur
-1 0 3 4 impr´evisible ne compile pas
IQ. 46 Apr`es la d´eclarationint t[] = {1, 2, 3};, le tableautcontient les valeurs 0, 0, 0 1, 2, 3 impr´evisible ne compile pas IQ. 47 Apr`es la d´eclarationint[] t = {1, 2, 3};, le tableautcontient les valeurs
0, 0, 0 1, 2, 3 impr´evisible ne compile pas IQ. 48 Apr`es la d´eclarationint* t = {1, 2, 3};, le tableau tcontient les valeurs
0, 0, 0 1, 2, 3 3, 2, 1 impr´evisible ne compile pas IQ. 49 Apr`es l’ex´ecution du fragment int t[] = {1, 2, 3}; t = t;, le tableau t contient les valeurs
0, 0, 0 1, 2, 3 impr´evisible ne compile pas
IQ. 50 Apr`es l’ex´ecution du fragmentint t[] = {1, 2, 3}; int n = &t == t;, la variablen a la valeur
true false 0 1 impr´evisible ne compile pas
IQ. 51 Apr`es l’ex´ecution du fragmentint s[] = {1, 2, 3}; int t[] = s;, le tableautcontient les valeurs
0, 0, 0 1, 2, 3 impr´evisible ne compile pas
IQ. 52 Apr`es l’ex´ecution du fragmentint s[] = {1, 2, 3}; int t[] = {1, 2, 3}; int n
= s == t;, la variablena la valeur
0 1 2 6 impr´evisible ne compile pas
IQ. 53 Apr`es l’ex´ecution du fragmentint t[] = {1, 2, 3}; *t = 3;, le tableau tcontient les valeurs
3, 3, 3 3, 2, 3 1, 3, 3 impr´evisible ne compile pas IQ. 54 Apr`es l’ex´ecution du fragmentint t[] = {1, 2, 3}; int* p = t; p[1] = 3, le ta- bleautcontient les valeurs
3, 3, 3 3, 2, 3 1, 3, 3 impr´evisible ne compile pas IQ. 55 Apr`es l’ex´ecution du fragment de code int t[] = {1, 2, 3};
for(int i = 1; i < 3; i++) t[i] += t[i-1];le tableautcontient les valeurs
1, 2, 3 1, 3, 6 1, 1, 1 impr´evisible ne compile pas Le tableautet la fonctionsumsont d´efinis de la fa¸con suivante.
int t[] = { 1, 2, 3, 4, 5 };
int sum(int t[], int n) { int s = 0;
for (int i = 0; i < n; ++i) s += t[i];
return s;
}
IQ. 56 Quels sont les appels `a sum qui calculent la somme des quatre premi`eres valeurs du tableautet retournent la valeur10?
sum(t, 4) sum(t[1], 4) sum(t[0], 4)
sum(&t, 4) sum(&t[0], 4) sum(*t, 4)
IQ. 57 Quels sont les appels `a sum qui calculent la somme des quatre derni`eres valeurs du tableautet retournent la valeur14?
sum(t+1, 4) sum(&t+1, 4) sum(*(t+1), 4) sum(t[1], 4) sum(&t[1], 4) sum(*t+1, 4) Le typePest d´efini de la fa¸con suivante.
typedef struct { int x;
int y;
} P;
IQ. 58 La d´eclaration d’une fonctionfprenant en param`etre une valeur de type Pse fait par f(P p) f(P* p) f(P& p) f(P p[]) c’est impossible.
IQ. 59 La d´eclaration d’une fonctionfretournant une valeur de typePse fait par P f() P* f() P& f() P[] f() c’est impossible.
IQ. 60 Apr`es l’ex´ecution du fragment de codeP p = {1, 2}; P q = p; int n = q.y, la va- riablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 61 Apr`es l’ex´ecution du fragment de codeP p = {1, 2}; int* q = &p.x; int n = *q;, la variablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 62 Apr`es l’ex´ecution du fragment de codeP p = {1, 2}; P* q = &p; int n = q->x;, la variablena la valeur
0 1 2 3 impr´evisible ne compile pas
IQ. 63 La d´eclaration d’une fonction F qui prend en param`etre une fonction f (prenant en param`etre un entier et retournant un entier) et qui retourne un entier se fait par
int F(int f(int)) int F(int *f(int)) int F(int (*f)(int))
int F(int f, int n) c’est impossible.
IQ. 64 Apr`es les deux d´eclarationstypedef int (*fun)(int); fun F(fun f) {return f;}, l’expressionF(f)(2)est valide sifest d´efini par
int f(int n) { return n; } int f(int* p) { return *p; } int* f(int* p) { return p; } int* f(int n) { return &n; } int f() { return 0; }
ne compile pas
IQ. 65 Le nombre de questions auxquelles j’ai bien r´epondu, y compris celle-ci, se situe entre
0 et 15 16 et 31 32 et 48 49 et 64