• Aucun résultat trouvé

2 Le langage C fut d´evelopp´e par D

N/A
N/A
Protected

Academic year: 2022

Partager "2 Le langage C fut d´evelopp´e par D"

Copied!
5
0
0

Texte intégral

(1)

Autotest de maˆıtrise du langage C

Chaque question propose plusieurs r´eponses possibles dont une, plusieurs ou ´eventuellement 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 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

(2)

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

(3)

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

(4)

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;

}

(5)

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

Références

Documents relatifs

[r]

[r]

Dans chaque question, il y a une unique solution. Chaque r´ eponse juste rajoute

Veuillez num´ eroter et indiquer votre num´ ero d’´ etudiant sur toutes les feuilles rendues. Justifier toutes vos

Exercice 4 (Question suppl´ ementaire pour les plus curieux ` a ne pas traiter en priorit´ e).. Calculer une matrice g´ en´ eratrice

[r]

[r]

Chaque question propose plusieurs r´ eponses possibles dont une, plusieurs ou ´ eventuellement z´ ero sont correctes.. Il faut cocher toutes les r´