Vous êtes sur la page 1sur 21

Instructions élémentaires

Exercice 1 :
Écrire un programme C qui permet d’afficher un message de bienvenue
(utilisation de puts et printf ainsi que le saut de ligne \n)

#include<stdio.h>
main()
{
puts ("Bonjour\n");
}

#include<stdio.h>
main()
{
printf("Bonjour\n");
}

Exercice 2 :
Écrire un programme C qui permet de lire un entier et d’afficher sa valeur

# include <stdio.h>
main ()
{
int valeur;
printf ("Donner un entier ");
scanf("%d", &valeur);
printf("l'entier saisi est %d", valeur);
}
Exercice 3 :
Écrire un programme C qui permet de lire un entier et d’afficher son incrément
(introduction de la notion i=i+1 et i++)
# include <stdio.h>
main ()
{
int i,j,k;
i= 0
j= i++;
k= ++i;
printf ("i = %d\n", i);
printf ("j = %d\n", j);
printf ("k = %d\n", k);
printf ("***********************\n");
j= i++;
k= ++i;
printf ("i = %d\n", i);
printf ("j = %d\n", j);
printf ("k = %d\n", k);
}

Exercice 4 :
Écrire un programme C qui permet de calculer l’aire d’un cercle (2 solutions
soit avec pi=3.14 ou en déclarant pi comme étant une constante)

# include <stdio.h>
main ()
{
float pi = 3.14;
float rayon, aire;
printf ("Donner le rayon du cercle ");
scanf("%f", &rayon);
aire= rayon * rayon * pi;
printf("aire = %f", aire);
}

# include <stdio.h>
main ()
{
#define pi 3.14 //déclaration d'une constante
float rayon, aire;
printf ("Donner le rayon du cercle ");
scanf("%f", &rayon);
aire= rayon * rayon * pi;
printf("aire = %f", aire);
}

Exercice 5 :
Écrire un programme C qui permet de calculer la racine carrée d’un entier x (on
suppose que x>0)

