pdf - e-book - archive - github.com

2.1  Variables et opérateurs

f

2.1.1  Entiers

Exercice 1 Saisie et affichage

Saisir une variable entière, afficher sa valeur.

Exercice 2 Permutation de 2 variables

Saisir deux variables et les permuter avant de les afficher.

Exercice 3 Permutation de 4 valeurs

Ecrire un programme demandant à l’utilisateur de saisir 4 valeurs A, B, C, D et qui permute les variables de la façon suivante :

noms des variablesABCD
valeurs avant la permutation1234
valeurs après la permutation3412

Exercice 4 Permutation de 5 valeurs

On considère la permutation qui modifie cinq valeurs de la façon suivante :

noms des variablesABCDE
valeurs avant la permutation12345
valeurs après la permutation43512

Ecrire un programme demandant à l’utilisateur de saisir 5 valeurs que vous placerez dans des variables appelées A, B, C, D et E. Vous les permuterez ensuite de la façon décrite ci-dessus.

2.1.2  Flottants

Exercice 5 Saisie et affichage

Saisir une variable de type float, afficher sa valeur.

Exercice 6 Moyenne arithmétique

Saisir 3 valeurs, afficher leur moyenne.

Exercice 7 Surface du rectangle

Demander à l’utilisateur de saisir les longueurs et largeurs d’un rectangle, afficher sa surface.

Exercice 8 Moyennes arithmétique et géométrique

Demander à l’utilisateur de saisir deux valeurs a et b, afficher ensuite la différence entre la moyenne arithmétique (a + b)/2 et la moyenne géométrique √ab. Pour indication, sqrt(f) est la racine carrée du flottant f, cette fonction est disponible en important \#include<math.h>.

Exercice 9 Cartons et camions

Nous souhaitons ranger des cartons pesant chacun k kilos dans un camion pouvant transporter M kilos de marchandises. Ecrire un programme C demandant à l’utilisateur de saisir M et k, que vous représenterez avec des nombres flottants, et affichant le nombre (entier) de cartons qu’il est possible de placer dans le camion. N’oubliez pas que lorsque l’on affecte une valeur flottante à une variable entière, les décimales sont tronquées.

2.1.3  Caractères

Exercice 10 Prise en main

Affectez le caractère 'a' à une variable de type char, affichez ce caractère ainsi que son code ASCII.

Exercice 11 - Successeur

Ecrivez un programme qui saisit un caractère et qui affiche son successeur dans la table des codes ASCII.

Exercice 11 - Casse

Ecrivez un programme qui saisit un caractère miniscule et qui l’affiche en majuscule.

Exercice 11 Codes ASCII

Quels sont les codes ASCII des caractères '0', '1', …, '9'

2.1.4  Opérations sur les bits (difficiles)

Exercice 12 Codage d’adresses IP

Une adresse IP est constituée de 4 valeurs de 0 à 255 séparées par des points, par exemple 192.168.0.1, chacun de ces nombres peut se coder sur 1 octet. Comme une variable de type long occupe 4 octets en mémoire, il est possible de s’en servir pour stocker une adresse IP entière. Ecrivez un programme qui saisit dans des unsigned short les 4 valeurs d’une adresse IP, et place chacune d’elle sur un octet d’une variable de type long. Ensuite vous extrairez de cet entier les 4 nombres de l’adresse IP et les afficherez en les séparant par des points.

Exercice 13 Permutation circulaire des bits

Effectuez une permutation circulaire vers la droite des bits d’une variable b de type unsigned short, faites de même vers la droite.

Exercice 14 Permutation de 2 octets

Permutez les deux octets d’une variable de type unsigned short saisie par l’utilisateur.

Exercice 15 Inversion de l’ordre de 4 octets

Inversez l’ordre des 4 octets d’une variable de type long saisie par l’utilisateur. Utilisez le code du programme sur les adresses IP pour tester votre programme.

2.1.5  Morceaux choisis (difficiles)

Exercice 16 Pièces de monnaie

Nous disposons d’un nombre illimité de pièces de 0.5, 0.2, 0.1, 0.05, 0.02 et 0.01 euros. Nous souhaitons, étant donné une somme S, savoir avec quelles pièces la payer de sorte que le nombre de pièces utilisée soit minimal. Par exemple, la somme de 0.96 euros se paie avec une pièce de 0.5 euros, deux pièces de 0.2 euros, une pièce de 0.05 euros et une pièce de 0.01 euros.

  1. Le fait que la solution donnée pour l’exemple est minimal est justifié par une idée plutôt intuitive. Expliquez ce principe sans excès de formalisme.
  2. Ecrire un programme demandant à l’utilisateur de saisir une valeur comprise entre 0 et 0.99. Ensuite, affichez le détail des pièces à utiliser pour constituer la somme saisie avec un nombre minimal de pièces.

Exercice 17 Modification du dernier bit

Modifiez le dernier bit d’une variable a saisie par l’utilisateur.

Exercice 18 Associativité de l’addition flottante

L’ensemble des flottants n’est pas associatif, cela signifie qu’il existe trois flottants a, b et c, tels que (a + b) + ca + (b + c). Trouvez de tels flottants et vérifiez-le dans un programme.

Exercice 19 Permutation sans variable temporaire

Permutez deux variables a et b sans utiliser de variables temporaires.