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
