0% ont trouvé ce document utile (0 vote)
292 vues6 pages

Taille d'un tableau en C

Le document contient un questionnaire sur les tableaux en langage C avec 22 questions à choix multiples. Le document fournit des informations sur la déclaration, l'accès et la manipulation des éléments d'un tableau.

Transféré par

Redak Kiemde
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
292 vues6 pages

Taille d'un tableau en C

Le document contient un questionnaire sur les tableaux en langage C avec 22 questions à choix multiples. Le document fournit des informations sur la déclaration, l'accès et la manipulation des éléments d'un tableau.

Transféré par

Redak Kiemde
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Année académique 2023-2024

Classe : L2ELN
Date : 02/05/2024
Enseignant : M. LOYA

QUESTIONNAIRE SUR LES TABLEAUX


1. Un tableau peut contenir en même temps :
plusieurs variables de types différents [ ] Vrai [ ] Faux
uniquement 2 variables de types différents [ ] Vrai [ ] Faux
uniquement des variables de même type [ ] Vrai [ ] Faux

2. Le nombre d’éléments possible d’un tableau se nomme : taille

3. Un élément du tableau d’entier tab, i étant un entier, est


[ ] tab[i] [ ] tab(i) [ ] tabi [ ] tabi

4. Quelle(s) déclaration(s) permet(tent) de réserver en mémoire un tableau de 5 entiers ?


[ ] int t[ ] = 5 ; [ ] int t[4] ; [ ]int t[5] ; [ ]int t[] = {13,37,42,0,-5} ; [ ]int t[4] = {13,37,42,0,-5} ;

5. Comment fait-on pour déclarer un tableau dont les éléments sont de types différents ?
[ ] Type_case répertoire [M] ; et on précise le type des variables à chaque entrée. [ ] C'est impossible.

6. En langage C, dans un tableau, le premier élément a pour indice [ ] 0 [ ]1

7. Pour accéder à la troisième case du vecteur Carte, on utilise l'instruction :


[ ] Carte [3] ; [ ] Carte [2] ; [ ] Carte {2} ; [ ] Carte {3} ; [ ] Carte (2) ;

8. Quelle est l'autre façon d'initialiser mon tableau avec ces valeurs ?
int tableau[4];
tableau[0] = 10;
tableau[1] = 23;
[ ] int tableau[4] = 10, 23, 505, 8;
tableau[2] = 505; [ ] int tableau[4] = [10, 23, 505, 8];
tableau[3] = 8; [ ] int tableau[4] = (10, 23, 505, 8);
[ ] int tableau[4] = {10, 23, 505, 8};
9. On veut réserver en mémoire un tableau de 10 entiers contenant les nombres de 1 à 10. Quelles
instructions permettent de faire cela ?
[ ] int t[9], i; [ ] int t[10], i;
for (i=0 ; i<10 ; ++i) for (i=1 ; i<11 ; ++i)
t[i]=i+1 ; t[i-1]=i;
[ ] int t[10], i ; [ ] int t[10], i ;
for ( i=1 ; i<=10 ; ++i) for (i=0 ; i<=10 ; ++i)
t[i]=i ; t[i]=i+1 ;
[ ] Aucune des réponses ci-dessus

10. Peut-on changer la taille d'un tableau en cours d'exécution du programme ?


[ ] Oui, en affectant une nouvelle valeur à la variable définissant la taille du tableau.
[ ] Non, c'est impossible. [ ] Oui, en redéfinissant

11. Soit le programme (incomplet) suivant :

Quelle instruction faut-il écrire en ligne 5 pour remplacer


la valeur 13 par la valeur 14 ?

[ ] tab[13] = 14; [ ] tab[6] = 14;


[ ] tab[7] = 14; [ ] tab[13] = tab[14];

1
12. Soit le programme ci-dessous :
#include <stdio.h>
int main(void){ Suite à son exécution, que va-t-il s’afficher à l’écran :
int i, somme, tab[8];
tab[0] = 1;
somme = 0; [ ] somme = 100 - tab = 1,2,3,4,5,6,7,8
for(i=1 ; i < 8 ; i++ ) {
tab[i] = tab[i-1] * 2; [ ] somme = 127 - tab = 1,2,4,8,16,32,64,128
}
i = 0; [ ] somme = 127 - tab = 1,2,3,4,5,6,7,8
while(tab[i] < 100) {
somme = somme + tab[i]; [ ] somme = 100 - tab = 1,2,4,8,16,32,64,128
i++;
}
printf("somme = %d - ",somme);
printf("tab = %d",tab[0]);
for( i=1 ; i < 8 ; i++ ) {
printf(",%d",tab[i]);
}
return 0;
}

