Exercice langage C: Les Instructions

1. Donnez la déclaration d’une fonctionf sans paramètre et qui ne retourne aucune valeur.

2. Donner la déclaration d’un pointeur sur un tableau de 10 chaînes de caractères.

3. Que vaut la variableernet à la ?n du code suivant?

On rappelle quex += y est équivalent àx = x + Y et que de manière généralex op = y est équivalent àx = x op y.

int ernet = 100;

ernet += 5;

ernet

*= 10;

ernet /= 15;

ernet %= 4;

4. (*2) Soit le code suivant :

#include

#define MAX = 10

int main() {

int tab[MAX];

tab[2] = 2;

printf("%d", tab[MAX-8]);

}

Ce programme compile-t-il? Si oui qu’af?che-t-il?


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
1. (*2) Soit le code suivant :
int i=0, tab[10], n=27 ;
do {
tab[i++] = n % 10 ;
} while ((n /= 10) > 10) ;
Que contient le tableau tab en ?n de programme ?
Réponse : tab[0] vaut 7 et les autres cases du tableau ont une valeur indéterminée.
Comme il s’agit d’une boucle do while, l’instruction associée est exécutée au moins une
fois. L’expression i++ se lit de gauche à droite, c’est à dire retourne la valeur de i avant
de l’incrémenter, soit 0. Donc tab[0] vaut le reste de la division entière entre 27 (n) et
10, soit 7. tab[0] vaut 7.
Le test de l’instruction est faux car n / 10 vaut 2 qui est inférieur à 10. Les autres cases
du tableau ont donc une valeur indéterminée.


2. (*3) Soit le code suivant :
int i ;
printf("i ? ") ;
scanf("%d", &i) ;
switch (i) {
case 0 : printf(" NUL") ; break ;
case 1 : case 3 : case 5 : case 7 : case 9 :
printf(" IMPAIR") ; break ;
case 2 : case 4 : case 6 : case 8 :
printf(" PAIR") ; break ;
default : printf("NEGATIF OU PAS UN CHIFFRE") ; break ;
}

Réécrivez l’instruction switch en n’utilisant que des instructions if.
Réponse :
int i ;
printf("i ? ") ;
scanf("%d", &i) ;
if (i == 0) {
printf(" NUL") ;
}
else if (i == 1 || i ==3 || i == 5 || i == 7 || i == 9) {
printf(" IMPAIR") ;
}
else if (i == 2 || i ==4 || i == 6 || i == 8) {
printf(" PAIR") ;
}
else {
printf("NEGATIF OU PAS UN CHIFFRE") ;
}


3. Donnez la déclaration d’une fonction g sans paramètre et qui retourne l’adresse d’un entier.
Réponse : int g(void) ;


4. Donnez la déclaration d’une fonction f sans paramètre et qui ne retourne aucune valeur
Réponse : void f(void) ;