• Aucun résultat trouvé

Université de Xidian Université de Xidian

N/A
N/A
Protected

Academic year: 2022

Partager "Université de Xidian Université de Xidian"

Copied!
1
0
0

Texte intégral

(1)

Université de Xidian Université de Xidian

Polytech’Sophia 2017–2018

Examen de Langage C

(V. Granet)

Durée : 1h30 Aucun document autorisé Mobiles interdits

I1. En utilisant une notation de tableau, écrivez en C la fonctionsansLesChiffresqui prend en paramètre deux chaînes de caractèress1ets2. Cette fonction copies2danss1en enlevant tous les chiffres présents danss2. De plus, elle renvoie le nombre de chiffres supprimés. Par exemple, l’appel sansLesChiffres(s,"lundi 6 juin 2018")renvoie la valeur5etsest égale à"lundi juin".

/*

* Rôle : affecte à s1 la chaîne s2 dans laquelle les

* chiffres ont été supprimés . De plus , elle renvoie le

* nombre de chiffres supprimés .

*/

i n t sansLesChiffres (char s1 [] , c o n s t char s2 []) { i n t i=0 , j=0 , n =0;

w h i l e ( s2 [i ]!=’\0 ’) { i f (! isdigit ( s2 [i ]))

// ce n’est pas un chiffre => le mémoriser s1 [j ++]= s2 [i ];

e l s e

// un chiffre => on le compte et on le saute n ++;

// on passe au caractère suivant sans s2 i ++;

}

// ne pas oublier le caractère de fin de chaîne s1 [i ]=’\0 ’;

r e t u r n n;

}

. . . . I2. Donnez la déclaration d’une structure pour représenter uneduréeformée de 3 champs entiers :

heures(>0),minutes(06minutes659), etsecondes(06secondes659).

t y p e d e f s t r u c t { i n t h; /* h>0 */

unsigned s h o r t i n t m; /* 06m659*/

unsigned s h o r t i n t s; /* 06s659*/

} duree ;

. . . . I3. Écrivez la fonctioninitDuréequi renvoie une valeur de typedureeinitialisée à partir de son paramètre qui indique un nombre de secondes. Par exemple, l’appelinitDuree(8000)renvoie une durée de 2 heures, 13 minutes et 20 secondes.

/*

* Antécédent : t >=0

1

* Rôle : renvoie une durée initialisée à partir du nombre de secondes n

*/

duree initDuree (i n t t) { assert (t >=0);

duree d;

d.s = t %60; t /= 60;

d.m = t %60; t /= 60;

d.h = t;

r e t u r n d;

}

. . . . I 4. Écrivez la fonctioncomparequi compare deux duréesd1etd2. Cette fonction renvoie0si les deux durées sont égales, une valeur entière négative sid1<d2, et une valeur entière positive si d1>d2.

/*

* Rôle : compare deux durées .

*/

i n t egal ( duree d1 , duree d2 ) { // convertir les 2 durées en secondes i n t s1 = d1 .h *3600+ d1 .m *60+ d1 .s;

i n t s2 = d2 .h *3600+ d2 .m *60+ d2 .s;

// compararer le nombre de secondes r e t u r n s1 - s2 ;

}

. . . . I 5. Expliquez ce que calcule la fonctionfsuivante :

i n t f(char s[] , c o n s t char c) { i n t i =0;

w h i l e (s[i ]!=’\0 ’) i ++;

w h i l e (i >=0) {

i f (s[i] == c) r e t u r n i;

i - -;

}r e t u r n -1;

}

Cette fonction renvoie l’indice de la dernière occurrence du caractère c dans la chaîne s, si elle existe, sinon elle renvoie -1.

. . . . I 6. Exclusivement à l’aide de la notation de pointeur, récrivez la fonction précédente. Cette fonction

devra rendre un pointeur surchar. char *f(char *s , c o n s t char c) {

char *p = s;

w h i l e (* s) s ++;

w h i l e (s >= p) {

i f (* s == c) r e t u r n s;

s - -;

}

r e t u r n NULL ; }

. . . . 2

Références

Documents relatifs

En utilisant la fonction compter précédente, écrivez en C le programme myprog qui affiche sur la sortie standard le nombre de lettres et de chiffres d’une chaîne de caractères

En utilisant la fonction compter précédente, écrivez en C le programme myprog qui affiche sur la sortie standard le nombre de lettres et de chiffres d’une chaîne de caractères

Écrivez la fonction main dans laquelle vous déclarerez une variable jour de type lesJours et à laquelle vous affecterez la valeur samedi..

Écrivez la fonction lireJour qui lit sur l’entrée standard un entier (∈ [0; 6]) et qui renvoie la valeur correspondante dans le type lesJours. Écrivez la fonction main dans

Écrivez la fonction lireReel qui lit sur l’entrée standard caractère à caractère (uniquement à l’aide de la fonction scanf(&#34;%c&#34;,...) , à l’exclusion de toute

Écrivez la fonction lireReel qui lit sur l’entrée standard caractère à caractère (uniquement à l’aide de la fonction scanf(&#34;%c&#34;,...) , à l’exclusion de toute

Écrivez un programme C qui lit un grade sur l’entrée standard, et qui écrit sur la sortie standard l’avis correspondant.. Vous utiliserez

Écrivez un programme C qui lit un grade sur l’entrée standard, et qui écrit sur la sortie standard l’avis correspondant. Vous utiliserez