Partiel QCM - Langage C (LC4)



Documents pareils
Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Conventions d écriture et outils de mise au point

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Les structures. Chapitre 3

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };

Introduction au langage C

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

INITIATION A LA PROGRAMMATION

MINIMUM. connaissances nécessaires à la programmation des microcontrôleurs PIC18 en langage C (une introduction au langage c A.N.S.

Java Licence Professionnelle CISII,

Les structures de données. Rajae El Ouazzani

Chapitre 1 : La gestion dynamique de la mémoire

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

Programmation en langage C Eléments de syntaxe

Cours Programmation Système

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Gestion de la mémoire

OS Réseaux et Programmation Système - C5

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail

Bases de programmation. Cours 5. Structurer les données

Programmation en langage C

Le prototype de la fonction main()

INF 104 (SELC) Introduction au langage C

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Architecture des ordinateurs

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Département Automatisation et Informatisation Année Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers

3IS - Système d'exploitation linux - Programmation système

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Algorithmique et Programmation, IMA

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

LE LANGAGE C++ ENAC 1997 A. DANCEL

Corrigé des exercices sur les références


1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Chap III : Les tableaux

Programmation en C. École Nationale Supérieure de Techniques Avancées. Pierre-Alain Fouque et David Pointcheval

Compression de Données - Algorithme de Huffman Document de Conception

Cours 1: Java et les objets

Cours Langage C/C++ Programmation modulaire

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Le langage C. Séance n 4

Cours d initiation à la programmation en C++ Johann Cuenin

Outils pour la pratique

Pensez à vous inscrire... si ce n est pas encore fait

Utilisation d objets : String et ArrayList

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Algorithmique, Structures de données et langage C

Les processus légers : threads. Système L3, /31

Programmation système de commandes en C

TP2 : tableaux dynamiques et listes chaînées

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Table des matières. Chapitre 4 : Variables pointeurs

Cours d Algorithmique et de Langage C v 3.0

Travaux Dirigés n 1 : chaînes de caractères

Rappels Entrées -Sorties

Programmation C. J.-F. Lalande. 15 novembre 2012

Programmation système I Les entrées/sorties

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

TD3: tableaux avancées, première classe et chaînes

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon

TD2/TME2 : Ordonnanceur et Threads (POSIX et fair)

I. Introduction aux fonctions : les fonctions standards

SRS DAY: Problématique liée à la virtualisation

Les arbres binaires de recherche

V- Manipulations de nombres en binaire

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

DNS Server RPC Interface buffer overflow. Céline COLLUMEAU Nicolas BODIN

Algorithmique I. Algorithmique I p.1/??

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

as Architecture des Systèmes d Information

Chaîne de production d un programme

Notes de Cours - Programmation Pascal Ferraro

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Cours de C. Allocation dynamique. Sébastien Paumier

Cours 6 : Tubes anonymes et nommés

Langage Éric Guérin 5 octobre 2010

Cours de programmation avancée. Le langage C. Université du Luxembourg

SUPPORT DE COURS. Langage C

Cours de C/C++ par la pratique. Hugues Talbot

Les débordements de tampons et les vulnérabilités de chaîne de format 1

Programme Compte bancaire (code)

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

COMPARAISONDESLANGAGESC, C++, JAVA ET

Claude Delannoy. 3 e édition C++

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

Petite initiation au langage C et au graphisme SDL

Livret de stage Canadien: Formulaire d enregistrement de l expérience en architecture

Programmation impérative

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Transcription:

Partiel QCM - Langage C (LC4) 1er avril 2009 Durée: 1h45 - Documents interdits Pour chaque question, il y a exactement une bonne réponse. Le tableau où vous devez répondre est fourni séparément. +1 pour une bonne réponse, 0 pour absence de réponse, -0,25 pour une mauvaise réponse. Vous devez obligatoirement répondre sur le tableau fourni. Pensez à le rendre avant de partir ;-) Question 0. Soit ex0.c le code suivant : int a = 1; int b = 2; printf("a = %d, b = %d\n", b, a); On compile avec gcc ex0.c et si un exécutable est créé on l exécute. Le programme ex0.c : 3. affiche a = 1, b = 2 4. affiche a = 2, b = 1 Question 1. Soit ex1.c le code suivant : int i = 0 ; printf("%d\n", i); On compile avec gcc ex1.c et si un exécutable est créé on l exécute. Le programme ex1.c : 3. affiche 0 à l exécution 4. affiche 48 à l exécution Question 2. Soit ex2.c le code suivant : 1

int i = 0; printf("%d\n", i++); On compile avec gcc ex2.c et si un exécutable est créé on l exécute. Le programme ex2.c : 3. affiche 0 à l exécution 4. affiche 1 à l exécution 5. affiche 2 à l exécution Question 3. Soit ex3.c le code suivant : int i = 0; int *ptr; *ptr = i; printf("%d \n", ++*ptr); On compile avec gcc ex3.c et si un exécutable est créé on l exécute. Le programme ex3.c : 3. affiche 0 à l exécution 4. affiche 1 à l exécution Question 4. Soit ex4.c le code suivant : int i; int *ptr = &i; printf("%x\n", &*ptr); On compile avec gcc ex4.c et si un exécutable est créé on l exécute. Le programme ex4.c : 2

