Top Posters
Since Sunday
A free membership is required to access uploaded content. Login or Register.

QCM Langage C.docx

Uploaded: 6 years ago
Contributor: tyressjones
Category: Networking
Type: Other
Rating: N/A
Helpful
Unhelpful
Filename:   QCM Langage C.docx (56.48 kB)
Page Count: 10
Credit Cost: 1
Views: 135
Last Download: N/A
Transcript
Interrogation QCM sur le langage C Section 1 : éléments de base, if et switch ( total de 35 points ) : 1.1) (15 points) Répondez par Vrai (ou V) si l'énoncé est correct ou par Faux (ou F) si l'énoncé est incorrect. Si vous répondez Faux (et seulement dans ce cas), expliquez brièvement votre réponse. Chaque question vaut trois (3) points. L’explication appropriée (si exigée) vaut deux (2) points sur trois. A. Dans le langage C, l’expression arithmétique 1%2 vaut 0. Réponse: F (elle vaut 1) B. Avec la déclaration suivante: int m = 3, n = 4; l’expression arithmétique m/n vaut 0.75. Réponse Faux (elle vaut 0) C. L' identificateur nb-jours est valide dans le langage C. Réponse: Faux (le caractère – n’est pas permis) D. Dans le langage C, l’expression suivante 2 <= 4 <= 3 est «fausse» (autrement dit, l'expression est évaluée à la valeur 0). Réponse: Faux ( 2 <= 4 vaut 1 et 1 <= 3 vaut 1) E. Avec la déclaration suivante: int age[] = { 20, 15, 27, 19 }, i ; alors l'instruction suivante: for ( i = 1; i <= 4; i++) printf(“%d ”, age[i]); affiche les 4 âges du tableau. Réponse: Faux, for ( i = 0; i < 4; i++) … 1.2 (06 points) : déclaration Soient les instructions suivantes, scanf("%d", &age); valide = age >= 0 && age <= AGE_MAX ; Écrivez les déclarations nécessaires (pour les trois identificateurs), sachant que AGE_MAX est une constante qui vaut 129 Réponse : #define AGE_MAX 129 ou const int AGE_MAX = 129; int age, valide ; 1.3) (14 points): Que fait afficher à l’écran l’exécution du bloc d’instructions suivantes quand l’usager a tapé le nombre 25 ? (pour cette question simple, vous n’avez pas besoin d’un tableau de simulation). int nombre ; printf(”Entrez un nombre > 0 ”); scanf(”%d”, &nombre); switch (nombre % 10) /* le reste dans la division par 10 */ { case 0 : printf (”a”); break; case 5 : printf (”b”); case 4 : printf (”c”); case 3 : printf (”d”); break; default : printf (”e”); } /* fin de switch */ Réponse: bcd Réécrivez (reformulez) le bloc d’instructions en haut, tel quel en remplaçant le switch par un if approprié. Réponse : int reste; . . . reste = nombre % 10; if (reste ==0) printf ("a"); else if (reste == 5) printf ("bcd"); else if (reste == 4) printf ("cd"); else if (reste == 3) printf ("d"); else printf ("e"); Section 2 : les boucles , statistiques de base (total de 45 points) : 2.1 (15 points) : Simulation l’exécution d’une boucle Complétez le tableau de simulation pour voir l’affichage à l’écran lors de l’exécution des instructions suivantes : int a =36, mystere = 0 ; do { mystere = mystere + 10 ; if ( a % 2 == 0 ) a = a + 9 ; else a = a / 10; printf(“%3d%3d\n”, a, mystere); } while ( a >= 20 ); printf(“\nAu revoir!\nFin“); Note : Servez-vous du ^ (chapeau) pour représenter une espace. Réponse : a mystere a%2 a >= 20 Affichage 36 0 ^45^10 45 10 0 VRAI ->^^4^20 4 20 1 FAUX -> Au revoir! Fin Au total, le code fait afficher _5_ lignes dont _1_ ligne(s) vide(s) (voir dernière colonne du tableau de simulation) 2.2) (10 points ) Ré-écrire le code C de la page 4 en utilisant d’une autre boucle et l’écriture raccourcie : Pour IFT 1810 : a = 36; mystere = 0; while ( a >= 20 ) { mystere += 10 ; a = a % 2 ? a/10 : a+9; /* opérateur conditionnel */ printf("%3d%3d\n", a, mystere); } printf("\nAu revoir!\nFin"); Remarques : On accepte aussi : if (a%2) a/= 10 ; else a += 9 ; ou if( a % 2 == 0 ) a += 9 ; else a /= 10 ; 2.3 (20 points) Écrivez le code en utilisant, entre autres, de boucles appropriées pour afficher les deux lignes suivantes : 5 10 20 40 80 160 320 640 1 + 2 + 3 + 4 + 5 + 6 + . . . + 20 = 210. Remarques : les 7 dernièrers valeurs de la première ligne sont les doubles des valeurs précédentes ( 10 est le double de 5, 20 est le double de 10, etc ) en affichant la deuxième ligne, on devrait calculer puis afficher la somme 1 + 2 + 3 + 4 + 5 + 6 + . . . + 20 qui vaut vraiment 210. On attend d’une boucle, pas du genre de code suivant : printf(“1 + 2 + 3 + 4 + 5 + 6 + . . . + 20 = 210\n“); Réponse : #define BORNE1 5 #define BORNE2 640 const int BORNE = 20; int valeur, somme ; for ( valeur = BORNE1 ; valeur <= BORNE2 ; valeur *= 2) printf("%d ", valeur); printf("\n"); somme = 0; for(valeur = 1 ; valeur <= BORNE; valeur++) { somme += valeur; if ( valeur < BORNE ) printf("%d +", valeur); else printf("%d = %d\n", BORNE, somme); } printf("\n"); Section 3 : tableaux, boucles, statistiques de base (total de 20 points) : 3.1 ( 10 points ) (pas de tableaux, seulement boucle(s) et statistiques de base) Pour cette question, vous n’êtes pas tenu d’écrire un programme au complet. Il suffit d’écrire les déclarations et une suite d’instructions permettant de traiter exactement 15 personnes. Pour chaque personne traitée, on lit le sexe (un caractère) et l’âge (un entier). Pour toutes les personnes traitées, on compte et on affiche le nombre d’hommes ( 'm' ou 'M') dont l’âge dépasse 32 ans. Réponse : #define NB_PERS 15 const int BORNE = 32; int sexe, age, nbHD = 0, i ; for (i = 1 ; i <= NB_PERS; i++) { printf("Tapez un caractere pour sexe et un entier pour age "); fflush(stdin); /* non corrigé */ scanf("%c%d", &sexe, &age); if ( toupper(sexe) == 'M' && age > BORNE) nbHD++; } printf("Le nombre d'hommes dont l'age depasse %d ans est %d\n", BORNE, nbHD); 3.2 ( 10 points ) Décrivez brièvement (en français), dans quelques lignes, le but de la suite d'instructions suivantes : #define MAX_PERS 15 const int NB_PERS = 12; const float BORNE = 1.90; float taille[MAX_PERS]; int n = 0, i; float abc = 0.0 ; for (i = 0 ; i < NB_PERS ; i++) { printf("Entrez une taille en metre "); scanf("%f", &taille[i]); if (taille[i] <= BORNE) { n++; abc += taille[i] ; } } printf("n = %d\n", n) ; if ( n > 0 ) printf("%6.2f\n", abc / n); Réponse : Soit taille un tableau des réels d’au maximum 15 éléments. Pour chacune des 12 ères personnes, on saisit la taille, Pour ces 12 ères tailles, pour les personnes dont la taille est inférieure ou égale à 1.90 mètre : - on compte et affiche le nombre - on calcule la somme de ces tailles. Si ce groupe de personnes existe, on affiche la taille moyenne de ce groupe. Interro 2 Partie A : compréhension, pas ou très peu de code ( total de 50 points ) : (05 points) : déclaration Soient les instructions suivantes, valide = ( age >= 0 && age <= AGE_MAX ); System.out.printf("age vaut %d ans\n", age); Écrivez les déclarations nécessaires en JAVA (pour les trois identificateurs), sachant que AGE_MAX est une constante qui vaut 110. Réponse : final int AGE_MAX = 110; int age; boolean valide; (20 points) : Soit la fonction suivante écrite en langage C : int mystere ( int tableau[], int nbElem, int b ) { int n = 0 , i; for ( i = 0 ; i < nbElem ; i++ ) if ( tableau[i] < b ) n++; return n; } et deux tableaux suivants : int age[] = { 23, 17, 16, 42, 50 } , nbCafe[] = { 1, 0, 5, 3, 6 }, nbPers = sizeof(age) / sizeof(int); Quelle est la valeur affichée avec ? : a) l’appel  : printf("%d\n", mystere(age, nbPers, 18) ); Réponse : ____2 ________ b) l’appel  : printf("%d\n", mystere(age, nbPers, 20) ); Réponse : ___2 _________ c) l’appel  : printf("%d\n", mystere(nbCafe, nbPers, 3) ); Réponse : ____2 ________ Décrivez brièvement (en français), dans quelques lignes, le but de la fonction mystere. Réponse : compter et retourner le nombre des valeurs d’un tableau d’entiers qui sont inférieures à une borne donnée => fonction avec return Réécrivez la fonction mystere en Java Réponse : static int mystere ( int[] tableau, int nbElem, int borne ) { int n = 0; for ( int i = 0 ; i < nbElem ; i++ ) if ( tableau[i] < borne ) n++; return n; } (10 points): Soit le code écrit en C suivant : int tab[6], i; for (i=0; i< 6; i++) if (i % 2 == 0) tab[i] = 2* i; else tab[i] = i; Donnez les valeurs du tableau tab après l’exécution du code précédent : Réponse : i 0 1 2 3 4 5 tab[i] 0 1 4 3 8 5 (15 points): Répondez par Vrai (ou V) si l'énoncé est correct ou par Faux (ou F) si l'énoncé est incorrect. Si vous répondez Faux (et seulement dans ce cas), expliquez brièvement votre réponse. Chaque question vaut trois (3) points. L’explication appropriée (lorsqu’exigée) vaut deux (2) points sur trois. 1) La déclaration en C : boolean excellent ; float final; est valide pour l'affectation suivante : excellent = final >= 90.0 ; Réponse : Faux Le type boolean n’existe pas en C (on utilise le type int) 2) Pour calculer la taille moyenne de toutes les personnes avec le tableau taille et le nombre de personnes (nbPers), il est approprié d'utiliser une fonction avec return. Réponse : Vrai 3. Avec l’en-tête de la fonction suivante: int plusGrand (int tableau[], int nbElem) et avec les déclarations suivantes: int age[] = { 20, 16, 19 }, nbPers = sizeof(age) / sizeof(int); l’instruction suivante est valide en syntaxe : if ( plusGrand(age, nbPers) <= 17 ) printf(Aucun adult); Réponse : Vrai 4. Avec l’en-tête de la fonction suivante (qui affiche un tableau d’entiers): void afficher (int tab[], int n) l’instruction suivante est valide en syntaxe : afficher(25, tableau); Réponse : Faux : conflit de type des paramètres sur l’en-tête et lors de l’appel. 5. Après les instructions suivantes : int age1 = 35, age2 = 20, t ; t = age1; age1 = age2; age2 = t; age1 vaut 20 et age2 vaut 35. Réponse : vrai Partie B : Codage avec C ( total de 20 points ) : Au TP3 vous aviez travaillé avec les quatre (4) tableaux suivants : #define MAX_PERS 25 int numero[MAX_PERS]; char sexe[MAX_PERS]; float taille[MAX_PERS], poids[MAX_PERS]; int nbPers ; On a aussi appelé la fonction lireRemplir : lireRemplir("E:\\imp_a09.txt", numero, sexe, taille, poids, &nbPers); (10 points) Écrivez une fonction, justifiez son genre (avec return ou de type void), écrivez ses appels pour compter par la fonction puis afficher : - le nombre de femmes dont la taille dépasse 1.82 mètre; - le nombre d’hommes dont le poids dépasse 98.7 kg Réponse : a) Justification du genre de fonction choisi (avec return ou de type void) : La fonction compte et retourne le nombre de personnes qui satisfont certaines conditions => fonction avec return. b) Affichages demandées : printf(" %d\n", leNombre(‘F’, sexe, taille, nbPers, 1.82)); printf(" %d\n", leNombre(‘M’, sexe, poids, nbPers, 98.7)); Réponse : Écriture de la fonction : int leNombre(char sexeVoulu, char sexe[], float tableau[], int nbPers, float borne) { int n = 0, i ; for (i = 0 ; i < nbPers; i++) if (sexe[i] == sexeVoulu && tableau[i] > borne ) n++; return n; } (10 points) Écrivez une fonction, justifiez son genre (avec return ou de type void), écrivez ses appels pour  : - afficher les femmes dont leurs numéros sont impairs - afficher les hommes dont leurs numéros sont pairs Réponse : a) Justification du genre de fonction choisi (avec return ou de type void) : La fonction ne calcule pas un seul résultat de type simple. En fait, elle affiche certaines personnes qui satisfont certaines conditions => fonction de type void b) Les appels : afficher('F', sexe, 1, numero, nbPers); afficher('M', sexe, 0, numero, nbPers); c) Écriture de la fonction : void afficher(char sexeVoulu, char sexe[], int reste , int numero[], int nbPers) { int i ; for (i = 0 ; i < nbPers; i++) if (sexe[i] == sexeVoulu && (numero[i] % 2 == reste)) printf("%3c %6d\n", sexe[i], numero[i]); } Partie C : Codage avec le lange Java (total de 30 points) : (15 points) Soient les déclarations suivantes : int [] nbCafe = { 1, 4, 0, 3, 2, 5 }; int nbPers = nbCafe.length; Écrivez une méthode static appropriée et ses appels pour compter par la méthode et d’afficher le nombre de personnes : - qui consomment de café - qui consomment 3 tasses ou plus Réponse : Voir Q31.java (15 points) Concevez la classe Carre avec le champ privé cote (le côté d’un carré), deux constructeurs appropriés et quelques méthodes pertinentes. Dans la méthode main de la classe TestCarre : instanciez deux carrés c1 et c2; affichez la diagonale de c2; déclarez et initialisez un tableau de 4 carrés; ajoutez 2.7 aux côtés de ces 4 carrés. Voir Carre (suffisante pour la question) et TestCarre.java

Related Downloads
Explore
Post your homework questions and get free online help from our incredible volunteers
  1232 People Browsing
Your Opinion