1.
(*3) Soit le code suivant :
int i ; for (i=0 ; i<10 ; i++) { printf("i = %d\n", i) ; }
Réécrivez-le en utilisant une instruction while.
Réponse :
int i = 0 ; while (i<10) { printf("i = %d\n", i) ; i++ ; }
2.
Soit la déclaration suivante, int *tab[10]. Indiquez ce qu’est tab ?
Réponse : tab est un tableau de 10 pointeurs d’entiers.
18. Dans le code suivant :
int i=0, j=0 ; j = i++ ;
Que vaut la variable j après l’instruction d’affectation ?
Réponse : j vaudra 0.
L’expression i++ se lit de gauche à droite : d’abord, le retour de sa valeur, qui sera stockée dans j, puis l’incrémentation de i. Ainsi, j vaudra 0.
3.
(*2) Donnez l’expression C permettant de calculer i = i 2n.
Réponse : L’expression est i «= n.
Multiplier par 2 consiste « à ajouter un zéro à droite » (poids faible), donc décaler la valeur de 1 vers la gauche. Multiplier par 2n, consiste ainsi à décaler la valeur de n vers la gauche. En C, l’opérateur de décalage vers la gauche est «.
L’expression est donc : i «= n.
Note. Les calculs effectués avec une boucle ont été considérés comme corrects.
4.
(*3) Soit le code suivant :
char tab[] = "bonjour" ; int i ; for (i=0 ; tab[i] != ’’ ; i++) { tab[i] = tab[i] - ’a’ + ’A’ ; }
Que fait ce programme ?
Proposez une version sans utiliser l’opérateur d’accès tableau ([]).
Réponse : Ce programme transforme la chaine de caractères « bonjour » en majuscules.
char tab[] = "bonjour", pc ; for (pc = tab ; pc != ’’ ; pc++) { *pc = pc - ’a’ + ’A’ }