Exercice langage C corrigé types de variables et caractères

1.

(*3) La fonction strcpy permet de copier une chaine de caractères dans une autre, existante.

Voici son prototype :

char *strcpy ( char *destination, char *source) ;.

Écrivez cette fonction sans utiliser de tableaux ni d’opérateurs [] (uniquement des pointeurs et des accès pointeurs).

Réponse :

char *strcpy ( char *destination, char *source) {

while (

source != ’’) {

destination =

source ;

 destination++ ;

source++ ;

 }

 destination = ’’ ; 

}

2.

Soit la déclaration suivante : char mant[] = { ’a’, ’b’ }.

Que vaut mant[2] ?

Réponse : Son contenu est indéterminé.

Le tableau mant est implicitement déclaré de taille le nombre d’éléments présent dans son initialisation, donc ici 2. Il n’y a donc pas d’élément mant[2].

mant n’est pas une chaîne de caractères, car il n’a pas été initialisé avec une chaîne

(« ab »).

3.

Dans le code suivant :

int i=0, j=0 ;
j = ++i ;

Que vaut la variable j après l’instruction d’affectation ?

Réponse : j vaudra 1.

L’expresssion ++i se lit de gauche à droite : d’abord l’incrémentation de i, puis retour de sa valeur, pour être stockée dans j. Ainsi, j vaudra 1.

4.

Que vaut la variable ille dans le code suivant ?

float ille ;

ille = 2/3*100.0 ;

5

Pourquoi ?

Réponse : ille vaut 0.0.

L’expression 2/3 est évaluée dans le type int, donc vaut 0.

Note. En cas d’opérateurs de même priorité, la norme du langage C ne précise pas l’ordre d’évaluation de l’expression. Pour éviter tout problème, il faut bien indiquer les types des constantes et placer des parenthèses pour éviter l’ambiguité : 2.0/(3.0*100.0) ou (2.0/3.0)*100.0.

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *