• Aucun résultat trouvé

TD n°1 de langage C : scalaires, fonctions, pointeurs

N/A
N/A
Protected

Academic year: 2022

Partager "TD n°1 de langage C : scalaires, fonctions, pointeurs"

Copied!
1
0
0

Texte intégral

(1)

TD n°1 de langage C : scalaires, fonctions, pointeurs

Exercice 1 (acquisition)

Réalisez une fonction void abs(int* p) qui remplace la valeur de la variable pointée par p par sa valeur absolue.

Exercice 2 (acquisition)

Réalisez une fonction void hms(int t) qui affiche à l'écran la durée t, exprimée en secondes, sous la forme heure, minutes, secondes.

Par exemple hms(3662) doit afficher 1h 1m 3s.

Exercice 5 (consolidation)

Modifiez la fonction f de l'exercice 3 de manière à ce que la fonction fpn du même exercice permette de calculer 2 à la puissance x, pour toute valeur positive ou nulle de x.

Indiquer les paramètres à transmettre à fpn pour permettre ce calcul et donner en exemple un programme qui calcul et affiche 2 à la puissance 5.

Exercice 6 (consolidation)

On suppose qu'on dispose d'une fonction int isPrime(int x) qui teste si x est un nombre premier. Cette fonction retourne une valeur Booléenne.

Réalisez une fonction void fact(int n) qui affiche la décomposition de l'entier n en facteurs premiers, c'est à dire sous la forme d'un produit de nombres premiers.

Par exemple, fact(44) doit afficher 2 * 2

* 11.

Vous devez faire tous les exercices d'acquisition. Lorsque ces exercices sont maîtrisés (si applicable), vous pouvez tenter de faire un ou plusieurs exercices de consolidation. Choisissez les exercices qui présentent pour vous une difficulté raisonnable et qui sont donc susceptibles de vous faire progresser.

En cas de difficulté, demandez un indice ou une explication à l'enseignant.

Exercice 3 (acquisition)

Soient les 2 fonctions suivantes :

Quelle est la valeur retournée par fpn(3,2) ?

int f(int x) {

return x*x;

}

int fpn(int n, int x) {

if(n==0) return x;

else return f(fpn(n-1,x));

}

Exercice 4 (acquisition)

Soient les initialisations suivantes :

Dessinez la représentation en mémoire des variables x, y, p1 et p2, avec les lien entre variables pointeurs et valeurs pointées.

Donnez les valeurs des variables x et y après l'exécution du code suivant :

int x=1, y=1;

int* p1 = &x ; int* p2 = &y ;

(*p1)++; *p2 = *p1; (*p2)++;

Exercice 7 (consolidation)

On souhaite utiliser une variable de type int comme une pile de bits.

Réalisez une fonction void push(int* p, int b) qui empile dans la variable poin- tée par p le bit 0 si b vaut 0 et le bit 1 sinon.

Réalisez une fonction int pop(int* p) qui retourne la valeur du dernier bit empilé.

Indice : Multiplier un entier par deux revient à décaler vers la gauche tous les bits de sa représentation en base 2. La division par deux réalise un décalage vers la droite.

Le bit le plus à droite représente le dernier bit empilé.

Références

Documents relatifs

2/ déterminer le domaine de continuité

L'ordre des exercices ne correspond à aucun critère de diculté ou de longueur : vous pouvez les traiter dans l'ordre que vous voulez.. Veillez à soigner la copie tant pour

Déterminer une expression simpliée de f(x) sur une période (Il n'est pas dit que cette expression simpliée est la même sur toute la période).. On veut obtenir le même résultat par

La solution de cette équation est appelée racine de la fonction.. 7/ Dresser le tableau de signe

[r]

[r]

TS 8 Interrogation 3A 4 octobre 2017 R´epondre aux questions sur la feuille... TS 8 Interrogation 3B 4 octobre 2017 R´epondre aux questions sur

En déduire l’alignement des points I, K et F et préciser la position de K sur la droite (