Tous les corrigés sont compilés avec Visual C++ et non pas Borland C++
Les spécifications de format ne sont pas présentes, ou sont réduite à la seule indication du type de la variable dont on veut afficher la valeur.
Écrire le programme qui affiche sur la console le message suivant :
Premier exercice.
#include <stdio.h>
void main()
{
printf("Premier exercice\n");
}
La chaine passée en argument est simplement recopiée sur la console. Cela donne (compilateur : Visual C++) :
Premier exercice Press any key to continue
Écrire le programme qui affiche sur la console le message suivant :
Premier exercice.
Le taux de reussite est de 24%
Le retour a la ligne est represente par \n
#include <stdio.h>
void main()
{
printf("Premier exercice.\n");
printf("Le taux de reussite est de 24%%\n");
printf("Le retour a la ligne est represente par \\n\n");
}
Il faut prendre des précautions particulières lorsque l'on souhaite afficher un des caractères qui ont une signification particulière dans la chaîne de format :
le caractère barre oblique inverse (\) annonce un caractère spécial, tel que le retour à la ligne, la tabulation, etc et est associé à au moins un autre caractère comme dans \n. Il est donc représenté, si on veut l'afficher par \\. De même le caractère % a une signification particulière : il annonce un identificateur de format. Il est donc représenté par %%.
Cela donne à l'exécution :
Premier exercice. Le taux de reussite est de 24% Le retour a la ligne est represente par \n Press any key to continue
Voici le programme qui suit pas à pas les spécifications de l'énoncé :
#include <stdio.h>
void main()
{
char c1='a',c2='k',c3='w';
short petitCourt=3,court=150,grandCourt=23784,courtNegatif=-2753;
int petitEntier=3,entier=150,grandEntier=785824,entierNegatif=-7842;
float petitFlottant=5e-5f,flottant=18.68725f,grandFlottant=-8796782;
double petitDouble=5e-5,Double=18.68725,grandDouble=-879678248386;
char texte[]="Exercice";
printf("Caractere c1 avec %%f :\t%f\n",c1);
printf("Caractere c1 avec %%d :\t%d\n",c1);
printf("Caractere c1 avec %%c :\t%c\n",c1);
printf("\n");
printf("les 3 dans le meme printf :\t%f\t%d\t%c\n",c1,c1,c1);
printf("\n");
printf("short petitCourt avec %%c :\t%c\n",petitCourt);
printf("short court avec %%c :\t%c\n",court);
printf("short petitCourt avec %%d :\t%d\n",petitCourt);
printf("short grandCourt avec %%d :\t%d\n",grandCourt);
printf("short grandCourt avec %%hd :\t%hd\n",grandCourt);
printf("short grandCourt avec %%f :\t%f\n",grandCourt);
printf("short grandCourt avec %%lf :\t%lf\n",grandCourt);
printf("\n");
printf("int entierNegatif avec %%d :\t%d\n",entierNegatif);
printf("int entierNegatif avec %%u :\t%u\n",entierNegatif);
printf("int grandEntier avec %%d :\t%d\n",grandEntier);
printf("int grandEntier avec %%f :\t%f\n",grandEntier);
printf("\n");
printf("float flottant avec %%c :\t%c\n",flottant);
printf("float flottant avec %%d :\t%d\n",flottant);
printf("float flottant avec %%f :\t%f\n",flottant);
printf("\n");
printf("les 3 dans le meme printf :\t%c\t%d\t%f\n",flottant,flottant,flottant);
printf("\n");
printf("double Double avec %%d :\t%d\n",Double);
printf("double Double avec %%f :\t%f\n",Double);
printf("double Double avec %%lf :\t%lf\n",Double);
printf("\n");
printf("les 3 dans le meme printf :\t%d\t%f\t%lf\n",Double,Double,Double);
printf("\n");
printf("double petitDouble avec %%f:\t%lf\n",petitDouble);
printf("double petitDouble avec %%e:\t%e\n",petitDouble);
printf("double petitDouble avec %%g:\t%g\n",petitDouble);
printf("double Double avec %%g :\t%g\n",Double);
printf("\n");
printf("chaine texte avec %%s :\t%s\n",texte);
printf("chaine texte avec %%c :\t%c\n",texte);
printf("\n");
printf("ad double &Double avec %%d :\t%d\n",&Double);
printf("ad double &Double avec %%p :\t%p\n",&Double);
}
Voici le résultat de son exécution :
Caractere c1 avec %f : -0.000000 Caractere c1 avec %d : 97 Caractere c1 avec %c : a les 3 dans le meme printf : 0.000000 97 ö short petitCourt avec %c : ? short court avec %c : û short petitCourt avec %d : 3 short grandCourt avec %d : 23784 short grandCourt avec %hd : 23784 short grandCourt avec %f : -0.000000 short grandCourt avec %lf : -0.000000 int entierNegatif avec %d : -7842 int entierNegatif avec %u : 4294959454 int grandEntier avec %d : 785824 int grandEntier avec %f : -0.000000 float flottant avec %c : float flottant avec %d : -1610612736 float flottant avec %f : 18.687250 les 3 dans le meme printf : 1077063663 18.687250 double Double avec %d : -1649267442 double Double avec %f : 18.687250 double Double avec %lf : 18.687250 les 3 dans le meme printf : -1649267442 -0.000000 -0.000000 double petitDouble avec %f: 0.000050 double petitDouble avec %e: 5.000000e-005 double petitDouble avec %g: 5e-005 double Double avec %g : 18.6872 chaine texte avec %s : Exercice chaine texte avec %c : $ ad double &Double avec %d : 1244984 ad double &Double avec %p : 0012FF38 Press any key to continue
Quelques commentaires :
Voici le programme qui utilise quelques mises en forme de l'affichage :
#include <stdio.h>
void main()
{
char c1='a',c2='k',c3='w';
short petitCourt=3,court=150,grandCourt=23784,courtNegatif=-2753;
int petitEntier=3,entier=150,grandEntier=785824,entierNegatif=-7842;
float petitFlottant=5e-5f,flottant=18.68725f,grandFlottant=-8796782;
double petitDouble=5e-5,Double=18.68725,grandDouble=-879678248386;
char texte[]="Exercice";
printf("Caracteres c1,c2,c3 avec %%10c : %10c%10c%10c\n",c1,c2,c3);
printf("Caracteres c1,c2,c3 avec %%10.5c : %10.5c%10.5c%10.5c\n",c1,c2,c3);
printf("Chaine texte avec %%3s : %3s\n",texte);
printf("Les 3 short avec %%10hd : %10hd%10hd%10hd\n",
petitCourt,court,grandCourt);
printf("Les 3 short avec %%hd : %hd%hd%hd\n",
petitCourt,court,grandCourt);
printf("Les 3 short avec %%hd et espaces : %hd %hd %hd\n",
petitCourt,court,grandCourt);
printf("Les 3 short avec %%hd et tabulations: %hd\t%hd\t%hd\n",
petitCourt,court,grandCourt);
printf("Les 3 double avec %%10.5f : %10.5f%10.5f%10.5f\n",
petitDouble,Double,grandDouble);
printf("Les 3 double avec %%10.5g : %10.5g%10.5g%10.5g\n",
petitDouble,Double,grandDouble);
printf("Les 3 double avec %%10.5e : %10.5e%10.5e%10.5e\n",
petitDouble,Double,grandDouble);
printf("Les 3 double avec %%10.1e : %10.1e%10.1e%10.1e\n",
petitDouble,Double,grandDouble);
printf("Les 3 double avec %%10f : %10f%10f%10f\n",
petitDouble,Double,grandDouble);
printf("Les 3 double avec %%10g : %10g%10g%10g\n",
petitDouble,Double,grandDouble);
}
Ce programme donne à l'exécution :
Caracteres c1,c2,c3 avec %10c : a k w Caracteres c1,c2,c3 avec %10.5c : a k w Chaine texte avec %3s : Exercice Les 3 short avec %10hd : 3 150 23784 Les 3 short avec %hd : 315023784 Les 3 short avec %hd et espaces : 3 150 23784 Les 3 short avec %hd et tabulations: 3 150 23784 Les 3 double avec %10.5f : 0.00005 18.68725-879678248386.00000 Les 3 double avec %10.5g : 5e-005 18.687-8.7968e+011 Les 3 double avec %10.5e : 5.00000e-0051.86872e+001-8.79678e+011 Les 3 double avec %10.1e : 5.0e-005 1.9e+001 -8.8e+011 Les 3 double avec %10f : 0.000050 18.687250-879678248386.000000 Les 3 double avec %10g : 5e-005 18.6872-8.79678e+011 Press any key to continue
On voit ainsi quelques possibilités permises par la fonction printf