13. Soit le programme suivant :


#include <stdio.h> Suite à son exécution, que va-t-il s’afficher à l’écran :
int main(void){
int tab[10]; [ ] tab = 2,1,4,3,6,5,8,7,9,10
int i,temp;
[ ] tab = 1,2,3,4,5,6,7,8,9,10
for( i=0 ; i<10 ; i++ ) {
tab[i] = i+1; [ ] tab = 1,2,3,10,5,6,7,8,9,4
}
i=0; [ ] tab = 2,1,4,4,6,5,8,7,9,10
while(tab[i] < 9) {
temp = tab[i];
[ ] tab = 1,2,3,11,5,6,7,8,9,5:
tab[i] = tab[i+1];
tab[i+1] = temp;
i = i + 2;
}
tab[3] = tab[3] + 1;
tab[9] = tab[8] + 1;
printf("\ntab = %d",tab[0]);
for( i=1 ; i<10 ; i++ ) {
printf(",%d",tab[i]);
}
return 0;
}
14. Soit le code suivant :
#include <stdio.h> Le programme :
#define TAB_LENGTH 3 [ ] ne compile pas
int main(void) {
int tab[TAB_LENGTH];
[ ] provoque une erreur fatale à l’exécution (erreur de segmentation par exemple)
int j; [ ] boucle
for (j = 0; j < TAB_LENGTH; j++) [ ] affiche [ 5 5 5 ]
tab[j] = 5; [ ] affiche autre chose
j = 0;
printf("[");
while (j < TAB_LENGTH)
printf(" %d ", tab[j]); j++;
printf("]");
return 0;
}

15. La fonction suivante doit calculer le produit de tous les éléments du tableau passé en paramètre. Avec
quelles expressions doit-on la compléter pour que cette fonction soit correcte ?
float produit (float L[ ], int n){ [ ] 1 puis p = p * L[i]
int i ;
18. Soit le code suivant :
float p ; [ ] 0 puis p = p * L[i]
p = ……….
for(i=0 ;i<n ;i++) [ ] 1 puis p = L[i]
...............
return p ; [ ] 0 puis p = L[i]
} 2
16. Soit le code suivant
#include <stdio.h>
#define TAB_LENGTH 3
int main(void) {
Le programme :
int tab[TAB_LENGTH];
int j = 0; [ ] ne compile pas
for(; j <= TAB_LENGTH; j++) [ ] fonctionne normalement et affiche [ 5 5 5 ]
tab[j] = 5; [ ] pose des soucis à l’exécution
printf("[");
for(j = 0; j <= TAB_LENGTH; j++)
printf(" %d ", tab[j]);
printf("]");
return 0; }

17. On considère deux tableaux T1 et T2. Peut-on copier le contenu de T2 dans T1 sans perdre
d'information ?
[ ] Directement si T1 et T2 sont de même taille ? On utilise l'instruction T1 = T2 ;
[ ] Directement si la taille de T1 est supérieure à la taille de T2 ? On utilise l'affectation T1 = T2 ;
[ ] Directement si la taille de T2 est supérieure à la taille de T1 ? On utilise l'affectation T1 = T2 ;
[ ] Elément par élément à l'aide d'une boucle dès que la taille de T1 est >= à la taille de T2 ?

18. On exécute le code suivant :


float liste [10]= {4,8,12,6,2};
void permute(float L[],int n){ Quelle est la valeur de liste à la fin de l'exécution du code ?
int k, tmp ; [ ] [2, 4, 8, 6, 12]
for (k =0 ;i<n-1;i++) [ ] [2, 4, 6, 8, 12]
if (L[k] > L[k+1]){ [ ] [4, 8, 6, 2, 12]
tmp = L[k] ; [ ] [12, 8, 6, 4, 2]
L[k] = L[k+1] ;
L[k+1] = tmp ;
}
}
permute(liste,5) ;

19. Avec une unique recherche séquentielle dans un tableau de nombres, que ne peut-on pas faire ?
[ ] Trier les éléments de ce tableau avec l’algorithme par insertion
[ ] Déterminer le nombre d’occurrences, dans ce tableau, d’une valeur donnée
[ ] Déterminer les extrema dans ce tableau
[ ] Déterminer la moyenne des valeurs de ce tableau

