Exercices corrigés - Python et Langage C - TD3
Exercice 1
Ecrire un programme qui permet de saisir un entier N et d'afficher s'il est premier ou non. Un nombre est dit premier s'il est divisible uniquement par 1 et par lui-même.
Solution :
#include <stdio.h> #include <math.h> int main(void) { int N, vfin; int etat; printf("saisir un nombre - "); scanf("%d", &N); etat = 1; // 1 True ; 0 False vfin = ceil(sqrt(N)) + 1; for (int i = 2; i < vfin; i++) { if (N % i == 0) // si N est divisible par i { etat = 0; break; } } if (etat == 1) { printf("%d est un nombre premier", N); } else { printf("%d n'est pas premier", N); } return 0; }
from math import * N=int(input("saisir un nombre - ")) etat=True for i in range(2,ceil(sqrt(N))+1) : if N%i==0 : etat=False break if etat==True : print(N," est un nombre premier") else : print(N," n est pas premier")
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant
Exercice 2
Ecrire programme permettant de lire un nombre entier N puis calcule son factoriel.
- N !=1*2*3*....*(n-1)*N
- 0 !=1
En utilisant les boucles suivantes
- while
- for
Solution :
// boucle for #include <stdio.h> int main(void) { int N, fact; printf("saisir un nombre - "); scanf("%d", &N); fact = 1; for (int i = 2; i < N + 1; i++) { fact *= i; } printf("le factoriel de %d est %d ", N, fact); return 0; }
// boucle while #include <stdio.h> int main(void) { int N, i, fact; printf("saisir un nombre - "); scanf("%d", &N); fact = 1; i = 2; while (i <= N) { fact *= i; i++; } printf("le factoriel de %d est %d ", N, fact); return 0; }
# boucle for a=int(input("saisir un nombre ")) F=1 for i in range(2,a+1) : F*=i print("le factoriel de ",a," est ",F) # boucle while a=int(input("saisir un nombre ")) F=1 Cpt=2 while Cpt<=a: F*=Cpt Cpt+=1 print("le factoriel de ",a," est ",F)
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant
le factoriel de 5 est 120
Exercice 3
Ecrire un programme qui permet de calculer la moyenne de notes fournies au clavier avec un dialogue de ce type :
- note 1 : 12
- note 2 : 15.25
- note 3 : 13.5
- note 4 : 8.75
- note 5 : -1
- moyenne de ces 4 notes : 12.37
Le nombre des notes n"est pas connu a priori et l"utilisateur peut en fournir autant qu"il le désire. Pour signaler qu"il a terminé, on convient qu"il fournira une note fictive négative. Celle-ci ne devra naturellement pas être prise en compte dans le calcul de la moyenne.
Solution :
#include <stdio.h> int main(void) { int nb = 0; float S, M, note; printf("Note 1 : "); scanf("%f", ¬e); while (note >= 0) { nb += 1; S += note; printf("Note %d : ", nb + 1); scanf("%f", ¬e); } if (nb > 0) { printf("moyenne de ces %d notes : %f", nb, S / nb); } return 0; }
print("Note 1 - ", end=" ") note=float(input()) nb=0 S=0 while note>=0 nb+=1 S=note print("Note ",(nb+1), end=" ") note=float(input()) if nb>0: print("moyenne de ",nb," notes est ",S/nb)
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant
Note 2 : 8
Note 3 : 12
Note 4 : 10
Note 5 : -1
moyenne de ces 4 notes : 10.750000
Exercice 4
Ecrire un programme qui demande à l'utilisateur un nombre compris entre 1 et 3 jusqu'à ce que la réponse convienne.
Solution :
#include <stdio.h> int main(void) { int Nb; printf("Saisir un nombre - "); scanf("%d", &Nb); while (Nb < 1 || Nb > 3) { printf("Saisir un nombre - "); scanf("%d", &Nb); } printf("bravo "); return 0; }
Nb=int(input("saisir un nombre")) while Nb<1 or Nb>3: Nb=int(input("saisir un nombre")) print("bravo ")
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant
Exercice 5
Ecrire un programme qui demande un nombre compris entre 10 et 20, jusqu'à ce que la réponse convienne. En cas de réponse supérieure à 20, on fera apparaître un message : "Plus petit ! ", et inversement, " Plus grand !" si le nombre est inférieur à 10.
Solution :
#include <stdio.h> int main(void) { int Nb; printf("Saisir un nombre - "); scanf("%d", &Nb); while (Nb < 10 || Nb > 20) { if (Nb < 10) printf("plus grand"); else printf("plus petit"); printf(" - Saisir un nombre - "); scanf("%d", &Nb); } printf("bravo "); return 0; }
Nb=int(input("saisir un nombre")) while Nb<10 or Nb>20: if Nb<10: Nb=int(input("plus grand")) else: Nb=int(input("plus petit")) print("bravo ")
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant
plus grand - Saisir un nombre - 30
plus petit - Saisir un nombre - 21
plus petit - Saisir un nombre - 9
plus grand - Saisir un nombre - 10
bravo