IUT-UMLV :: DUT - INFO :: 1ère Année (2012-2013) Programmation en Langage C :: Corrigé du TD N 3 =================================================================================================== Fonctions ne renvoyant pas de valeur ========================================== Exercice 1. (Table de multiplication) void Multiples(int n); int j; for (j=1; j<=10; j++) { Multiples(j); printf("\n"); void Multiples(int n) { for (i=0; i<10; i++) printf("%3d ", n*i); Exercice 2. (Test de primalité) void AffichePremier(int n); int test; scanf("%d", &test); if (test < 0) printf("%d est un numbre negatif. (il faut un numbre positif).\n", test); while (test < 0); AffichePremier(test); void AffichePremier(int n) { if (n == 1 n == 0) if (estpremier) printf("\n%d est un nombre premier.\n\n", n); else printf("\n%d n'est pas un nombre premier.\n\n", n);
Fonctions renvoyant une valeur ========================================== Exercice 1. (Test de primalité) void DeuxPremiers(int, int); int n1, n2; scanf("%d%d", &n1, &n2); if (n1 < 0 n2 < 0) printf("(n1= %d, n2= %d) - Il faut entrer deux numbres positifs).\n", n1, n2); while (n1 < 0 n2 < 0); DeuxPremiers(n1, n2); void DeuxPremiers(int n, int m) { if (EstPremier(n) && EstPremier(m)) printf("\nles deux nombres sont premiers.\n\n"); else if (!EstPremier(n) &&!EstPremier(m)) printf("\naucun des nombres n est premier.\n\n"); else printf("\nun seul nombre est premier.\n\n"); if (n == 1 n == 0)
Exercice 2. (Nombre premier supérieur un entier n) int PremierSuperieur(int n); while (n < 0); printf("le premier nombre premier superieur ou egal a %d est %d\n", n, PremierSuperieur(n)); int PremierSuperieur(int n) { for (;!EstPremier(n); n++); return (n); if (n == 1 n == 0)
Exercice 3. (Liste des nombres premiers) void PremiersPremiers(int n); while (n < 0); PremiersPremiers(n); void PremiersPremiers(int n) { printf("\nles nombres premiers inferieurs a %d: ", n); for (i = 2; i < n; i++) if (EstPremier(i)) printf("%d ", i); printf("\n\n"); if (n == 1 n == 0)
Exercice 4. (Nombres premiers jumeaux) void Jumeaux(int n); while (n < 0); Jumeaux(n); void Jumeaux(int n) { if (n <= 4) printf("pas de couples..\n"); else { printf("\nles couples de nombres premiers jumeaux inferieurs a %d: \n", n); for (i = 2; i < n; i++) if (EstPremier(i) && EstPremier(i+2)) printf("(%d, %d)\n", i, i+2); if (n == 1 n == 0)
Exercice 5. (Décomposition en facteurs premiers) void Decomposition(int n); while (n < 0); Decomposition(n); void Decomposition(int n) { int divisor=2, power=0, flag=0; printf("\nla decomposition en facteurs premiers de %d = ", n); while (n >= divisor) { if (n % divisor == 0) { power += 1; n = n / divisor; flag = 1; else { if (flag) printf("%d^%d * ", divisor, power); divisor++; power=0; flag = 0; if (flag) printf("%d^%d", divisor, power); printf("\n\n"); if (n == 1 n == 0)
Exercice 6. (Papier, caillou, ciseaux) int LireInf2(void); int arbitre(void); int j1=0, j2=0; for ( i = 0 ; i < 10 ; i++ ) switch (arbitre()) { case 1: j1++; case 2: j2++; default: printf("\nscores :\n\tjoueur 1: %d\n\tjoueur 2: %d\n\n",j1, j2); int LireInf2(void) { printf("entrez votre pari (0, 1, ou, 2): "); scanf("%d",&i); if (i < 0 i > 2) printf("\nil faut entrer 0, 1, ou 2!!!\n\n"); while (i < 0 i > 2); return i; int arbitre(void) { int J1, J2; printf("codification :\n\tcaillou = 0\n\tpapier = 1\n\tciseau = 2\n"); printf("pari du joueur 1 :"); J1 = LireInf2(); printf("pari du joueur 2 :"); J2 = LireInf2(); if (J1==J2) if (J1==((J2+1)%3)) return 1; return 2;