20. Quelle est la valeur de c à la fin de l'exécution du code suivant :

int L = {1,2,3,4,1,2,3,4,0,2} ; [ ]0 [ ]2 [ ]3 [ ] 10
int c = 0, k ;
for( k = 0 ;i<n ; i++)
if(k == L[1])
c ++ ;

21. On considère la fonction suivante :


#define NB 20
int main(void){
int t[NB], int n, int i;
int im, m, k;
im = i;
m = t[i];
for( k = i+1 ; i< n ; i++) {
if(t[k]<m) { Qu’affiche le programme si t =[ 9, 7, 4, 2, 3, 8, 2, 5 ], n =8, i=0 ?
im=k; [ ]2 [ ]3 [ ]6 [ ]4
m=t[k];
}
}
printf(%d,im );
return 0 ;
}

3
22. Que fait la fonction suivante ?
#define NB 20
int main(void) {
int liste[NB],t, k, n;
t=liste[0];
for( k =1 ; k<n ; k++){ [ ] Cette fonction affiche le plus petit rang des éléments de la liste dont la valeur
if(liste[k]>t) est celle du maximum de la liste
t=liste[k]; [ ] Cette fonction affiche la position des éléments de la liste dont la valeur est celle
} du maximum
for( k=0 ; k< n ;k++) [ ] Cette fonction affiche la valeur maximum prise par les éléments de la liste
if(liste[k] == t){ [ ] Cette fonction trie la liste
printf(%d,k );
break;
}
return 0;
}

23. Parmi les éléments d'un tableau fourni en entrée, pour trouver le maximum des éléments, il faut :
[ ] parcourir tout le tableau une seule fois en maintenant à jour la valeur du maximum des éléments déjà
parcourus. [ ] parcourir le tableau deux fois, une fois pour trouver la position du maximum et une seconde
fois pour trouver sa valeur. [ ] commencer à parcourir le tableau et s'arrêter dès que le maximum est trouvé.
[ ] parcourir autant de fois le tableau qu'on trouve de maximas successifs.

24. Soit un tableau t d'entiers et un entier x. Pour trouver si x est présent dans le tableau :
[ ]on parcourt nécessairement tout le tableau, car il faut compter chaque occurrence de x .
[ ]on regarde simplement si t[x] < n où n est la taille du tableau.
[ ]on parcourt le tableau et on s'arrête dès que x est trouvé. Si x n'est pas présent, on le sait parce qu'on a
atteint la fin du parcours

25. La fonction suivante prend en paramètre un tableau non vide de nombres réels.
float mystere(float T[], int k){
float val = T[k-1] ; Quelle est la valeur renvoyée par cette fonction ?
if (k == 1)
return T[k-1] ; [ ]la plus grande des valeurs du tableau T
else
while( k >= 0){ [ ]la plus petite des valeurs du tableau T
if (val < T[k-2])
val = T[k-2] ; [ ]la moyenne des valeurs du tableau T
k = k-1 ;
} [ ]la valeur la plus fréquente du tableau T
return val ;
}

26. Quelle sont les états successifs du tableau T=[0,-4,5,-2] qui traduisent les étapes d’un algorithme de tri
par insertion ?
[ ] [-2,-4,5,0] puis [-4,-2,5,0] puis [-4,-2,0,5]
[ ] [-4,0,-2,5] puis [-4,-2,0,5] [ ] [-4,0,-2,5] puis [-4, -2,0,5]
[ ] [-4,0,5,-2] puis [-4,-2,5,0] puis [-4,-2,0,5]

27. Quels sont les états successifs du tableau T=[4,-1,7,-2] qui traduisent les étapes d’un algorithme de tri
par sélection ?
[ ] [-2,-1,7,4] puis [-2,-1,4,7] [ ] [-1,-2,7,4] puis [-2,-1,4,7] [ ] [4,7,-1,-2] puis [-2,-1,4,7]
[ ] [-2,4,-1,7] puis [-2,-1,4,7]

4
28. Au cours d’un tri de tableau, on observe les étapes suivantes :

Quel est l’algorithme de tri qui a été utilisé ?


[ ] tri par sélection
[ ] tri à bulles
[ ] tri par insertion
[ ] tri rapide

29. Quel algorithme de tri sélectionne dans le tableau les éléments du plus petit au plus grand pour le
mettre à leurs places ? [ ] le tri par insertion [ ] le tri par sélection le tri à bulles

