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