« Exercices en langage C/Structures de contrôle » : différence entre les versions

Contenu supprimé Contenu ajouté
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
Ligne 6 :
 
Soit le programme suivant :
<sourcesyntaxhighlight lang="c">
#include <stdio.h>
#include <stdlib.h>
Ligne 20 :
return EXIT_SUCCESS;
}
</syntaxhighlight>
</source>
Qu'est ce qui sera affiché à l'écran lors de l'exécution de ce programme ?
 
Même question pour le programme :
<sourcesyntaxhighlight lang="c">
#include <stdio.h>
#include <stdlib.h>
Ligne 38 :
return EXIT_SUCCESS;
}
</syntaxhighlight>
</source>
 
{{Boîte déroulante|titre=Solution|contenu=
Ligne 52 :
</pre>
qui s'affiche car :
<sourcesyntaxhighlight lang="c">
int i=18;
i=i-(--i);
</syntaxhighlight>
</source>
est la même chose que :
<sourcesyntaxhighlight lang="c">
int i=18;
i--; // i passe à 17
i=i-(i); // 17-17 donne 0
</syntaxhighlight>
</source>
Remarquons que
<sourcesyntaxhighlight lang="c">
int i=18;
i=i-(i--);
</syntaxhighlight>
</source>
donnerait exactement le même résultat (dans le switch).
 
La suppression des break a des conséquences importantes. Par exemple
<sourcesyntaxhighlight lang="c">
#include <stdio.h>
#include <stdlib.h>
Ligne 83 :
return EXIT_SUCCESS;
}
</sourcesyntaxhighlight>
afficherait :
<pre>
Ligne 99 :
{{Boîte déroulante|titre=Solution|contenu=
Cet exercice n'est qu'un échauffement pour l'exercice suivant.
<sourcesyntaxhighlight lang="c">
/******* langage C *********/
if (i==19)
Ligne 105 :
else
printf("Rejet");
</syntaxhighlight>
</source>
L'erreur la plus fréquente est d'écrire :
<sourcesyntaxhighlight lang="c">
/******* langage C *********/
if (i=19)
Ligne 113 :
else
printf("Rejet");
</syntaxhighlight>
</source>
qui affichera toujours OK quelle que soit la valeur de i ! Pouvez-vous comprendre pourquoi ?
Parce que i=19 met 19 dans i qui n'est pas zéro et donc est vrai... et toujours vrai !!!
Ligne 126 :
<div style="width:70%">{{Boîte déroulante|titre=Solution|contenu =
 
<sourcesyntaxhighlight lang="c">
/*
Nom : testage.c
Ligne 187 :
return codeRetour;
} // int main(...
</syntaxhighlight>
</source>
}} </div>
 
Ligne 194 :
Cet exercice d'analyse doit être réalisé sans compilateur, à la main à l'aide d'un crayon et d'une feuille de papier.
Soit le programme suivant :
<sourcesyntaxhighlight lang="c">
#include <stdio.h>
#include <stdlib.h>
Ligne 204 :
return EXIT_SUCCESS;
}
</syntaxhighlight>
</source>
Qu'affichera à l'écran l'exécution de ce programme ?
{{Boîte déroulante|titre=solution|contenu=
Ligne 221 :
 
Soit le programme suivant :
<sourcesyntaxhighlight lang="c">
#include <stdio.h>
#include <stdlib.h>
Ligne 234 :
return EXIT_SUCCESS;
}
</syntaxhighlight>
</source>
Qu'affichera à l'écran l'exécution de ce programme ?
 
Ligne 247 :
</pre>
<u>'''Remarque'''</u> : Il est possible de remplacer :
<sourcesyntaxhighlight lang="c">
//********** Langage C ***************
unsigned char tab[5];
Ligne 253 :
tab[0]=1;tab[1]=2;tab[2]=4;tab[3]=8;tab[4]=16;
//**********Fin Langage C ***************
</syntaxhighlight>
</source>
par
<sourcesyntaxhighlight lang="c">
//********** Langage C ***************
//déclaration du tableau avec initialisation
unsigned char tab[5]={1,2,4,8,16};
//**********Fin Langage C ***************
</syntaxhighlight>
</source>
Voir même par :
<sourcesyntaxhighlight lang="c">
//********** Langage C ***************
//déclaration du tableau avec initialisation
unsigned char tab[10]={1,2,4,8,16};
//**********Fin Langage C ***************
</syntaxhighlight>
</source>
pour lequel on déclare un tableu de 10 case mais on en initialise que 5 ! Les autres seront initialisées à 0 !
}}
Ligne 275 :
 
<div style="width:70%">{{Boîte déroulante|titre=Solution|contenu =
<sourcesyntaxhighlight lang="c">
/*
Programme : somme
Ligne 311 :
return EXIT_SUCCESS;
} // int main(...
</syntaxhighlight>
</source>
 
'''Remarques qualité sur la correction proposée''' :
Ligne 327 :
 
*Soit le programme suivant :
<sourcesyntaxhighlight lang="c">
#include <stdio.h> // pour printf
#include <stdlib.h> // pour system
Ligne 340 :
return EXIT_SUCCESS;
}
</syntaxhighlight>
</source>
Que sera-t-il affiché à l'écran lors d'une exécution de ce programme ?
* Même question pour le programme suivant :
<sourcesyntaxhighlight lang="c">
#include <stdio.h> // pour printf
#include <stdlib.h> // pour system
Ligne 356 :
return EXIT_SUCCESS;
}
</syntaxhighlight>
</source>
 
{{Boîte déroulante|titre=solution|contenu=
Ligne 394 :
* 2ème version : avec une seule boucle ''for'' et un tableau de chaîne de caractère où vous accumulerez des étoiles.
 
<sourcesyntaxhighlight lang="c">
/*
Nom : etoile.c
Ligne 436 :
return codeRetour;
} // int main(...
</syntaxhighlight>
</source>
 
<div style="width:70%">{{Boîte déroulante|titre=Solution|contenu =
Ligne 442 :
'''1ère version''' : sans utiliser de tableau à l'aide de deux boucles ''for'' imbriquées.
 
<sourcesyntaxhighlight lang="c">
/*
Nom ... : afficherTriangle
Ligne 461 :
}
} // static void afficherTriangle(...
</syntaxhighlight>
</source>
 
'''Remarque''' :
Ligne 471 :
'''2ème version''' : avec une seule boucle ''for'' et un tableau de chaîne de caractère où vous accumulerez des étoiles.
 
<sourcesyntaxhighlight lang="c">
/*
Nom ... : afficherTriangle
Ligne 493 :
}
} // static void afficherTriangle(...
</syntaxhighlight>
</source>
 
'''Remarque''' :