Nom de famille:____________________ Prénom : _______________________________
Signature: ________________________________________________________________
IFT 1969 – Hiver xxxx
Examen Intra (20 %)
Veuillez fermer, s’il y a lieu, votre cellulaire.
Directives pédagogiques:
Date: xxxx Durée: 2 heures Local : xxxx
Toute documentation sur papier permise.
Ordinateurs personnels prohibés.
Calculatrice permise.
Notes :
- Répondre directement sur ce questionnaire.
- L’examen compte 10 pages incluant celle-ci.
- Utilisez le verso comme brouillon (si nécessaire)
1. Vrai/Faux avec justification (5 x 3 points) : /15 points
2. if vs switch : /15 points
3. Boucles : / 20 points
4. Fichiers + Tableaux à un seul indice et statistiques de base : / 30 points
5. Fonctions avec return et de type void : / 20 points
Total: _________/ 100
Section 1 : Vrai ou Faux (5 questions pour 15 points)
Répondez par Vrai (ou V) si l'énoncé est correct ou par Faux (ou F) si l'énoncé est incorrect. Si votre réponse est Faux et seulement dans ce cas, vous êtes tenu de justifier brièvement en français votre réponse.
1.1) L'exécution des instructions suivantes : int n = 5 ;
switch ( n % 4 ) { case 0 :
case 1 : printf(“Zero, Un”);
case 2 : printf(“Deux”);
default: printf(“Autre”);
}
fait afficher à l’écran : Zero, Un Réponse :
1.2) Les bons paramètres d’une fonction permettent, très souvent, d’appliquer le
même traitement (la même logique) avec des données différentes.
Réponse :
1.3) Avec les déclarations suivantes:
float reel = 12.5;
int entier = 125;
char carac = ‘A’;
l’instruction suivante permet d'afficher correctement les valeurs de ces trois variables:
printf(%c%4d%6.2f\n,reel,entier,carac);
Réponse :
1.4) Après l'exécution des instructions suivantes : int n = 5 ;
if ( n > 10)
n++ ; n += 3 ;
la valeur de n est 8
Réponse :
1.5) On ne peut pas écrire plus courte avec une autre boucle que while, les instructions
suivantes où n est une variable déclarée de type int : n = 0 ;
while ( n <= 10 )
{ printf(“Bonne chance!\n”);
n = n + 2;
} Réponse :
Section 2 : if vs switch (15 points)
Voici une partie d’un programme qui lit un code tapé au clavier par l’usager et initialise les valeurs entières a et b selon ce code.
int code, a, b;
printf("Entrez le code : ");
scanf("%d", &code);
if(code > 0 && code <= 3) { a=1;
b=0;
}
else if(code > 3 && code <= 6) { a=0;
b=1;
}
else if(code ==7 || code == 8) { a=1;
b=1;
} else
{ a=0;
b=0;
}
Ré-écrivez ces instructions en utilisant le switch plutôt que le
if imbriqué
. Réponse :Section 3 : Les boucles (total de 20 points)
3.1 ( 8 points )
Ré-écrivez l’instruction suivante en remplaçant la boucle for par la boucle do … while . . . :
for( i = 0; i< 20; i = i+2) printf("%2d\n", i);
Réponse :
3.2 ( 12 points )
On aimerait déterminer et afficher les diviseurs de 15 selon le modèle suivant :
Les diviseurs de 15 : 1) 1
2) 3 3) 5 4) 15
Écrivez une suite d’instructions (pas un programme complet) y compris les déclarations
pour déterminer et afficher les diviseurs de 15 selon le modèle donné ci- dessus.
Réponse :
Section 4 : Fonctions (total de 20 points )
4.1 ( 10 points )
Soit la fonction suivante :
void afficher( int nombre ) { int s = 0, e = 0 ;
printf("%3d", nombre);
do {
s = s + (nombre % 10);
e = (e * 10) + (nombre % 10);
nombre = nombre / 10;
} while ( nombre > 0 );
printf("%4d%4d\nFin", s, e);
}
Que fait afficher l’appel suivant ? : afficher(27);
Réponse :
4.2 ( 10 points )
Entre 1 et 10 on trouve 6 diviseurs de 30, ce sont 1, 2, 3, 5, 6 et 10.
Entre 1 et 12 on trouve 3 diviseurs de 15, ce sont 1, 3, 5.
a) Complétez la fonction suivante qui permet de compter et de retourner le nombre
de diviseurs du nombre2 entre 1 et le nombre1 : _ _ _ _ _ _ leNombre (int nombre1, int nombre2) {
}
b) Complétez les appels suivants :
printf("Entre 1 et 10 on a %d diviseurs de 30\n",
);
printf("Entre 1 et 49 on a %d diviseurs de 100\n", );
Section 5 : Fichier, Tableaux à un seul indice et statistique de base (total de 30 points )
(vous avez le droit d’utiliser des fonctions mais ce n’est pas du tout une obligation
pour cette section 5).
5.1) Déclarez les tableaux suivants pour un maximum de 300 familles différentes.
un tableau, nommé salaire, capable de mémoriser les salaires familiaux (des réels)
un tableau, nommé nbEnfant, capable de mémoriser le nombre d’enfants (des entiers) un tableau, nommé nbVoiture, capable de mémoriser le nombre de voitures utilisées (des entiers)
Écrivez aussi la déclaration du nombre effectif de familles à traiter : nbFamilles.
Réponse :
5.2) Vous disposez d’un fichier texte appelé "infos_familles.txt". Sur chaque ligne du fichier, on trouve les informations d’une famille :
- Un nombre réel représentant son salaire.
- Un nombre entier représentant le nombre d’enfants.
- Un autre nombre entier représentant le nombre de voitures.
Voici un exemple d’un tel fichier : 35000.0 3 2
58000.5 5 3 22500.5 1 1 16000.0 1 0
a) Écrivez les instructions pour lire le fichier "infos_familles.txt", remplir les tableaux Salaire, nbEnfant et nbVoiture.
Lors de la lecture, vous devez compter le nombre de familles effectives que contient le fichier (La variable nbFamilles décrite plus haut).
b) Écrivez les déclarations et les instructions permettant :
- de calculer et d’afficher le nombre moyen de voitures chez des familles ayant 5 enfants;
- de calculer et d’afficher le nombre moyen de voitures chez des familles ayant 3 enfants.
Réponse :
b) Écrivez les déclarations et les instructions permettant :
- d’afficher les salaires des familles ayant 2 voitures ou plus;
- d’afficher les salaires des familles ayant 4 voitures ou plus.
Réponse :
c) Écrivez les déclarations et les instructions permettant :
- de déterminer et d’afficher le nombre maximum d’enfants dans une famille;
- de déterminer et d’afficher le nombre maximum de voitures dans une famille.
Réponse :