Révision Cours C
Révision Cours C
Révision Cours C
Classe : L2IT
Date : 01/02/2021
Enseignant : M. LOYA
Durée:3h00mn
REVISION LANGAGE C
Répondre directement aux questions suivantes :
5) Quelle est l’occupation mémoire de la constante symbolique définie par #define A 10.5 ?
[ ] 0 octet [ ] 1 octet [ ] 2 octets [ ] 4 octets
9) Si le nombre d’itérations n’est a priori pas connu et que l’on désire passer au moins une fois dans la
boucle, on utilise :
[ ] while … [ ] do … while [ ] for …
11) Que vaut la variable ernet à la fin du code suivant ? int ernet = 100;
ernet += 5 ;
ernet *= 10 ;
ernet /= 15 ;
ernet %= 4 ;
12) Que vaut la variable ille dans le code suivant ? float ille ;
ille = 2/3*100.0 ;
13) Dans le code suivant, que vaut la variable j après l’instruction d’affectation ? :
int i=0, j=0 ;
j = i++ ;
1
14) Soit le programme suivant :
#include <stdio.h> Que valent a et b après ces instructions :
int main(void) [a] a=1, b=1
{ int a=1, b=2;
[b] a=1, b=2
a++;
b=a++; [c] a=2, b=1
a=--b; [d] a=2, b=2
printf("a = %d,b=d\n", a, b);
return 0;
}
16) Qu'est-ce qui est affiché par le programme ci-contre à son exécution ?
[ ] a = 8 , b = -3
[ ] a = -3 , b = 4
[ ]a=4,b=9
[ ]a=5,b=5
[ ] Aucune des quatre réponses
2
19) Soit le code suivant :
int i ;
printf("i ? ") ;
scanf("%d", &i) ;
switch (i) {
case 0 : printf(" NUL") ; break ;
case 1 : case 3 : case 5 : case 7 : case 9 :printf(" IMPAIR") ; break ;
case 2 : case 4 : case 6 : case 8 :printf(" PAIR") ; break ;
default : printf("NEGATIF OU PAS UN CHIFFRE") ; break ;
}
3
int i=10 ;
24) Qu’affichent les instructions suivantes : while (i>0) {
i=i-4 ;
[ ] 10 6 2 [ ] 6 2 -2 [ ] 6 2 [ ] C’est une boucle infinie
printf("%d ",i) ;
}
25) Qu'est-ce qui est affiché par le programme ci-contre à son exécution ?
#include<stdio.h>
[ ] b = -1 int main(void) {
[ ]b=0 int a=2, b=1;
for(; a < 2; a+=2)
[ ]b=1 b+=a;
printf("b = %d\n", b);
[ ] Le programme n'affiche rien. return 0;
[ ] Aucune des quatre réponses ci-dessus }
26) Qu'est-ce qui est affiché par le programme ci-contre à son exécution ?
[ ] (7,1)(8,3)(9,5)(10,7)(11,9)(12,11)
[ ] (8,1)(8,3)(8,5)(8,7)
[ ] (7,11)(8,11)(9,11)(10,11)(11,11)
[ ] Le programme n'affiche rien.
[ ] Aucune des quatre réponses ci-dessus
31) Comment faire en sorte que la variable A soit un booléen à vrai si B contient au moins 1 ?
[ ] A=B >1 [ ] A = B !=1 [ ] A=B>0 [ ] A = B >= 0
4
33) Qu'affiche le programme ci-contre si l'utilisateur
tape les valeurs 18 et 21 à l'exécution ?
[ ] (21,18)
[ ] (18,0)
[ ] mineur(21,0)
[ ] mineur(0,0)
[ ] Aucune des quatre réponses
35) Une directive du préprocesseur est une ligne qui commence par :
[ ]{ [ ]# [ ] // [ ] /*
38) Si i et d sont définis par int i; double d; alors l’expression (int)i%d est du type :
[ ] [a] int [ ] [b] float [ ] [c] double [ ] [d] C’est une expression erronée
5
42) 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 ?
45) 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)
46) 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
int i=0, tab[10], n=27;
47) Soit le code suivant :
do {
Que contient le tableau tab en fin de programme ?
tab[i++] = n % 10 ;
} while ((n /= 10) > 10);
49) 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.
51) Quelle est l'autre façon d'initialiser mon tableau avec ces valeurs ?
int tableau[4];
tableau[0] = 10; [ ] int tableau[4] = 10, 23, 505, 8;
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};
6
52) Soit le code suivant :
#include <stdio.h> Le programme :
#define TAB_LENGTH 3 [ ] ne compile pas
int main(void) { [ ] provoque une erreur fatale à l’exécution (erreur de segmentation par exemple)
int tab[TAB_LENGTH]; [ ] boucle infinie
int j; [ ] affiche [ 5 5 5 ]
for (j= 0; j < TAB_LENGTH; j++)
[ ] affiche autre chose
tab[j] = 5;
j = 0;
printf("[");
while (j < TAB_LENGTH)
printf(" %d ", tab[j]); j++;
printf("]");
return 0;
}
im = i;
m = t[i];
for( k = i+1 ; i< n ; i++)
{
if(t[k]<m) Que vaut l’expression f(liste , 8, 0), si liste =[ 9, 7, 4, 2, 3, 8, 2, 5 ] ?
{ [ ]2 [ ]3 [ ]6 [ ]4
im=k;
m=t[k];
}
}
return im ;
}
7
56) Tri d'un tableau par sélection du maximum
On veut utiliser l'algorithme du tri par sélection pour ordonner un tableau dans l'ordre décroissant.
On appliquera cet algorithme sur le tableau T = [3, 2, 1, 6, 5, 4]
Question 1
En vous basant sur le tri par sélection du minimum, décrivez le principe du tri par sélection du maximum.
Question 2
Ecrire une fonction imax(T, a, b) qui renvoie la position de la valeur max de T entre les positions a et b.
Question 3
En utilisant vos réponses aux questions 1) et 2), écrire une fonction triSelecMax(T, n) qui trie un tableau T dans
l'ordre décroissant.
Question 4
Que faudrait-il modifier pour que la fonction triSelection(T, n) trie le tableau T dans l'ordre croissant ?
57) Quelles sont les manières correctes pour passer le tableau d’entiers tab en argument ?
[ ] void fonction(int *tab, int dim) [ ] void fonction(int tab[ ], int dim)
[ ] void fonction(int &tab, int dim)
60) En langage C, dans une chaîne de caractères, le premier caractère a pour indice [ ] 0 [ ]1
62) Comment saisir une chaine de caractères, déclarée par : char Chaine[100] ?
[ ] scanf ("%c" , chaine); [ ]scanf ("%s" , chaine); [ ]scanf ("%c" ,&chaine);
[ ]scanf ("%s" , &chaine);
63) On veut créer une chaîne appelée prenom qui, au cours de l'exécution de mon programme, devra contenir
le prénom "Thomas" puis le prénom "Philippe". Quelle est la déclaration appropriée qui permet de créer une
chaîne capable de stocker chacun de ces prénoms ?
[ ]char prenom[6] [ ]char prenom[7] [ ] char prenom[8] [ ] char prenom[9]
68) Que renvoie la fonction strcmp (comparaison de chaînes) si les 2 chaînes comparées sont identiques ?
[ ] -1 [ ]0 [ ]1 [ ] N'importe quelle autre valeur que 0
75) Après l’exécution des instructions suivantes : int i=3, *ip ; ip=&i ; i=10 ;
que vaut *ip ? [a] 3 [b] Adresse de i [c] 10 [d] Adresse de ip?
9
76) Soit p un pointeur défini par int * p. Si p vaut en hexadécimal oX12FF44 que vaut p+1 ?
[a] oX12FF45 [b] oX12FF48 [c] oX12FF4C [d]oX12FF52
77) Soit p un pointeur défini par double * p. Sachant que sizeof(double)=8, si p vaut en hexadécimal
oX12FF44 que vaut p+1,?
[a] oX12FF45 [b] oX12FF48 [c] oX12FF4C [d] oX12FF52
79) Quelles sont les étapes à suivre dans l'ordre lorsqu'on alloue dynamiquement de la mémoire ?
[a] malloc, vérification de la validité du pointeur, utilisation de la mémoire, free
[b] malloc, utilisation de la mémoire, free, vérification de la validité du pointeur
[c] free, vérification de la validité du pointeur, malloc, utilisation de la mémoire
81) On souhaite modifier la taille d'un tableau T d'entiers, pour passer de 10 à 11 entiers ?
[a] T = (int *) malloc (11* sizeof( int ) ); [b] T = (int *) malloc (11);
[c] T= (int *) realloc (T, 11* sizeof( int ) ); [d] T = (char *) realloc( 11 * sizeof (int ));
82) P pointe sur un tableau de 10 entiers, on souhaite libérer la mémoire qu'il occupe. Comment faire ?
[a] P = NULL; [b] *P = 0; [c] free( P ); d] free ( *P )
88)Peut-on donner un même identificateur à une variable locale et à une variable globale au cours d'un
même programme ? [ ] Oui [ ] Non
90) Considérons l'en-tête de fonction suivante : void Fiche(float *X, float *Y, int i, char Z, char R ) ;
Considérons les déclarations suivantes :
float A, C ;
int J ;
char B, H ;
Quels sont les appels de fonction justes ?
[ ] Fiche (A, C ; J ; B, H) ; [ ] Fiche (&A, &B, C, J, H) ; [ ] Fiche (&A,&C, 3, 'b', B) ;
[ ] Fiche (&A, &C, J, B, H) ; [ ] Fiche (A ; J ; B, H) ;
93) Peut-on avoir des types différents pour les champs d’un même enregistrement. [ ] Vrai [ ] Faux
94) Une valeur d’un type énumération est équivalent à : [ ] une constante [ ] une variable
97) Laquelle de ces affirmations sur les types structurés est incorrecte ?
[ ] On peut afficher le contenu d'une variable structurée sans faire référence à ses champs.
[ ] Le champ d'une variable struct peut lui-même contenir d'autres champs.
[ ] On peut passer une variable de type struct en paramètre à une fonction sans précision de champ.
99) Soit le type Examen contenant les valeurs suivantes : Math, Anglais, Physique et informatique
1°) Qu’appelle-t-on le type Examen décrit ci-dessus ?
2°) Proposer une déclaration du type Examen en respectant l'ordre des valeurs proposé ci-dessus.
100) Quel est le défaut sur la définition de cette structure qui empêche la compilation de fonctionner ?
struct Ecran
{ int nombreDeCouleurs; [ ]Il manque un typedef avant
int largeur; [ ] Il manque un typedef après
int longueur; [ ]Il manque un point-virgule après la dernière accolade
} [ ]Il manque un point-virgule avant la dernière accolade
102) fgetc(f);
[ ] Lit une chaîne à partir du fichier et le pointeur reste sur la même ligne.
[ ] Lit un caractère à partir du fichier et le pointeur passe à la ligne suivante.
[ ] Lit un caractère à partir du fichier et le pointeur passe sur le caractère suivant.
106) Quel fichier entête faut-il inclure si on veut travailler avec des fichiers ?
[ ]stdio.h [ ]stdlib.h [ ]string.h [ ]stdprint.h [ ]stdfile.h
12
109) Que faut-il toujours faire juste après l'ouverture d'un fichier ?
[ ]Le fermer [ ]Tester la validité du pointeur de fichier [ ]Le vider de son contenu
[ ] Placer le curseur à la position 0 w
112) Quel est le second paramètre que l'on doit envoyer à la fonction fgets ? fgets(chaine, ???, fichier);
[ ] La position du curseur [ ]La taille du fichier [ ]Le nombre maximal de caractères à lire dans chaîne
113) Quelle fonction permet d'écrire un caractère (et un seul) dans un fichier ?
[ ]fputc [ ]fgetc [ ]fputchar [ ]fscanf [ ]fputs [ ]fgets
13
}
}
}
}
}
}
}
Cocher la ou les implémentation(s) correcte(s).
[ ]free_list_1 [ ]free_list_2 [ ]free_list_3 [ ]free_list_4 [ ]free_list_5
14