TP #3 : Simple C Programs

Exemple de base

Écrire avec l’éditeur de votre choix le programme suivant (appeler le base.c):

#include <stdio.h>

int main ()
{
    printf ("Hello World !\n");
    return 0;
}

Dans un terminal, taper la commande suivante:

gcc base.c

Normalement vous devez obtenir aucun message (cela signifie que tout s’est bien passé), la compilation a généré un programme dont le nom est a.out (il s’agit du nom par défaut). Vous pouvez donc exécuter le programme compilé via la commande qui donne:

Hello World !

À partir de ce premier exemple, un certain nombre de choses sont à retenir. La démarche usuelle est de:

  1. écrire le code C dans un éditeur
  2. le compiler (gcc), s’il y a des erreurs on retourne à l’étape 1
  3. on l’exécute (./a.out)

Manipulations d’affectations

Opérations sur les entiers

  • Soit unsigned int a = 0;. Que vaut a si on la décrémente ?
  • Soit short a = 32766; Que vaut short b = a + 3; ?
  • Soient short b = 30000, c = 30000; Que vaut short d = b * c; ?

Suite d’instructions

Soient trois variables entières x, y, z déclarées et initialisées. Écrire les suites d’instructions pour:

  • Afficher le maximum de xet y
  • Afficher la valeur absolue de z
  • Afficher la parité de l’entier x
  • Afficher le maximum de x, y, z

Soient les variables de type caractère c et d déclarées et initialisées. Écrire les suites d’instructions pour:

  • Déterminer entre c et d quelle est la lettre en premier dans l’alphabet
  • Déterminer si c est en lettre minuscule ou majuscule
  • Transformer c pour obtenir une lettre majuscule (on ne sait pas à priori si elle est minuscule ou majuscule)
  • Déterminer si c est une consonne ou une voyelle

Expressions booléennes classiques

Traduire chacune des expressions suivantes en langage C:

  • x=y=z
  • x,y,z différents deux à deux
  • x<y<=z
  • au moins deux nombres égaux parmi x,y,z
  • exactement deux nombres égaux parmi x,y,z
  • au plus deux nombres égaux parmi x,y,z

Problèmes simples

  • À partir de la date de naissance de deux personnes fournies sous la forme jour, mois, année (où chaque variable est un entier). Déterminer quel est la personne la plus âgée (1 ou 2).
  • À partir d’un entier i représentant une durée, afficher la durée équivalente sous la forme $h:min:sec$. Écrire la réciproque: à partir de 3 variables entières h, m, s determiner la durée équivalente en secondes.

Boucles for

Boucles simples

Écrire les suites d’instructions pour:

  • Afficher les entiers de 1 à 10 séparés par des espaces, puis de 10 à 1.
  • Ajouter les entiers de 1 à 100 puis afficher le résultat
  • Ajouter les entiers pairs de 6 à 2048 puis afficher le résultat.
  • Afficher la liste des multiples de (3 ou 5 ou les deux) inférieurs à 60.

Calcul de puissance

Écrire un algorithme pour le calcul de x^n uniquement avec des multiplications.

Problème

If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 1000. –source Project Euler