pdf - e-book - archive - github.com

2.3  Boucles

2.3.1  Compréhension

Exercice 1 Programme mystère 1

Qu’affiche le programme suivant ?

#include<stdio.h>
#define N 5

int main()
{
  int a = 1, b = 0;
  while(a <= N)
    b += a++;
  printf("%d, %d\n", a, b);
  return 0;
}

Télécharger le fichier

Exercice 2 Programme mystère 2

Qu’affiche le programme suivant ?

#include<stdio.h>
#define M 3
#define N 4

int main()
{
  int a, b, c = 0, d;
  for (a = 0 ; a < M ; a++)
    {
      d = 0;
      for(b = 0 ; b < N ; b++)
       d+=b;
      c += d;
    }
  printf("a = %d, b = %d, c = %d, d = %d", a, b, c, d);
  return 0;
}

Télécharger le fichier

Exercice 3 Programme mystère 3

Qu’affiche le programme suivant ?

#include<stdio.h>

int main()
{
  int a, b, c, d;
  a = 1; b = 2;
  c = a/b;
  d = (a==b)?3:4;
  printf("c = %d, d = %d\n", c, d);
  a = ++b;
  b %= 3;
  printf("a = %d, b = %d\n", a, b);
  b = 1;
  for(a = 0 ; a <= 10 ; a++)
    c = ++b;
  printf("a = %d, b = %d, c = %d, d = %d\n", a, b, c, d); 
  return 0;
}

Télécharger le fichier

2.3.2  Utilisation de toutes les boucles

Les exercices suivants seront rédigés avec les trois types de boucle : tant que, répéter jusqu’à et pour.

Exercice 4 Compte à rebours

Ecrire un programme demandant à l’utilisateur de saisir une valeur numérique positive n et affichant toutes les valeurs n, n−1, …, 2, 1, 0.

Exercice 5 Factorielle

Ecrire un programme calculant la factorielle (factorielle n = n! = 1 × 2 × … × n et 0! = 1) d’un nombre saisi par l’utilisateur.

2.3.3  Choix de la boucle la plus appropriée

Pour les exercices suivants, vous choisirez la boucle la plus simple et la plus lisible.

Exercice 7 Table de multiplication

Ecrire un programme affichant la table de multiplication d’un nombre saisi par l’utilisateur.

Exercice 8 Tables de multiplications

Ecrire un programme affichant les tables de multiplications des nombres de 1 à 10 dans un tableau à deux entrées.

Exercice 9 Puissance

Ecrire un programme demandant à l’utilisateur de saisir deux valeurs numériques b et n (vérifier que n est positif) et affichant la valeur bn.

2.3.4  Morceaux choisis

Exercice 11 Approximation de 2 par une série

On approche le nombre 2 à l’aide de la série ∑i=0+ ∞ 1/2i. Effectuer cette approximation en calculant un grand nombre de terme de cette série. L’approximation est-elle de bonne qualité ?

Exercice 12 Approximation de e par une série

Mêmes questions qu’à l’exercice précédent en e à l’aide de la série ∑i=0+ ∞ 1/i!.

Exercice 13 Approximation de ex par une série

Calculer une approximation de ex à l’aide de la série ex = ∑i=0+ ∞ xi/i!.

Exercice 14 Conversion d’entiers en binaire

Ecrire un programme qui affiche un unsigned short en binaire. Vous utiliserez l’instruction sizeof(unsigned short), qui donne en octets la taille de la représentation en mémoire d’un unsigned short.

Exercice 15 Conversion de décimales en binaire

Ecrire un programme qui affiche les décimales d’un double en binaire.

Exercice 16 Inversion de l’ordre des bits

Ecrire un programme qui saisit une valeur de type unsigned short et qui inverse l’ordre des bits. Vous testerez ce programme en utilisant le précédent.

Exercice 17 Joli carré

Ecrire un programme qui saisit une valeur n et qui affiche le carré suivant (n = 5 dans l’exemple) :

n = 5
X  X  X  X  X

X  X  X  X  X

X  X  X  X  X

X  X  X  X  X

X  X  X  X  X

Exercice 18 Racine carrée par dichotomie

Ecrire un algorithme demandant à l’utilisateur de saisir deux valeurs numériques x et p et affichant √x avec une précision p. On utilisera une méthode par dichotomie : à la k-ème itération, on cherche x dans l’intervalle [min, sup], on calcule le milieu m de cet intervalle (à vous de trouver comment le calculer). Si cet intervalle est suffisament petit (à vous de trouver quel critère utiliser), afficher m. Sinon, vérifiez si √x se trouve dans [inf, m] ou dans [m, sup], et modifiez les variables inf et sup en conséquence. Par exemple, calculons la racine carrée de 10 avec une précision 0.5,

2.3.5  Extension de la calculatrice

Une calculatrice de poche prend de façon alternée la saisie d’un opérateur et d’une opérande. Si l’utilisateur saisit 3, + et 2, cette calculatrice affiche 5, l’utilisateur a ensuite la possibilité de se servir de 5 comme d’une opérande gauche dans un calcul ultérieur. Si l’utilisateur saisit par la suite * et 4, la calculatrice affiche 20. La saisie de la touche = met fin au calcul et affiche un résultat final.

Exercice 19 Calculatrice de poche

Implémentez le comportement décrit ci-dessus.

Exercice 20 Puissance

Ajoutez l’opérateur $ qui calcule ab, vous vous restreindrez à des valeurs de b entières et positives.

Exercice 21 Opérations unaires

Ajoutez les opérations unaires racine carrée et factorielle.