3. affiche l adresse de i en hexadécimal 4. affiche l adresse de ptr en hexadécimal Question 5. Soit ex5.c le code suivant : int i, j = 0; i = j = 6; printf("i = %d, j = %d\n", i, j); On compile avec gcc ex5.c et si un exécutable est créé on l exécute. Le programme ex5.c : 3. affiche i = 6,j = 6 4. affiche i = 106,j = 6 5. affiche i = 0,j = 6 Question 6. Soit ex6.c le code suivant : #ifdef X printf("def\n"); #else printf("ndef\n"); #endif On compile avec gcc ex6.c et si un exécutable est créé on l exécute. Le programme ex6.c : 3. affiche def 4. affiche ndef 3

Question 7. Soit ex7.c le code suivant : #ifdef X printf("def\n"); #else printf("ndef\n"); #endif On compile ex7.c avec gcc -D"X" ex7.c et si un exécutable est créé on l exécute. Le programme ex7.c : 3. affiche def 4. affiche ndef Question 8. Soit ex8.c le code suivant : #ifdef X printf("def, %d\n", X); #else printf("ndef\n"); #endif On compile avec gcc -DX="1" ex8.c et si un exécutable est créé on l exécute. Le programme ex8.c : 4

3. affiche def, 1 4. affiche ndef Question 9. Soit ex9.c le code suivant : int a, b; int *ptr1, *ptr2; a = 5; b = a; ptr1 = &a; ptr2 = ptr1; b = (*ptr2)++; printf("a = %d, b = %d, *ptr1 = %d, *ptr2 = %d\n", a, b, *ptr1, *ptr2); On compile avec gcc ex9.c et si un exécutable est créé on l exécute. Le programme ex9.c : 3. affiche a = 6, b = 5, *ptr1 = 6, *ptr2 = 6 4. affiche a = 5, b = 5, *ptr1 = 5, *ptr2 = 5 5. affiche a = 6, b = 6, *ptr1 = 6, *ptr2 = 6 Question 10. Soit ex10.c le code suivant : int a, b; int *ptr1, *ptr2; a = 5; b = a; ptr1 = &a; a++; ptr2 = &b; b += a = b; printf("a = %d, b = %d, *ptr1 = %d, *ptr2 = %d\n", a, b, *ptr1, *ptr2); On compile avec gcc ex10.c et si un exécutable est créé on l exécute. Le programme ex10.c : 3. affiche a = 5, b = 10, *ptr1 = 5, *ptr2 = 10 4. affiche a = 5, b = 11, *ptr1 = 5, *ptr2 = 11 5. affiche a = 6, b = 6, *ptr1 = 6, *ptr2 = 11 5

Question 11. Soit ex11.c le code suivant : void trio(int a, int b, int c) a=b+c; b=c+a; c=a+b; int main(void) int a=1, b=2, c=3; trio(a,b,c); printf("%d %d %d\n",a,b,c); On compile avec gcc ex11.c et si un exécutable est créé on l exécute. Le programme ex11.c : 3. affiche 5 4 3 4. affiche 5 8 13 5. affiche 1 2 3 6. affiche 3 6 9 7. affiche 1 3 6 Question 12. Soit ex12.c le code suivant : void trio(int *a, int *b, int *c) *a=*b+*c; *b=*c+*a; *c=*a+*b; int main(void) int a=1, b=2, c=3; trio(&a,&b,&c); printf("%d %d %d\n",a,b,c); On compile avec gcc ex12.c et si un exécutable est créé on l exécute. Le programme ex12.c : 6

3. affiche 5 4 3 4. affiche 5 8 13 5. affiche 1 2 3 6. affiche 3 6 9 7. affiche 1 3 6 Question 13. Soit ex13.c le code suivant : #define TAB_LENGTH 3 int tab[tab_length]; int j; for (j = 0; j < TAB_LENGTH; j++) tab[j] = 5; j = 0; printf("["); while (j < TAB_LENGTH) printf(" %d ", tab[j]); j++; printf("]"); On compile avec gcc ex13.c et si un exécutable est créé on l exécute. Le programme ex13.c : 4. affiche [ 5 5 5 ] 5. affiche autre chose Question 14. Soit ex14.c le code suivant : #define TAB_LENGTH 3 int tab[tab_length]; int j = 0; for(; j <= TAB_LENGTH ; j++) tab[j] = 5; printf("["); for(j = 0; j <= TAB_LENGTH; j++) printf(" %d ",tab[j]); printf("]"); 7

On compile avec gcc ex14.c et si un exécutable est créé on l exécute. Le programme ex14.c : 4. affiche [ 5 5 5 ] 5. affiche autre chose Question 15. Soit ex15.c le code suivant : #define TAB_LENGTH 3 int tab[tab_length]; int j = 0; int *ptr = tab; for(; j < TAB_LENGTH; j++) tab[j] = 5; *(ptr + 1) = 3; printf("[ %d %d %d ]\n", tab[0], tab[1], tab[2]); On compile avec gcc ex15.c et si un exécutable est créé on l exécute. Le programme ex15.c : 4. affiche [ 5 5 5 ] 5. affiche [ 3 5 5 ] 6. affiche [ 5 3 5 ] Question 16. Soit ex16.c le code suivant : #define TAB_LENGTH 3 int tab[tab_length]; int j = 0; int *ptr = &tab[0]; for(; j < TAB_LENGTH; j++) tab[j] = 5; *(ptr + 1) = 3; printf("[ %d %d %d ]", tab[0], tab[1], tab[2]); On compile avec gcc ex16.c et si un exécutable est créé on l exécute. Le programme ex16.c : 8

4. affiche [ 5 5 5 ] 5. affiche [ 3 5 5 ] 6. affiche [ 5 3 5 ] Question 17. Soit ex17.c le code suivant : #define TAB_LENGTH 3 int tab[tab_length]; int j = 0; int *ptr = &tab[3]; for(; j < TAB_LENGTH; j++) tab[j] = 5; *(tab + 1) = 3; *(ptr - 1) = 3; printf("[ %d %d %d ]", tab[0], tab[1], tab[2]); On compile avec gcc ex17.c et si un exécutable est créé on l exécute. Le programme ex17.c : 4. affiche [ 3 5 3 ] 5. affiche [ 3 3 5 ] 6. affiche [ 5 3 3 ] 7. affiche [ 5 3 5 ] Question 18. Soit ex18.c le code suivant : struct list_v struct list_v *suivant; ; typedef struct list_v *list; list m; m->suivant = NULL; 9

On compile avec gcc ex18.c et si un exécutable est créé on l exécute. Le programme ex18.c : 4. fonctionne normalement mais n affiche rien Question 19. Soit ex19.c le code suivant : struct list_v int i; struct list_v *suivant; ; struct list_v maliste; maliste.suivant = maliste; On compile avec gcc ex19.c et si un exécutable est créé on l exécute. Le programme ex19.c : 4. fonctionne normalement mais n affiche rien Question 20. Soit ex20.c le code suivant : #include <stdlib.h> struct list_couple int membre1; int membre2; struct list_couple *suivant; ; typedef struct list_couple *list; list m = malloc(sizeof(struct list_couple)); list m2 = malloc(sizeof(struct list_couple)); m->suivant = m2; free(m); On compile avec gcc ex20.c et si un exécutable est créé on l exécute. Le programme ex20.c : 10

3. fonctionne et avant le retour de la fonction main() tout l espace occupé par m et m2 a été libéré. 4. fonctionne mais avant le retour de la fonction main() tout l espace occupé par m et m2 n a pas été libéré. Question 21. Soit ex21.c le code suivant : #include <stdlib.h> struct list_couple int membre1; int membre2; struct list_couple *suivant; ; typedef struct list_couple *list; list m = malloc(sizeof(struct list_couple)); list m2 = malloc(sizeof(struct list_couple)); (*m).suivant = *m2; free(m); On compile avec gcc ex21.c et si un exécutable est créé on l exécute. Le programme ex21.c : 3. fonctionne et avant le retour de la fonction main() tout l espace occupé par m et m2 a été libéré. 4. fonctionne mais avant le retour de la fonction main() tout l espace occupé par m et m2 n a pas été libéré. Question 22. Soit ex22.c le code suivant : #include <stdlib.h> struct list_couple double membre1; double membre2; struct list_couple *suivant; ; typedef struct list_couple *list; list m = malloc(sizeof(struct list_couple)); list m2 = malloc(sizeof(struct list_couple)); 11

m->membre1 = 18.5; m->membre2 = 23.4; m->suivant = m2; free(m->membre1); free(m->membre2); free(m2); free(m); On compile avec gcc ex22.c et si un exécutable est créé on l exécute. Le programme ex22.c : 2. fonctionne et avant le retour de la fonction main() tout l espace occupé par m et m2 a été libéré 3. fonctionne mais avant le retour de la fonction main() tout l espace occupé par m et m2 n a pas été libéré. 12

Nom : Prénom : Groupe : Pour chaque question q0, q1, q2 etc. cochez par une croix les cases correspondant aux réponses que vous estimez justes. Votre réponse doit être lisible et sans ambiguïté. N écrivez pas en rouge, cette couleur est réservée aux correcteurs. q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 q16 q17 q18 q19 q20 q21 q22 r1 r2 r3 r4 r5 r6 r7 score total 13