École de technologie supérieure
Département de génie de la production automatisée
GPA665
Structures de données et algorithmes
Solutions du cahier d’exercices Série d’exercices no. 1 : Le langage C
Session : Automne 2002 Responsable du cours : Mohamed Cheriet, ing., Ph. D.
Locaux : Cours : 3740 Chargé de cours : Jean-Christophe Demers Laboratoire : 3324 Chargé de laboratoire : Nicolas Morency
Exercice 1
Sortie du programme :
6, 8 8, 7
Ne compile pas pour plusie urs raisons.
main() { int x;
int y;
x = 10;
c = x + 3; /* 1 */
if (c = 2) { /* 2 */
int c, d;
c = y - 3; /* 3 */
d = x + c;
printf("%d\n", c);
} else
d = x; /* 4 */
printf("%d, %d\n", x, c);
}
Note 1 : La variable c n’est pas déclarée (ne compile pas).
Note 2 : La variable c n’est pas déclarée (ne compile pas). Même si ce n’est pas une erreur, il faut faire attention à cette ligne de code puisque ce n’est pas une comparaison d’égalité entre c et 2 qui est faite mais plutôt une affectation de la valeur 2 à la variable c. Il ne faut pas oublier que le résultat d’une affectation est la valeur affectée, alors l’instruction conditionnel if donne vrai puisque c’est la valeur 2 qui est évaluée.
Note 3 : Ici la ligne est valide et compile mais attention à la variable y qui n’a pas été initialisée. Certains compilateurs l’auront initialisé à 0 lors de la déclaration, mais d’autre non.
Note 4 : La variable d n’est pas déclarée dans ce bloc, elle est déclarée dans le bloc inclus sous le if.
Exercice 3
Sortie du programme :
a = 5, b = 5, c = 1 a = 1, b = 0, c = 3 a = 6, b = 3, c = 6
Exercice 4
Sortie du programme :
Le carré de 0 est 0 Le carré de 1 est 1 Le carré de 2 est 4 Le carré de 3 est 9
Exercice 5
Valeur des variables :
x y z
a
10 10 0b
45 10 0c
25 0 11d
6 6 5e
0 12 0f*
6 0 5Il y a une coquille dans l’énoncé. Considérez poutôt : do x++, z = x + y; while(x++, x <= 4);
Exercice 6
Sortie du programme :
i = 2, j = 7 et k = 7 i = 0, j = 0 et k = 0 i = 0, j = 0 et k = 1
Exercice 7
Voici un exemple de code avec une version très compacte de la boucle for.
main() {
int a, b, c;
for (a = 1, b = 0; b < (a ? 3 : 6); a = !a, b++) { printf("Le carré de %d est %d\n", b, b*b);
} }
Exercice 8
Sortie du programme :
x = 22, y = 66
Exercice 9
Sortie du programme :
x = 2, y = 1
Exercice 10
Sortie du programme :
0, 1000 1, 100 2, 10 3, 1
Exercice 11
Sortie du programme :
j = 1, z = 1 j = 1, z = 2 j = 2, z = 3 j = 2, z = 4 j = 3, z = 5 j = 3, z = 6 j = 4, z = 7 j = 4, z = 8 j = 5, z = 9 j = 5, z = 10 j = 6, z = 11 j = 6, z = 12
Exercice 12
Table de conversion des températures Fahrenheit à Celcius.
void main(void) {
int i;
printf("Table de conversion des températures Fahrenheit à Celcius\n\n");
printf("\tFahrenheit\tCelcius\n");
for (i = -40; i <= 240; i += 20)
printf("\t%d (F)\t\t%0.2f (C)\n", i, (float)(i-32)*5.0/9.0);
}}
Voici la sortie de ce programme :
Table de conversion des températures Fahrenheit à Celcius
Fahrenheit Celcius -40 (F) -40.00 (C) -20 (F) -28.89 (C) 0 (F) -17.78 (C) 20 (F) -6.67 (C) 40 (F) 4.44 (C) 60 (F) 15.56 (C) 80 (F) 26.67 (C) 100 (F) 37.78 (C) 120 (F) 48.89 (C) 140 (F) 60.00 (C) 160 (F) 71.11 (C) 180 (F) 82.22 (C) 200 (F) 93.33 (C) 220 (F) 104.44 (C) 240 (F) 115.56 (C)
Suite de Fibonacci.
void main(void) {
int N1 = 1, N2 = 1;
int i, Temp;
printf("Suite de Fibonacci : \n\t1 - 1\n\t2 - 1\n");
for (i = 3; i <= 20; i++) {
printf("\t%d - %d\n", i, N1 + N2);
Temp = N1 + N2;
N1 = N2;
N2 = Temp;
} }
*Il y a une coquille dans l’énoncé.
La suite de Fibonacci ne commence pas par 1, 1, 3, 5, ... mais plutôt par 1, 1, 2, 3, 5, ...
Voici la sortie de ce programme :
Suite de Fibonacci : 1 - 1
2 - 1 3 - 2 4 - 3 5 - 5 6 - 8 7 - 13 8 - 21 9 - 34 10 - 55 11 - 89 12 - 144 13 - 233 14 - 377 15 - 610 16 - 987 17 - 1597 18 - 2584 19 - 4181 20 - 6765
Exercice 14*
Sortie du programme :
vec[3] = 9 vec[2] = 4 vec[1] = 1 vec[0] = 0 0 1 4 9
vec[0] = 0 vec[1] = 1 vec[2] = 4 vec[3] = 9 9 4 1 0
0 1 4 9
*Le code se trouvant au bas de l’exercice 13 correspond au no. 14 . Vous devez donner la sortie du programme.