Série 3 Exercices Langage C
Série 3 Exercices Langage
C
Exercice1
Ecrire un programme en langage C qui lit un verbe
régulier en "er" au clavier et qui en affiche la conjugaison au
présent de l'indicatif de ce verbe. Contrôlez s'il s'agit bien d'un verbe en
"er" avant de conjuguer. Utiliser les fonctions gets, puts,strcat et strlen.
Exercice2
Écrire les déclarations d'une variable
"unEtud" de type "Etudiant" pour la gestion de ses notes.
Exercice3
Écrire un programme permettant de saisir un
entier positif et d'afficher la somme des chiffres du nombre lu. Le calcul de cette somme se fait de 2 manières
différentes :
1. avec 1 fonction récursive
2. avec une fonction
"itérative"
Exercice4
Écrire une fonction et deux appels de cette
fonction pour afficher à l'écran :
- la taille moyenne
- le poids moyen
des personnes d'une liste linéaire des personnes.
Exercice5
Écrire une fonction permettant de créer un
fichier binaire des personnes à partir
d'une liste linéaire des personnes.
Exercice6
Ecrire un
programme en langage C qui demande l'introduction du nom et du prénom
de l'utilisateur et qui affiche alors la longueur totale du nom sans compter
les espaces. Employer la fonction strlen.
Correction
Exercice1
#include
<stdio.h>
#include
<string.h>
main()
{
/*
Déclarations */
char
VERB[20]; /* chaîne contenant le verbe */
char
AFFI[30]; /* chaîne pour l'affichage */
int
L; /* longueur de la
chaîne */
/* Saisie
des données */
printf("Verbe
: ");
gets(VERB);
/*
Contrôler s'il s'agit d'un verbe en 'er' */
L=strlen(VERB);
if
((VERB[L-2]!='e') || (VERB[L-1]!='r'))
puts("\aCe
n'est pas un verbe du premier groupe.!");
else
{
/* Couper
la terminaison 'er'. */
VERB[L-2]='\0';
/*
Conjuguer ... */
AFFI[0]='\0';
strcat(AFFI,
"je ");
strcat(AFFI,
VERB);
strcat(AFFI,
"e");
puts(AFFI);
. . .
AFFI[0]='\0';
strcat(AFFI,
"ils ");
strcat(AFFI,
VERB);
strcat(AFFI,
"ent");
puts(AFFI);
}
return 0;
}
|
Exercice2
#define LONG_NP 30
/* 30 caractères pour le nom et le prénom */
#define
NB_NOTES 7 /*
7 notes */
#define LONG_CODE 2
/* 2 caractères pour le code
littéral "B+" ...*/
typedef
struct
{ char
nomPre [LONG_NP +1] ;
int numIns ;
float
note[NB_NOTES] ;
char code[LONG_CODE+1] ;
}
Etudiant ;
Etudiant unEtud ;
|
Exercice3
#include <stdio.h>
/* fonction récursive */
int somChif ( int n )
{
if ( n < 10 )
return n ;
else
return (n % 10) + somChif (n /
10) ;
}
/* processus itératif (avec
boucle, ici while) */
int Somme2 (int n )
{ int somChiffres = 0 ;
while ( n )
{ somChiffres += n % 10 ;
n /= 10;
}
return somChiffres;
}
void main()
{ int valeur
;
printf("Entrez un entier
positif ");
scanf("%d",
&valeur);
printf("\n %d (avec la
récursivité)\n", somChif(valeur));
printf("\n %d (sans
récursivité)\n", somme2(valeur));
}
|
Exercice4
float moyenne ( Pointeur liste,
char codeVoulu )
{ float somme = 0.0 ;
int n
= 0 ;
while (liste)
{ n++ ;
if (codeVoulu == 'T')
somme += liste->pers.taille
;
else
somme +=
liste->pers.poids ;
liste = liste->suivant ;
}
return
somme / n ;
}
Appels :
printf("La taille moyenne
: %6.2f mètre\n", moyenne(liste, 'T'));
printf("Le poids moyen
: %6.2f kgs\n", moyenne(liste, 'P'));
|
Exercice5
void creer (char * nomACreer,
Pointeur liste)
{
FILE *
aCreer = fopen(nomACreer, "wb");
int nbOctets =
sizeof(personne);
while (liste)
{
fwrite(&(liste->pers),
nbOctets, 1, aCreer);
liste = liste->suivant;
}
fclose(aCreer);
}
Appel :
Creer
("personne.Bin", liste);
|
Exercice6
#include
<stdio.h>
#include
<string.h>
main()
{
char
NOM[40], PRENOM[40];
printf("Introduisez
votre nom et votre prénom: \n");
scanf("%s
%s", NOM, PRENOM);
printf("\nBonjour
%s %s !\n", NOM, PRENOM);
printf("Votre
nom est composé de %d lettres.\n",
strlen(NOM)
+ strlen(PRENOM));
/* ou bien
printf("Votre
nom est composé de %d lettres.\n",
strlen(strcat(NOM,PRENOM)));
*/
return 0;
}
|