Instructions en C - Applications résolues
1)Écrire un programme pour effectuer des opérations arithmétiques souhaités (+,-,/,*).
#include<stdio.h> void main() { int a,b; printf("Entrer a: "); scanf("%d", &a); printf("Entrer b: "); scanf("%d", &b); char x; getchar(); printf("Entrez l'opération souhaitée (+ - * /): "); scanf("%c", &x); switch(x) { case '+': printf("a+b= %d", a+b); break; case '-': printf("a-b= %d", a-b); break; case '/': printf("a/b=%.2f",a/(float)b); break; case '*': printf("a*b= %d", a*b); break; default: printf("Operation inconnue"); } getchar(); int k; scanf("%d", k); }
2) Ecrire un programme qui calcule la somme des n premiers nombres naturels avec for.
#include<stdio.h> void main() { int n,s=0; printf("Entrer n:"); scanf("%d",&n); for(int i=1;i<=n;i++) s+=i; //s=s+i; printf("La somme des premiers %d nombres naturels est: %d\n",n,s); getchar(); int k; scanf("%d", k); }
3) Ecrire un programme qui calcule la somme des n premiers nombres naturels avec while.
#include<stdio.h> void main() { int n, s=0, i=1; printf("Entrer n:"); scanf("%d",&n); while(i<=n) { s+=i; //s=s+i; i++; } printf("La somme des premiers %d nombres naturels est: %d\n",n,s); getchar(); int k; scanf("%d", k); }
4) Ecrire un programme qui calcule la somme des n premiers nombres naturels avec do while.
#include<stdio.h> void main() { int n, s=0, i=1; printf("Entrer n:"); scanf("%d",&n); do { s+=i; //s=s+i; i++; } while(i<=n) printf("La somme des premiers %d nombres naturels est: %d\n",n,s); getchar(); int k; scanf("%d", k); }
5) Ecrire un programme pour résoudre l'équation de degré II.
#include <stdio.h> #include <math.h> void main (void) { int a,b,c; float x1,x2,d; printf("Entrez les coefficients de l'équation.\n"); printf("\ta="); scanf("%d",&a); printf("\tb="); scanf("%d",&b); printf("\tc="); scanf("%d",&c); if(!a) //a==0 if(!b) if(!c) printf("L'équation a une infinité de solutions."); else printf("L'équation n'a pas de solution."); else { x1=-c/(float)b; printf("Solution de l'équation est: %.2f.",x1); } else x1=-c/(float)b; printf("Solution de l'équation est: %.2f.",x1); { d=b*b-4*a*c; if(d<0) printf("L'équation n'a pas de solutions réelles."); else { x1=(-b-sqrt(d))/2*a; printf("Les solutions sont:\n\tx1 este: %.2f\n",x1); x2=(-b+sqrt(d))/2*a; printf("\tx2 est: %.2f\n",x2); } } getchar(); int k; scanf("%d", k); }
6) Ecrire un programme qui calcule la valeur de l'expression: S=1-2+3-4+....+, en utilisant les fonctions propres.
#include <stdio.h> int somme1(int n) // avec l'instruction FOR { int s=0, i=1, sign=1; for(; i<=n; i++) { s+=sign*i; //s=s+sign*i sign=-sign; } return s; } int somme2(int n) // avec l'instruction WHILE { int s=0, i=1, sign=1; while (i<=n) { s+=sign*i; //s=s+sign*i sign=-sign; i++; } return s; } int somme3(int n) // avec l'instruction DO WHILE { int s=0, i=1, sign=1; do { s+=sign*i; //s=s+sign*i sign=-sign; i++; } while (i<=n); return s; } void main() { int n; printf("Entrer n:"); scanf("%d", &n); printf("\n\tLa somme calculée avec FOR a la valeur: %d" , somme1(n)); printf("\n\tLa somme calculée avec WHILE a la valeur: %d" , somme2(n)); printf("\n\tLa somme calculée avec DO WHILE a la valeur: %d" , somme3(n)); getchar(); int k; scanf("%d", k); }
7) Écrire un programme qui calcule la valeur de l'expression: P=1*2*3*4*...*n.
#include<stdio.h> int produit1(int n) // avec l'instruction FOR { int P=1; for(int i=1; i<=n; i++) P=P*i; return P; } int produit2(int n) // avec l'instruction WHILE { int P=1; int i=1; while(i<=n) { P=P*i; i++; } return P; } int produit3(int n) // avec l'instruction DO WHILE { int P=1; int i=1; do{ P=P*i; i++; } while(i<=n); return P; } void main() { int n; printf("Input n: "); scanf("%d", &n); printf("\n\tLe produit calculé avec FOR a la valeur: %d.\n" , produit1(n)); printf("\n\tLe produit calculé avec WHILE a la valeur: %d.\n" , produit2(n)); printf("\n\tLe produit calculé avec DO WHILE a la valeur: %d.\n" , produit3(n)); getchar(); int k; scanf("%d", k); }
8) Ecrivez un programme qui calcule la valeur de l'expression: P=1*(1/2)*3*(1/4)*5*(1/6)*...n.
#include<stdio.h> #include<math.h> float produit1(int n) //avec l’instruction FOR { float p=1; float z=1; for(int i=1; i<=n; i++) { if (!(i%2)) /*on pourrait ecrire encore if(i%2==0) <=> tester si il est impaire*/ { z=1/(float)i; p=p*z; } else p=p*i; //pour impaire } return p; } float produit2(int n) //avec l’instruction WHILE { float p=1; float z=1; int i=1; while(i<=n) { if (!(i%2)) /*on pourrait ecrire encore if(i%2==0) <=> tester si il est impaire*/ { z=1/(float)i; p=p*z; } else p=p*i; //pour impaire i++; } return p; } float produit3(int n) //avec l’instruction WHILE { float p=1; float z=1; int i=1; do { if (!(i%2)) /*on pourrait ecrire encore if(i%2==0) <=> testes s’il est paire*/ { z=1/(float)i; p=p*z; } else p=p*i; //pour impaire i++; } while(i<=n); return p; } void main() { int n; printf("Entrer n: "); scanf("%d", &n); printf("\nLe produit avec FOR est: %.5f\n", produit1(n)); printf("\nLe produit avec WHILE est: %.5f\n", produit2(n)); printf("\nLe produit avec DO WHILE est: %.5f\n", produit3(n)); getchar(); int k; scanf("%d", k); }
9) Écrire un programme qui calcule la valeur de l'expression: S=1+1*2+1*2*3+1*2*3*4+1*2*3*4*5+...+1*2*...*n.
#include<stdio.h> void main() { int n; int s=0; int p=1; printf("Entrer n:"); scanf("%d", &n); for(int i=1; i<=n; i++) { p=p*i; s=s+p; } printf("Le resultat est: %d", s); getchar(); int k; scanf("%d", k); }
10) Écrivez un programme qui calcule x à la puissance y (en utilisant la fonction pow).
#include <math.h> #include<stdio.h> void main() { double x, y, z; printf("\nEntrer le coefficient: "); scanf("%lf", &x); printf("\n vous avez entré x= %.2lf", x); printf("\n\nEntrer le pouvoir: "); scanf("%lf", &y); printf("\n vous avez entré y= %.2lf", y); z=pow(x,y); printf("\n\n\%.2lf^%.2lf= %.2lf", x,y,z); getchar(); int k; scanf("%d", k); }
11) On lit un texte composé de mots qui peuvent être séparés par des espaces ou des virgules.
Texte lu à point final ou d'entrer. Pour compter les voyelles et les consonnes de ce texte.
#include<stdio.h> void main() { int v=0; int c=0; printf("Entrer le texte: "); char k; k=getchar(); /* lisez un caractère, qui sera le premier texte qui sera envoyé aux variables k*/ while(k!='.' && k!='\n') { if (k!=',' && k!=' ') switch (k) { case 'a': case 'A': case 'e': case 'E': case 'i': case 'I': case 'o': case 'O': case 'u': case 'U': v++; break; default: c++; } k=getchar(); //le caractère suivant du texte sera envoyé à la variable k } printf("Le nombre des voyalles est: %u\n",v); printf("Le nombre desw consonnes est: %u\n",c); getchar(); int z; scanf("%d", z); }
12) On lit un texte composé de mots qui peuvent être séparés par des espaces ou des virgules.
Texte lu à point final ou d'entrer. À compter les voyelles et les consonnes de ce texte.
Résoudre le problème en utilisant une boucle répétitive postérieure conditionnelle.
#include<stdio.h> void main() { int v=0; int c=0; printf("Entrer le texte: "); char k; do { k=getchar(); if (k!=',' && k!=' ' && k!='\n' && k!='.') switch (k) { case 'a': case 'A': case 'e': case 'E': case 'i': case 'I': case 'o': case 'O': case 'u': case 'U': v++; break; default: c++; } } while(k!='.' && k!='\n'); printf("Le nombre des voyelles est %u\n",v); printf("Le nombre des consonnes est %u\n",c); getchar(); int z; scanf("%d", z); }
13) À compter le nombre de voyelles et de consonnes de l'alphabet, en utilisant l'instruction de saut "goto".
#include<stdio.h> void main() { int v=0; int c=0; char lettre='A'; etiquette: switch (lettre) { case 'A': case 'E': case 'I': case 'O': case 'U': v++; break; default: c++; } lettre++; if(lettre<='Z') goto etiquette; printf("Le nombre des voyelles est %d\n",v); printf("Le nombre des consonnes est %d\n",c); getchar(); int var; scanf("%d", var); }
14) À afficher d'alphabet entier, seules grosses lettres, jusqu'à 'M'.
La boucle se termine délibérément à l'aide de l'instruction break.
#include<stdio.h> void main() { for(char lettre='A'; lettre<='Z'; lettre++) { if(lettre=='M') break; printf("%c", lettre); } getchar(); int var; scanf("%d", var); }
15) De convertir un nombre de base 10 en base p, 2<=p<=10.
/* Nous partageons séquence x (nombre donné) à p, en retenant les ciffres de la base p dans un nombre xpi, qui sera renversé, pour obtenir le nombre xp, vu comme la representation dans la base p du x. Pour ne pas avoir des problemes au cas que la premiere ciffre du xpi sera 0, nous employons une incrementation avec 1 des ciffres dans la transformation x->xpi, soit un décrément pour la transformation xpi->xp. */ #include<stdio.h> void main () { int x,xpi,xp,p; printf ("Entrer x en base 10:"); scanf ("%d",&x); printf("Entrer la nouvelle base p:"); scanf("%d",&p); //un autre moyen d’ecrire une instruction for for (xpi=0; x; xpi=10*xpi+x%p+1,x=x/p); for (xp=0; xpi; xp=10*xp+(xpi-1)%10,xpi=xpi/10); printf("Le numdero en base %d est:%d",p,xp); getchar(); int var; scanf("%d", var); } /* Remarque, dans cet exemple, l’utilisation de l'opérateur "," dans l’instruction for. Par exemple, le premier for c’est: - on initialise xpi avec 0; - combine de temps x est different de 0 on execute: - xpi devient 10*xpi+x%p+1 - x se divise à p (et on fait la conversion).*/
16) Réaliser un programme qui dans une boucle while calculi la somme des ciffres d’un nombre introduit du clavier et affiche son inverse.
#include<stdio.h> #include<math.h> void main() { int nr; int s=0; //la somme des ciffres int inv=0; //l’inverse du nombre printf("Entrer le nombre: "); scanf("%d",&nr); while (nr) //sau while(n!=0) { s=s+nr%10; inv=inv*10+nr%10; nr/=10; } /* l’instruction répétitive ci-dessus l’on pourrait écrire de façon: while(ninv*=10,ninv+=n%10,s+=n%10,n/=10); */ printf("La somme est: %d",s); printf("\nL’inverse est: %d",inv); getchar(); int var; scanf("&d", var); }
17) Etant donné trois nombres entiers pour déterminer si elles peuvent être les mesures d'un triangle, et si oui, calculer le périmètre.
#include<stdio.h> int triangle(int a,int b,int c) { if((a>0)&&(b>0)&&(c>0)&&(a<b+c)&&(b<a+c)&&(c<a+b)) return 1; else return 0; } void main() { int a,b,c,s=0; printf("a= ");scanf("%d",&a); printf("b= ");scanf("%d",&b); printf("c= ");scanf("%d",&c); if(triunghi(a,b,c)==1) { s=a+b+c; printf("le périmètre ABC est: %d",s); } else printf("Ce n’est pas triangle"); getchar(); int var; scanf("&d", var); }
18) Calculez la valeur de la function f définie sur l'ensemble des nombres réels pour un x lu:
| x-3, ptr. x<5 F=| x+1, ptr. 5>x>25 | x-5x+6,ptr. x>25
#include<stdio.h> void main() { int x; printf("Entrer le nombre: "); scanf("%d",&x); if(x>=5&&x<=25) printf("F(x)= %d",x+1); else { if(x<5) printf("F(x)= %d",x-3); else printf("F(x)= %d",x-5*x+6); } getchar(); int var; scanf("&d", var); }
19) Affichez la somme des ciffres d’un nombre naturel donné.
Precision: On detache chaque ciffre de la fin du nombre en calculant le resultat de la division du numero en 10; le numero qui reste après la separation de la ciffre est le resultat de la division à 10.
#include<stdio.h> void main() { int n,s=0; printf("n= ");scanf("%d",&n); while(n!=0) { s=s+n%10; n=n/10; } printf("La somme des ciffres est: %d",s); getchar(); int var; scanf("&d", var); }
20) Calculez la somme S=1!+2!+3!+...+n!
#include<stdio.h> int factoriel(int n) { int p=1; for(int i=1;i<=n;i++) p*=i; return p; } void main() { int m,i,s=0; printf("\n\tEntrer le nombre: ");scanf("%d",&m); for(i=1;i<=m;i++) s=s+factoriel(i); printf("\tLa somme est: %d",s); getchar(); int var; scanf("&d", var); }
21) Calculez le produit P=2*4*6*8*10*...*n, où n=2k.
#include<stdio.h> void main() { int n,i,p=1; printf("Entrer le nombre: "); scanf("%d",&n); n=n*2; for(i=2;i<=n;i++) { if (!(i%2)) /*on pourrait ecrire aussi if(i%2==0) <=> tester s’il est paire*/ p*=i; } printf("Le produit est: %d",p); getchar(); int var; scanf("&d", var); }
22) Calculez la somme S=1^2+2^2+3^2+4^2+...+n^2.
#include<stdio.h> void main() { int n,s=0,i; printf("n= "); scanf("%d",&n); for(i=1;i<=n;i++) s=s+i*i; printf("La somme est egale avec: %d",s); getchar(); int var; scanf("&d", var); }
23) Calculez la somme S=1-1*2+1*2*3-...±1*2*3*...*n.
#include<stdio.h> int factoriel(int n) { int p=1; for(int i=1;i<=n;i++) p*=i; return p;} void main() { int n,i,s=0,sign=1; printf("n= ");scanf("%d",&n); for(i=1;i<=n;i++) { s=s+sign*factoriel(i); sign=-1; } printf("La somme est egale avec: %d",s); getchar(); int var; scanf("&d", var); }
24) Transformez un nombre de la base 10 dans la base p<10.
#include<stdio.h> void main() { int n,m,p,y=0,c; printf("Le nombre dans la base 10 est: ");scanf("%d",&n); printf("La base pour convertir est: ");scanf("%d",&p); while(n!=0) { c=n%p; y=y*10+c; n=n/p; } printf("Le numero dans la base %d est: %d",p,y); getchar(); int var; scanf("&d", var); }