Avec des exercices corrigés en langage C, vous pratiquerez divers concepts du langage C. Vous commencerez par des exercices langage C de base à des exercices plus avancés. La solution est fournie pour chaque exercice. Vous devez essayer de résoudre chaque problème par vous-même avant de vérifier la solution. Si vous avez des questions concernant chaque problème, nous vous encourageons à les poster sur notre forum.
Vous pouvez utiliser l’éditeur C suivant pour résoudre les exercices suivants: (Cliquez sur l’onglet input si vous souhaitez entrer des valeurs, cliquez sur Run pour exécuter votre programme, le résultat sera affichée sur l’onglet output).
Exercice 1:
Ecrire un programme C pour vérifier si le nombre entré par l’utilisateur est un entier ou un flottant.
Exemple:
Entrez un nombre: 12.2
Sortie prévue:
Le nombre entré est un nombre flottant
Solution:
#include<stdio.h>
int main()
{
char nbr[10];
int point = 0, i = 0;
printf("Entrez un nombre: ");
scanf("%s", nbr);
// jusqu'à ce que la chaîne n'est pas terminé
while(nbr[i++] != '\0')
{
// le point décimal est présent
if(nbr[i] == '.')
{
point = 1;
break;
}
}
if(point)
printf("Le nombre entré est un nombre flottant");
else
printf("Le nombre entré est un nombre entier");
return 0;
}
Exercice 2:
Ecrire un programme C qui vérifie si un nombre est Armstrong ou non.
Un nombre positif est appelé un nombre d’Armstrong s’il est égal à la somme des cubes de ses chiffres, par exemple 0, 1, 153, 370, 371, 407, etc.
En d’autres termes, l’équation suivante sera vérifiée
xy..z = xn + yn + ….. + zn
n est le nombre de digits
Par exemple, 370 est un nombre d’Armstrong de 3 chiffres
370 = 33 + 73 + 03
= 27 + 343 + 0
= 370
Exemple:
Entrez un entier à trois chiffres: 370
Sortie prévue:
370 est un nombre Armstrong.
Solution:
#include<stdio.h>
int main() {
int originalNbr, nbr, reste, res = 0;
printf("Entrez un entier à trois chiffres: ");
scanf("%d", &nbr);
originalNbr = nbr;
while (originalNbr != 0) {
// le reste contient le dernier chiffre
reste = originalNbr % 10;
res += reste * reste * reste;
// supprimer le dernier chiffre du nombre d'origine
originalNbr /= 10;
}
if (res == nbr)
printf("%d est un nombre Armstrong.", nbr);
else
printf("%d n'est pas un nombre Armstrong.", nbr);
return 0;
}
Exercice 3:
Ecrire un programme C pour inverser un tableau.
Exemple:
Entrez le nombre d'éléments dans le tableau : 3
Entrez les 3 éléments :
1
2
3
Sortie prévue:
Le tableau inversé: 3 2 1
Solution:
#include<stdio.h>
int main()
{
int i, j, n, tab[100], tmp[100];
printf("Entrez le nombre d'éléments dans le tableau : ");
scanf("%d", &n);
printf("Entrez les %d éléments : \n", n);
for(i = 0; i < n; i++)
scanf("%d", &tab[i]);
/*
stocker temporairement les éléments du tableau 'tab'
dans le tableau 'tmp' à partir de la fin du tableau 'tab'
*/
for(i = n-1, j = 0; i >= 0; i--, j++)
tmp[j] = tab[i];
/*
copie le tableau inversé dans le tableau original.
Ici, nous modifions le tableau d'origine pour l'inverser.
*/
for(i = 0; i < n; i++)
tab[i] = tmp[i];
printf("Le tableau inversé: ");
for(i = 0; i < n; i++)
printf("%d ", tab[i]);
return 0;
}
Exercice 4:
Ecrire un programme C qui trouve le max et le min d’un tableau.
Exemple:
Entrez le nombre d'éléments dans le tableau : 5
Entrez les 5 éléments :
2
5
9
7
1
Sortie prévue:
Le max est : 9
Le min est : 1
Solution:
#include<stdio.h>
int main()
{
int tab[20], len, i, max, min;
printf("Entrez le nombre d'éléments dans le tableau : ");
scanf("%d", &len);
printf("Entrez les %d éléments : \n", len);
for(i = 0; i < len; i++)
scanf("%d", &tab[i]);
max = tab[0];
for(i = 1; i < len; i++)
{
if(max < tab[i])
{
max = tab[i];
}
}
printf("Le max est : %d\n", max);
min = tab[0];
for(i = 1; i < len; i++)
{
if(min > tab[i])
{
min = tab[i];
}
}
printf("Le min est : %d", min);
return 0;
}
Exercice 5:
Ecrire un programme C qui supprime les doublons dans un tableau.
Exemple:
Entrez le nombre d'éléments dans le tableau : 6
Entrez les 6 éléments :
1
1
2
2
3
3
Sortie prévue:
Le tableau d'origine est: 1 1 2 2 3 3
Le nouveau tableau est: 1 2 3
Solution:
#include<stdio.h>
void main()
{
int tab[50], i, j, k, size;
printf("Entrez le nombre d'éléments dans le tableau : ");
scanf("%d", &size);
printf("Entrez les %d éléments : \n", size);
for(i = 0; i < size; i++)
{
scanf("%d", &tab[i]);
}
printf("Le tableau d'origine est: ");
for(i = 0; i < size; i++)
{
printf("%d ", tab[i]);
}
printf("\nLe nouveau tableau est: ");
for(i = 0; i < size; i++)
{
for(j = i+1; j < size; )
{
if(tab[j] == tab[i])
{
for(k = j; k < size; k++)
{
tab[k] = tab[k+1];
}
size--;
}
else
{
j++;
}
}
}
for(i = 0; i < size; i++)
{
printf("%d ", tab[i]);
}
}