Question 1 : Analyse du programme
Le programme donné est le suivant :
int main()
{
int n=10, p=5, q=10, r ;
r = n == (p = q) ;
printf("A : n = %d p=%d q=%d r=%d\n", n, p, q, r);
n = p = q = 5 ;
n += p += q ; r=n<<2 ;
printf("B : n = %d p=%d q=%d r=%d\n", n, p, q, r);
q = n < p ? n++ : p++ ; r=100<<4 ;
printf("C : n = %d p=%d q=%d r=%d\n", n, p, q, r);
q = n > p ? n++ : p++ ; r=12 & 4 ;
printf("D : n = %d p=%d q=%d r=%d\n", n, p, q, r);
return 0 ;
}
Correction :
- Partie A :
A : n = 10 p=10 q=10 r=1
- Partie B :
B : n = 15 p=10 q=5 r=60
- Partie C :
C : n = 15 p=11 q=10 r=1600
- Partie D :
D : n = 16 p=11 q=15 r=4
Question 2 : Calcul de factorielle
Version avec while
:
#include <stdio.h>
int main() {
int n, i = 1;
long factorial = 1;
printf("Entrez un entier : ");
scanf("%d", &n);
while (i <= n) {
factorial *= i;
i++;
}
printf("Factorielle de %d est %ld\n", n, factorial);
return 0;
}
Version avec do...while
:
#include <stdio.h>
int main() {
int n, i = 1;
long factorial = 1;
printf("Entrez un entier : ");
scanf("%d", &n);
do {
factorial *= i;
i++;
} while (i <= n);
printf("Factorielle de %d est %ld\n", n, factorial);
return 0;
}
Exercice : Gestion d'une boutique
1. Structures de données :
typedef struct {
char code[10];
char libelle[50];
float prixUnitaire;
int quantiteStock;
int quantiteSeuil;
} Article;
typedef struct {
Article articles[1000];
int nombreArticles;
} Boutique;
2. Programme pour lire et afficher les articles :
#include <stdio.h>
Stéphane, [09/02/2025 19:24]
int main() {
Boutique boutique;
int n, i;
printf("Entrez le nombre d'articles : ");
scanf("%d", &n);
boutique.nombreArticles = n;
for (i = 0; i < n; i++) {
printf("Article %d :\n", i + 1);
printf("Code : "); scanf("%s", boutique.articles[i].code);
printf("Libelle : "); scanf("%s", boutique.articles[i].libelle);
printf("Prix unitaire : "); scanf("%f", &boutique.articles[i].prixUnitaire);
printf("Quantite en stock : "); scanf("%d", &boutique.articles[i].quantiteStock);
printf("Quantite seuil : "); scanf("%d", &boutique.articles[i].quantiteSeuil);
}
for (i = 0; i < n; i++) {
printf("Article %d : Code=%s, Libelle=%s, Prix=%.2f, Stock=%d, Seuil=%d\n",
i + 1, boutique.articles[i].code, boutique.articles[i].libelle,
boutique.articles[i].prixUnitaire, boutique.articles[i].quantiteStock,
boutique.articles[i].quantiteSeuil);
}
return 0;
}
3. Programme pour afficher l'article le plus cher :
#include <stdio.h>
int main() {
Boutique boutique;
int i, maxIndex = 0;
float maxPrix = 0;
for (i = 0; i < boutique.nombreArticles; i++) {
if (boutique.articles[i].prixUnitaire > maxPrix) {
maxPrix = boutique.articles[i].prixUnitaire;
maxIndex = i;
}
}
printf("Article le plus cher : Code=%s, Libelle=%s, Prix=%.2f\n",
boutique.articles[maxIndex].code, boutique.articles[maxIndex].libelle,
boutique.articles[maxIndex].prixUnitaire);
return 0;
}
4. Programme pour afficher les articles en dessous du seuil :
#include <stdio.h>
int main() {
Boutique boutique;
int i;
for (i = 0; i < boutique.nombreArticles; i++) {
if (boutique.articles[i].quantiteStock < boutique.articles[i].quantiteSeuil) {
printf("Code=%s, Libelle=%s\n", boutique.articles[i].code, boutique.articles[i].libelle);
}
}
return 0;
}
5. Programme pour calculer le capital de la boutique :
#include <stdio.h>
int main() {
Boutique boutique;
int i;
float capital = 0;
for (i = 0; i < boutique.nombreArticles; i++) {
capital += boutique.articles[i].prixUnitaire * boutique.articles[i].quantiteStock;
}
printf("Capital de la boutique : %.2f\n", capital);
return 0;
}