30. Combien d'échanges effectuera l'algorithme de tri à bulles si on l'applique à un tableau de 4 éléments
déjà trié ? [ ] 0 [ ] 10 [ ] 3 [ ] 6 [ ] 16 [ ]12 [ ] 1 [ ] 20 [ ] 4 [ ] 2

31. Quel algorithme de tri est illustré sur l'image ci-contre ?


[ ] le tri à bulles [ ] le tri par insertion [ ] le tri par sélection

32. On définit une fonction de recherche dichotomique de l'indice d'un


élément x à l'intérieur d'une liste triée de la façon suivante :
int recherchee(x, int liste_triee[], int n){
int a = 0, b = n-1 ;
int m;
while (a < b){ [ ]a=m+1
m = (a + b)/2 ; [ ]a=m-1
if (liste_triee[m] == x) [ ]a=b
return m ; [ ]a=b-m
else
if( liste_triee[m] > x)
b=m-1
else
................
}
return a ;
}

33. Avec un algorithme de recherche par dichotomie, combien de comparaisons sont-elles nécessaires pour
s’assurer que 22 n’est pas dans la liste suivante :
[1, 5, 9, 12, 20, 21, 24, 32, 35, 40, 41, 47, 53, 60, 70]
[ ]2 [ ] 4 [ ] 7 [ ] 13
34. Que calcule la fonction suivante ?
int mystere(int liste[], int n){
int valeur_de_retour = 1 ; [ ] la valeur du plus grand élément de la liste passée en paramètre
int indice = 0 ; [ ] la valeur du plus petit élément de la liste passée en paramètre
while (indice < n – 1){
if (liste[indice] > liste[indice + 1])
[ ] une valeur booléenne indiquant si la liste passée en paramètre est triée
valeur_de_retour = 0 ; [ ] une valeur booléenne indiquant si la liste passée en paramètre contient
indice = indice + 1 ; plusieurs fois le même élément
}
return valeur_de_retour ;
}

35. Pour pouvoir utiliser un algorithme de recherche par dichotomie dans une liste, quelle précondition
doit être vraie ? [ ] la liste doit être triée [ ] la liste ne doit pas comporter de doublons
[ ] la liste doit comporter uniquement des entiers positifs [ ] la liste doit être de longueur inférieure à 1024

5
36. Soit la fonction suivante :
int enigme(int tab [ ], int n, int quoi){
int inf, sup, milieu, result, trouve;
inf = 0;
sup = n-1;
trouve = 0;
while (sup >=inf && !trouve) { Que vaut l’expression enigme(T , 8, 4), si T =[ 2, 2, 3, 4, 5, 7, 8, 9 ] ?
milieu = (inf + sup) / 2;
if (quoi == tab[milieu]) [ ]2 [ ]3 [ ]6 [ ]4 [ ]0
trouve = 1.;
else
if (quoi < tab[milieu])
sup = milieu -1;
else
inf = milieu + 1;
}
if (trouve = =0)
result = 0;
else
result = milieu;
return result ;
}

37. Un tableau à deux dimensions (matrice) peut contenir en même temps :


plusieurs variables de types différents [ ] Vrai [ ] Faux
uniquement 2 variables de types différents [ ] Vrai [ ] Faux
uniquement des variables de même type [ ] Vrai [ ] Faux

38. Quelle(s) déclaration(s) correspond(ent) à une matrice de N lignes et M colonnes ?


[ ] float Identificateur[N][M] ;
[ ] float Identificateur[M-1][N-1] ;
[ ] float Identificateur1 [M-1] Identificateur2 [N-1] ;
[ ] float Identificateur1 [N-1] Identificateur2 [M-1] ;

39. On définit les constantes et les variables suivantes :


#define A 5
#define B 7
#define G 5.6
float c, d ;
int e=5, f=7 ;
Lesquelles de ces déclarations sont justes ?
[ ] int T1[10][B]; [ ] float T2[10][B]; [ ] int T3[A][B]; [ ] int T4[G][B];
[ ] char T5[1][c]; [ ] float T6[e][f];

40. Pour accéder à la case située à la 2éme ligne et la 3éme colonne de la matrice T, quelle est la bonne
syntaxe?
[ ] T [2,1] [ ] T [1,2] [ ] T [2] [1] [ ] T [1] [2] [ ] T (2,1)

Vous aimerez peut-être aussi