Langage C.:: Révision ::. 1 Déclarations de fonctions...1 Déclarations de variables...1 Appels de fonctions...2 Formats...2 Boucles...2 Instructions conditionnelles...4 Trouvez les erreurs...5 Résultats de fonctions...5 Déclarations de fonctions Soit le prototype de la fonction f1 suivant : char f1(char *c, float b, int d[]); Cochez les affirmations justes : 1. la fonction f1 reçoit trois arguments respectivement de type caractère, de type nombre flottant, de type nombre entier et retourne un caractère. 2. la fonction f1 reçoit deux arguments respectivement de type caractère, de type nombre flottant et retourne un tableau d'entiers. 3. la fonction f1 reçoit trois arguments respectivement de type chaîne de caractère, de type nombre flottant, de type tableau d'entiers et retourne un caractère. 4. la fonction f1 reçoit un argument de type caractère et retourne une chaîne de caractère, un nombre flottant et un tableau entier. 5. la fonction f1 reçoit trois arguments respectivement de type pointeur sur un caractère, de type nombre flottant, de type tableau d'entiers et retourne un caractère. 6. la fonction f1 reçoit un argument de type caractère et retourne un caractère, un nombre flottant et un entier. 7. la fonction f1 ne retourne rien. Déclarations de variables Parmi les déclarations suivantes, lesquelles sont syntaxiquement correctes : 1. int i, int k ; 2. float f, g, h ; 3. unsigned float u ; 4. short int s = 0, d ; 5. long float l ; 6. long char c ;
On souhaite enregistrer dans un tableau les altitudes (en mètres) auxquelles culminent les principaux monts d'un pays. Quel est le type le plus approprié, c'est-à-dire permettant d'enregistrer l'information souhaitée en perdant le moins de place. Nous rappelons que le mont Everest culmine à 8848 mètres. 1. int altitude[] ; 2. short int altitude[] ; 3. float altitude[] ; 4. unsigned int altitude[] ; 5. unsigned short int altitude[] ; 6. unsigned float altitude[] ; 2 Appels de fonctions Soit le prototype de la fonction f3 suivant : int f3(char *c, float d); Cochez les appels de cette fonction qui ne produisent pas d erreur 1. char b ; int c ; c=f3(&b,3.5) ; 2. char b ; int c ; c=f3(&c,3.5) ; 3. char b ; float d=3.2 ; int c ; c=f3('a',d) ; 4. char b ; float d=3.2 ; int c ; c=f3(&b,d) ; Formats Parmi les instructions suivantes, lesquelles sont correctes 1. printf("sur %d ans, au taux %.2f, la plus-value est %3f", 12, 0.75, 250*1.12/13) ; 2. printf("la %dième lettre de l'alphabet est %f\n", 3, 'c') ; 3. printf("%d carottes et %d choux font... une bonne soupe!\n", 12, 3, 4) ; 4. printf("%f fois rien, c'est mieux que %d %c\n", 3, 0, 'F') ; 5. printf("%c %i %s\n", 'g', 6%4, "amours") ; Boucles Parmi les programmes suivants, lesquels affichent toutes les lettres minuscules de l'alphabet (dans l'ordre) sur une ligne? Nous rappelons que 0x61 correspond au code ASCII du caractère 'a'. 1. Première solution : char b; for (b='a';b<='z';b++) printf("%c",b); 2. Deuxième solution : char b; for (b='a';b<='z';b++) printf("%d",b); 3. Troisième solution :
4. Quatrième solution : char b=0x61; while (b<='z') { printf("%c",b); b++; char b=0x61; while (b<='z') printf("%c",b); b++; Vinci 3 On souhaite écrire une fonction moyenne qui prend en paramètre un tableau d'entiers tab de taille taille et qui retourne la moyenne des valeurs du tableau. Le prototype de la fonction moyenne est le suivant : float moyenne(float tab[], int taille) Parmi les blocs d'instructions suivants, lesquels conviennent pour la fonction moyenne? 1. Première solution : for(i=0;i<=taille;i++) { somme = somme+tab[i]; 2. Deuxième solution : float somme = 0.0, i = 0; while (i<taille) { somme = somme+tab[i]; 3. Troisième solution : int i = 0; while (i<taille) { somme + =tab[i]; 4. Quatrième solution : somme += tab[i];
5. Cinquième solution : 6. Sixième solution : 7. Septième solution : somme+=tab[i]; int i = 0; do { somme+=tab[i]; while (i<taille); float somme; somme += tab[i]; 4 Instructions conditionnelles Soit le programme suivant : #include<stdio.h> int f6(int T[], int taille) { int max=t[0]; int imax=0; for (i=1;i<taille;i++) { if (T[i] > max) { imax=i; max=t[i]; return imax; int T[6]={0,1,7,3,4,5; printf("%d\n",t[f6(t,6)]); Que retourne la fonction f6? 1. La valeur maximum contenue dans le tableau T. 2. La valeur minimum contenue dans le tableau T. 3. L'indice de la case qui suit la première valeur maximum du tableau. 4. L'indice de la première case contenant une valeur maximum du tableau. 5. Le nombre d'éléments du tableau.
6. Le nombre d'éléments supérieurs à zéro contenus dans le tableau. Qu'affiche ce programme? 1 2 3 4 6 7 8 9 rien 5 Trouvez les erreurs On suppose qu'il existe une fonction moyenne qui retourne la moyenne des valeurs d'un tableau de flottants : /* Moyenne retourne la moyenne des valeurs du tableau "tab" de taille "taille" */ float moyenne(float tab[], int taille) {... Nous voudrions écrire un programme qui affiche toutes les notes supérieures à la moyenne. Le programme suivant contient des erreurs. Cochez uniquement les lignes contenant une erreur : 1. #include <stdio.h>; 2. int main(void) { 3. float tab [7] = {12.5, 14.0, 16.5, 9.0, 11.5, 13.0, 8.5; 4. int m; 5. for(i=0;i<7;i++) { 6. m=moyenne(tab); 7. if (m<tab[i]) { 8. printf("%d\n",tab[i]); 9. 10. 11. return 0; 12. Résultats de fonctions Considérons la fonctions suivante : int recherche(int tab[], int taille, int valeur) { if ((taille<1) (tab[0]!=0)) { return -1; if (tab[i] == valeur) { return i; if (i= =7) {
return -5; return 0; Supposons que l'on a déclare les variables suivantes : int tableau1[6] = {0,1,2,3,4,5; int tableau2[10] = {0,0,0,0,0,1,1,1,1,1; int tableau3[10] = {1,-1,2,-2,3,-3,4,-4,5,-5; Quel est le résultat de l'appel recherche(tableau1,4,4)? -5-1 4 Quel est le résultat de l'appel recherche(tableau2,10,1)? -5-1 1 Quel est le résultat de l'appel recherche(tableau3,10,5) (une seule réponse possible)? -5-1 8 6