# include <stdio.h>
#include <math.h>
main ()
{
int val;
float rac;
printf ("Donner un entier positif ");
scanf("%d", &val);
rac = sqrt (val);
printf("la racine carree de %d est = %f", val,
rac);

Exercice 6 :
Écrire un programme C qui permet de résoudre l’équation « ax+b=0 »

# include <stdio.h>
main ()
{
float a,b,c;
printf ("Donne r la valeur de a ");
scanf ("%f", &a);
printf ("Donne r la valeur de b ");
scanf ("%f", &b);
c = -b/a;
printf ("La solution de l'équation est: %f", c);
}
Exercice 7 :
Écrire un programme C qui permet de lire deux nombres réels, et d’afficher
ensuite leur produit, avec une précision de trois chiffres après la virgule.

#include<stdio.h>
main()
{
float x,y,p;
printf("Entrez deux reels:\n");
scanf("%f%f",&x,&y);
p=x*y;
printf("le produit de %f et %f est: %.3f\
n",x,y,p);
}
Remarque :
%d ou%i permettent de référencer un int

#include <stdio.h>
main()
{
int a, b;
printf("Introduisez deux nombres entiers :");
scanf("%i %i", &a, &b);
if ((a>0 && b>0) || (a<0 && b<0))
printf("Le signe du produit %i * %i est positif\
n", a, b);
else if ((a<0 && b>0) || (a>0 && b<0))
printf("Le signe du produit %i * %i est négatif\
n", a, b);
else
printf("Le produit %i * %i est nul\n", a, b);
}

Exercice 8 :
Écrire un programme langage C qui lit une lettre et détermine s’il s’agit d’une
voyelle ou d’une consonne.

#include <stdio.h>
main()
{
char c;
printf("Entrer un caractère: \n");
scanf("%c", &c);

if(c == 'a' || c == 'e' || c == 'i' || c ==


'o' || c == 'u' || c == 'y' ||
c == 'A' || c == 'E' || c == 'I' || c == 'O'
|| c == 'U' || c == 'Y') {
printf("\n %c est une voyelle.", c);
}
else {
printf("\n %c est une consonne.", c);
}
}
Instructions itératives et tableaux

Exercice 1:
Écrire un programme C qui permet d’afficher les entiers compris entre 1 et 10

#include<stdio.h>
main()
{
int i;
for (i=1;i<10;i++) printf("%d\
t",i);
}

#include<stdio.h>
main()
{
int i=1;
while (i<10)
{
printf("%d\t", i);
i++;
}
}

Exercice 2 :
Écrire un programme C qui permet de remplir un tableau composé de 10 cases
de valeurs entières strictement positives. On désire, par la suite, afficher la
valeur minimale ainsi que la valeur maximale.

#include<stdio.h>
main()
{
int i;
int t[10];
int min = 32767;
int max = 0;

for (i=0;i<10;i++) //remplissage


{
do
{
printf ("donner l'element %d: ", i);
scanf ("%d", &t[i]);
}
while (t[i]<0);
}

for (i=0;i<10;i++)
{
if (t[i]<min)
min = t[i];
if (t[i]>max)
max = t[i];
}
printf ("min = %d \n", min);
printf ("max = %d ", max);
}

Exercice 3 :
Écrire un programme C qui permet d’affiche r le nème terme de la suite de
Fibonacci. L’utilisateur doit donc saisir n sachant que la valeur de la suite se
calcule comme suit :
F(0) = 1
F(1) = 1
F(n) = F (n-1) + F (n–2) avec n>=2

#include<stdio.h>
main()
{
int n,i,A,B,C;
printf("Entrez un entier:\n");
scanf("%d",&n);
A=1;
B=1;
for(i=2;i<=n;i++)
{
C=B+A;
A=B;
B=C;
}
if(n<=1) printf("U(%d) = 1.\n",n);
else printf("U(%d) = %d.\n",n,C);
}

Exercice 4 :
Écrire un programme C qui lit un entier puis affiche tous les nombres premiers
qui lui sont inférieurs.
#include<stdio.h>
main()
{
int n,i,p,ok;
printf("Donnez un entier:\n");
scanf("%d",&n);
printf("Les nombres premiers inferieurs a %d
sont:\n",n);
for(p=2;p<=n;p++)
{
ok=1;
for(i=2;i<p;i++)
{
if(p%i==0) {ok=0; break; }
}
if(ok==1) printf("%d\n",p);
}
}
Exercice 5 :
Écrire un programme C qui définit un nombre magique (un nombre secret), et lit des
entiers à l’entrée jusqu’à ce que l’utilisateur trouve ce nombre. En lui indiquant à
chaque fois s’il est en dessus ou au-dessous du nombre magique.

#include<stdio.h>
main()
{
int mag,a;
mag=12; //choix
printf("Tentez votre chance:\n");
do{
scanf("%d",&a);
if(a<mag) printf("Pas encore! essayez un
nombre plus grand.\n");
if(a>mag) printf("Pas encore! essayez un
nombre plus petit.\n");
if(a==mag) printf("Bravo! vous avez trouve le
nombre magique.\n");
}while(a!=mag);
}

Exercice 6:
Écrire un programme C qui crée et initialise un tableau, puis invite l’utilisateur à
supprimer un élément de ce tableau à une position spécifiée (de 0 à N-1).

→ Pour supprimer un élément du tableau, déplacer les éléments juste après la


position donnée vers une position à gauche et réduire la taille du tableau.

#include <stdio.h>
#define TAILLE_MAX 1000 // La taille maximale
main()
{
int tab[TAILLE_MAX];
int i, N, pos;
/* Saisir la taille actuelle du tableau < TAILLE_MAX
*/

printf("Saisir le nombre d'éléments : ");


scanf("%d", &N);
/* Saisir les éléments du tableau tab */
for(i=0; i<N; i++)
{
printf("Elément %d", i+1);
scanf("%d", &tab[i]);
}
/* Position de l'élément à supprimer */
printf("Saisir la position de l'élément à supprimer :
");
scanf("%d", &pos);
/* Position de suppression non valide */
if(pos < 0 || pos > N)
{
printf("Position invalide! Veuillez saisir une
position entre1 et %d", N);
}
else
{
/* Copier la valeur de l'élément suivant dans
l'élément
actuel */
for(i=pos-1; i<N-1; i++)
{
tab[i] = tab[i + 1];
}
/* Décrémenter N par 1 */
N--;
}
/* Afficher le tableau après suppression */
for(i=0; i<N; i++)
{
printf("%d\t", tab[i]);
}
}

Exercice 7:
Écrire un programme C qui crée et initialise un tableau, puis afficher tous les
éléments uniques de ce tableau.

Astuce :
Utiliser un tableau de fréquences

#include <stdio.h>
#define TAILLE_MAX 1000 // La taille maximale
int main()
{
int tab[TAILLE_MAX], freq[TAILLE_MAX];
int N, i, j, count;
/* Saisir la taille actuelle du tableau < TAILLE_MAX
*/
printf("Saisir le nombre d'éléments : ");
scanf("%d", &N);
/* Saisir les éléments du tableau tab */
for(i=0; i<N; i++)
{
printf("Elément %d ", i+1);
scanf("%d", &tab[i]);
freq[i] = 1;
}
/* Trouver la fréquence de chaque élément */
for(i=0; i<N; i++)
{
int cpt = 1;
for(j=i+1; j<N; j++)
{
/* Si un élément en double est trouvé */
if((i!=j) && (tab[i]==tab[j]))
{
cpt++;
/* Make sure not to count frequency of same element
again */
freq[j] = 0;
}
}
freq[i] = cpt;
}
/* afficher tous les éléments uniques du tableau */
for(i=0; i<N; i++)
{
if(freq[i] == 1)
{
printf("%d ", tab[i]);
}
}
}
Les structures

Exercice 1 :
Écrire un programme C qui définit une structure point qui contiendra les deux
coordonnées d’un point du plan. Puis lit deux points et affiche la distance entre
ces deux derniers.
#include<stdio.h>
struct point{
float x;
float y;
};
main()
{
struct point A,B;
float dist;
printf("Entrez les coordonnées du point A:\
n");
scanf("%f%f",&A.x,&A.y);
printf("Entrez les coordonnées du point B:\
n");
scanf("%f%f",&B.x,&B.y);
dist = sqrt( (A.x-B.x)*(A.x-B.x) + (A.y-
B.y)*(A.y-B.y) );
printf("La distance entre les points A et B
est: %.2f\n",dist);
}

Exercice 2:
Écrire un programme C qui permet de définir un type structure appelé point
composé de :
• un nom
• une abscisse
• une ordonnée
Créer, ensuite un tableau appelé ligne contenant les coordonnées des 10 points.
Afficher ensuite chacun de ces points

#include <stdio.h>
main()
{
struct point
{ char nom ;
float x ;
float y ;
} ;
struct point p[5] ;
int i ;
for (i=0;i<5;i++)
{ printf ("donnez le nom et les coordonnees du point
%d\n", i+1) ;
scanf (" %c%f%f",&p[i].nom, &p[i].x,
&p[i].y) ; /* notez l'espace avant %c */
}
printf ("voici les differents points fournis\n") ;
for (i=0 ; i<5 ; i++)
printf ("%c\t%f\t%f\n", p[i].nom,p[i].x, p[i].y) ;
}

Exercice 3 :
Écrire un programme C qui définit une structure etudiant où un étudiant est
représenté par son nom, son prénom et une note. Lit ensuite une liste d’étudiants
entrée par l’utilisateur et affiche les noms de tous les étudiants ayant une note
supérieure ou égale à 10 sur 20.

#include<stdio.h>
struct etudiant{
char nom[20];
char prenom[20];
int note;
};
main()
{
struct etudiant t[100];
int n,i;
printf("Donner le nombre d'etudiants:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("donnez le nom, prenom et la note de
l'etudiant %d:\n",i+1);
scanf("%s%s
%d",&t[i].nom,&t[i].prenom,&t[i].note);
}
for(i=0;i<n;i++)
{
if(t[i].note>=10)
printf("%s %s\n",t[i].nom,t[i].prenom);
}
}

Exercice 4 :
Écrire un programme C, qui lit les noms complets des étudiants et leurs moyennes
dans un tableau de structures. Puis actualise ces moyennes en ajoutant un bonus de :
o 1 point pour les étudiants ayant une note strictement inférieure à 10 ;
o 0.5 point pour les étudiants ayant une note entre 10 et 15 incluses.
N.B.: la structure doit avoir deux éléments: une chaîne de caractères et un réel.
#include<stdio.h>
#include<stdlib.h>
struct Etudiant{
char nom[20];
float note;
};
main()
{
struct Etudiant t[100];
int n,i;
printf("Donnez le nombre d'etudiants:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Entrez le nom complet de l'etudiant N
%d:\t",i+1);
scanf("%s",&t[i].nom);
printf("Entrez la note de %s:\t",t[i].nom);
scanf("%f",&t[i].note);
}
printf("\nLes notes avant l'ajout du bonus:\n");
for(i=0;i<n;i++)
printf("%s : %.2f\n",t[i].nom,t[i].note);
for(i=0;i<n;i++)
{
if(t[i].note >= 10 && t[i].note <= 15)
t[i].note+=0.5;
if(t[i].note < 10) t[i].note+=1;
}
printf("\nLes notes apres l'ajout du bonus:\n");
for(i=0;i<n;i++)
printf("%s : %.2f\n",t[i].nom,t[i].note);
}

Exercice 5 :
Écrire un programme C, qui lit le nom, le prénom et l’âge de plusieurs personne dans
un tableau de structures, puis insère une nouvelle personne dans une position entrée
par l’utilisateur.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Personne{
char nom[20];
char prenom[20];
int age;
};
main()
{

struct Personne t[100];


int n,i,k;
printf("Donnez le nombre de personnes a lire:\
n");

scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Entrez le nom de la personne N%d:\
t",i+1);
scanf("%s",t[i].nom);
printf("Entrez le prenom de cette personne:\
t");
scanf("%s",t[i].prenom);
printf("Entrez son age:\t");
scanf("%d",&t[i].age);
}

printf("\nLe tabeau avant l'insertion:\n");


for(i=0;i<n;i++)
printf("L'age de %s %s est: %d ans.\
n",t[i].nom,t[i].prenom,t[i].age);
printf("\nDonnez la position d'insertion
souhaitee:\n");
scanf("%d",&k);
n++;
for(i=n-1;i>k;i--)
{
strcpy(t[i].nom, t[i-1].nom);
strcpy(t[i].prenom, t[i-1].prenom);
t[i].age = t[i-1].age;
}
printf("\nEntrez le nom de la personne a inserer:\
t");
scanf("%s",t[k].nom);
printf("Entrez la prenom de cette personne:\
t",t[i].nom);
scanf("%s",t[k].prenom);
printf("Entrez son age:\t",t[i].nom);
scanf("%d",&t[k].age);
printf("\nLe tableau apres l'insertion:\n");
for(i=0;i<n;i++)
printf("L'age de %s %s est: %d ans.\
n",t[i].nom,t[i].prenom,t[i].age);
}

Vous aimerez peut-être aussi