Vous êtes sur la page 1sur 2

denseignement en Informatique ESTIA - Unite

e 2010/2011 1re Anne

Programmation en Langage C Examen (dur ee 2 heures) Premi` ere Session du 6 Janvier 2011 Notes : Seul le document Correction TP1/TP2 (5 pages) fourni ce jour est autoris e. Ne pas le d egrafer pour eviter que des feuilles volantes ne soient r epandues sur les tables. Sont interdits tout autre document, les calculatrices, les t el ephones, ainsi que tout autre ustensile de calcul et/ou de communication. Remarque 1 : Une indication sur le niveau atteint est pr ecis e apr` es chaque exercice. Les exercices pourront cependant etre trait es ind ependamment de leur ordre. Remarque 2 : Dans la suite, les indications concernant les nombres de lignes sont donn ees en comptant toute ligne de code non-vide (#include, prototypes, accolades. . .). Remarque 3 : Les petits oublis de point-virgule, parenth` ese, accolades, virgules, doubles quotes, etc. ne seront pas p enalisant tant quils restent ponctuels.

Exercice 1 : Questions de cours


Consigne : Quelques mots dexplication, ou un exemple, montrant que vous avez compris le concept suront. Ne r epondez que bri` evement, pas besoin de disserter, an de conserver du temps pour les exercices a ` suivre. Si vous ne savez pas r epondre dans linstant, le mieux sera certainement de passer ` a la suite. 1) Le langage C est faiblement typ e. Expliquez pourquoi ? 2) Comment est-il possible de r ecup erer les arguments de la ligne de commande ? 3) Peut-il arriver quun programme ecrive par inadvertance sur de la m emoire qui ne lui appartient pas ? ` 4) A quoi sert un compilateur ? 5) Dans lusage de la fonction printf(), que signient les formatages %d et %f, et que fait un \n ? 6) En quoi une fonction appel ee main() est-elle particuli` ere ? 7) Quest-ce que le prototype dune fonction ? 8) Comment la valeur bool eenne faux est-elle repr esent ee en C ? Et la valeur vrai ? ` 9) A quoi sert la fonction fopen() ? ` quoi sert la fonction malloc() ? 10) A
E Les connaissances g en erales du domaine sont valid ees

Exercice 2 : Nombres impairs


Ecrire un programme dans lequel lutilisateur donne n au clavier, et qui ache les n premiers nombres impairs. Par exemple, si n vaut 7 le programme achera : 1 3 5 7 9 11 13
Remarque : 14 lignes (environ)

Exercice 3 : Positiver les tableaux


Ecrire une fonction qui remplace par son oppos e chaque nombre n egatif du tableau dentiers, de taille N, donn e en param` etre. Le prototype de la fonction sera le suivant : void positiver (int *a, int N) ;
Remarque : 6 lignes (environ) D Les exercices donn es ` a lavance sont r esolus

denseignement en Informatique ESTIA - Unite

e 2010/2011 1re Anne

Exercice 4 : Addition jusqu` a l equilibre


Ecrire un programme dans lequel lutilisateur donne des nombres entiers au clavier, et qui calcule au fur et a mesure la somme des nombres positifs et des nombres n ` egatifs saisis. Le programme sarr ete de demander des nombres lorsque la somme des positifs et des n egatifs est ` a l equilibre (i.e. le programme sarr ete quand la somme des positifs et des n egatifs vaut z ero). Exemples dex ecutions possibles :

Remarque : 14 lignes (environ) C Les briques de base sont ma tris ees dans un exercice nouveau

Exercice 5 : Matrices
1) Ecrire une fonction qui calcule et retourne la signature de la matrice carr e dentiers, de taille N, pass ee en param` etre (la signature est la somme des el ements de la diagonale). Le prototype de la fonction sera le suivant : int signature (int **a, int N) ; 2) Ecrire une fonction qui initialise les valeurs de la matrice carr e dentiers, de taille N, pass ee en param` etre pour obtenir la matrice unitaire (des 0 partout sauf sur la diagonale qui re coit des 1). Le prototype de la fonction sera le suivant : void unitaire (int **a, int N) ;
Remarque : 5.1 6 lignes (environ) / 5.2 de 6 ` a 9 lignes (environ) B Manipulation de structures de donn ees complexes

Exercice 6 : Consonnes et voyelles


1) Ecrire une fonction qui retourne vrai si le caract` ere pass e en param` etre est une voyelle. Le prototype de la fonction sera le suivant : char voyelle (char c) ; 2) Ecrire une fonction qui compte le nombre de consonnes, de voyelles et de caract` eres autres, dans la cha ne de caract` eres qui lui est pass e en param` etre. Apr` es appel de la fonction, les 3 valeurs compt ees seront r ecup erables dans les variables enti` eres dont ladresse aura et e donn ee en argument de la fonction. Le prototype de la fonction sera donc le suivant : void compter lettres (const char *s, int *cpt voyelle, int *cpt consonne, int *cpt autres) ; Aide : la fonction int isalpha(char c) retourne vrai si c est un caract` ere alphab etique, faux sinon. Aide : la fonction int strlen(const char *s) retourne la longueur de la cha ne pass ee en param` etre.
Remarque : 6.1 de 4 ` a 11 lignes (environ) / 6.2 11 lignes (environ) A La notion de fonction est r eellement acquise et lutilisation des pointeurs est bien ma tris ee

Vous aimerez peut-être aussi