Vous êtes sur la page 1sur 4

243-315-Modules numériques Cégep Édouard-Montpetit

Exercices supplémentaires
 Rappel : codes ascii de 'A' = 0x41 … 'Z' = 0x5A 'a' = 0x61 ... 'z' = 0x7A '0' = 0x30 …'9' = 0x39

1) Pour chaque déclaration ou instructions suivantes, écrivez avec précision et clarté comment elles doivent
être lues pour bien les interpréter. Donc je vous demande d’écrire ce qu’elles signifient comme si vous les
lisiez à voix haute.

a) void ajout(int *nombre); : Je déclare une fonction nommée ajout qui reçoit en paramètre
l’adresse vers un entier signé de 32 bits, cette adresse sera mise dans
la variable locale nombre qui est un pointeur sur des int.
Cette fonction ne retourne rien.

b) char *valeur; : Je déclare un pointeur nommé valeur qui pointe sur des
entiers signés de 8 bits du type char.

c) int calcul (int chiffre); : Je déclare une fonction nommée calcul, elle reçoit en paramètre
un entier signé de 32 bits qui sera mis dans la variable locale chiffre.
Cette fonction retourne un entier signé de 32 bits du type int.

2) Nommez les deux façons de passer des paramètres à une fonction.

Par valeur et Par Adresse (pointeur)

3) J’ai un tableau à 1 dimension déclaré comme suit : int transport[12];

a) Écrivez l’instruction en langage C qui fera en sorte de mettre la valeur 456 dans le 8e élément du
tableau.
transport[7] = 456;
b) Écrivez l’instruction en langage C qui permettra de déclarer un pointeur nommé « ptr » qui pointera
sur ce type de tableau.
int *ptr;
ptr = transport;
c) Écrivez l’instruction en langage C qui placera l’adresse du 6e élément du tableau « transport » dans
le pointeur « ptr ».
ptr = &transport[5];

où & signifie l’adresse de..

André Touchette Page 1/4


243-315-Modules numériques Cégep Édouard-Montpetit

4) Quel est le résultat à l’écran suite à l’exécution du programme


#include <stdio.h>
#include <stdlib.h>

void decodage(char *code_source,char *code_rep);

int main(){
char code_secret[8] = {"9tkmwnv"};
char code_reel[8]={0};
int i;

decodage(code_secret,code_reel);
printf("Le code secret est : %s\n",code_secret);
printf("Le code reel est : %s\n",code_reel);

return 0;
}
//-----------------------------------------------------------------------
void decodage(char *code_source,char *code_rep){

while(*(code_source+2)){
*code_rep = *code_source + *(code_source+1) - *(code_source+2);
code_rep++;
code_source++;
}
}
//-----------------------------------------------------------------------

Réponse des printf dans l’encadré :


Le code secret est : 9tkmwnv
Le code reel est : Bravo

André Touchette Page 2/4


243-315-Modules numériques Cégep Édouard-Montpetit

5) Analysez attentivement le programme et complétez les questions suivantes.


#include <stdio.h>
#include <stdlib.h>

main(void){
int volt[] = {170,-347,340,600,400};

int *nombre;
double rep;
nombre = &volt[2];

rep = traduction(nombre);
printf("La reponse est : %.1f volts\n",rep);
}
/*----------------------------------------------------------------------*/
/* fonction « traduction » qui effectue un calcul */
/*----------------------------------------------------------------------*/

float traduction(int *valeur){

return *valeur/1.4142;
}
/*----------------------------------------------------------------------*/

a) En vous référant à ce qui est écrit dans le programme, complétez les espaces soulignés afin que la
déclaration de la fonction « traduction » soit cohérente avec le fonctionnement du programme.

b) Inscrivez maintenant le résultat de l’impression du printf() suite à l’exécution du programme.

La reponse est : 240.4 volts

6) Inscrivez V (vrai) ou F (faux) à gauche de chaque affirmation (vous êtes sur un PC)

V a) Un pointeur sur un char occupe 4 octets en mémoire.

V b) L’instruction « switch » analyse que des valeurs entières négatives ou positives.

F c) L’instruction de pré-compilation #define permet de déclarer des constantes dans le programme


qui pourront être modifiées plus loin dans le programme.

V d) Une fonction peut retourner un pointeur.

t e) Lorsque l’on utilise seulement le nom d’un tableau dans une instruction en langage C, son nom
V
r correspond en fait à son adresse.
a
V f) Les éléments d’un tableau doivent tous être du même type.
d
u
c
t
i
o
n
André Touchette Page 3/4
(
i
243-315-Modules numériques Cégep Édouard-Montpetit

7) Suite à l'exécution du programme suivant, que verra-t-on s’afficher exactement à l’écran ?

#include <stdio.h>
#include <stdlib.h>

void conversion(int *tab, int taille);


void main(void){
int longueur, i=0 ;
int valeur[] = {-25,60,120,-403,540,321,46};

longueur = sizeof(valeur)/sizeof(int);
conversion(valeur,longueur);
while(longueur--){
printf("Le nombre %d est : %d\n",i+1,valeur[i]);
i++;
}
}
/*-----------------------------------------*/ Le nombre 1 est : -15
void conversion(int *tab,int taille){ Le nombre 2 est : 105
int i=0;
int modif[]= {10,45,-18,32}; Le nombre 3 est : 102
Le nombre 4 est : -371
while(taille--){
*tab += modif[i++ % 4]; Le nombre 5 est : 550
tab++; Le nombre 6 est : 366
}
} Le nombre 7 est : 28

8) Ce programme utilise un pointeur sur un tableau de « int », analysez son fonctionnement et dites ce qui
sera alors imprimé à l’écran. Supposez que l’adresse du tableau rep1 est 292468.

#include <stdio.h>
#include <stdlib.h>

void main(){

int rep1[] = {12,35,64,120,150,10,200};


int *ptr;
int i = 3;

ptr = rep1;
printf("Le pointeur ptr pointe a l'adresse : %d\n",ptr);

ptr += i;
printf("Le pointeur ptr pointe maintenant a l'adresse : %d\n",ptr);
printf("La reponse est : %d\n",*ptr);

ptr = &rep1[4];
printf("Le pointeur ptr vaut : %d\n",ptr);
printf("La reponse est : %d\n",*ptr);

Le pointeur ptr pointe a l’adresse 292468


Le pointeur ptr pointe maintenant a l’adresse : 292480
La reponse est : 120
Le pointeur ptr vaut : 292484
La reponse est : 150

André Touchette Page 4/4

Vous aimerez peut-être aussi