Cette étude technique se concentre sur la manipulation des types de données de base en C (entiers, caractères, flottants) ainsi que sur l'aplication des opérateurs arithmétiques, logiques et d'affectation.
1. Transformation de caractères par décalage ASCII
L'objectif est de transformer une chaîne de caractères en appliquant un décalage de 4 posisions dans la table ASCII. Pour le mot "China", chaque lettre est stockée individuellement, incrémentée, puis affichée.
#include <stdio.h>
int main() {
char letter1 = 'C', letter2 = 'h', letter3 = 'i', letter4 = 'n', letter5 = 'a';
// Application du décalage de 4
letter1 += 4;
letter2 += 4;
letter3 += 4;
letter4 += 4;
letter5 += 4;
printf("Résultat du codage : %c%c%c%c%c\n", letter1, letter2, letter3, letter4, letter5);
return 0;
}
2. Calcul commercial avec constantes et entrées utiliasteur
Ce programme utilise des constantes symboliques pour définir un prix unitaire et un taux de remise. L'utilisateur saisit une quantité comprise entre 399 et 899 pour calculer le montant total brut et net.
#include <stdio.h>
#define UNIT_PRICE 29.84
#define DISCOUNT_FACTOR 0.75
int main() {
int quantity;
float total_raw, total_discounted;
printf("Veuillez saisir une quantité (entre 399 et 899) : ");
scanf("%d", &quantity);
if (quantity >= 399 && quantity <= 899) {
total_raw = UNIT_PRICE * quantity;
total_discounted = total_raw * DISCOUNT_FACTOR;
printf("Prix total brut : %.2f\n", total_raw);
printf("Prix après remise : %.2f\n", total_discounted);
} else {
printf("Quantité hors limite.\n");
}
return 0;
}
3. Évaluation d'expressions logiques et opérateurs séquentiels
L'exercice suivant analyse le comportement des opérateurs logiques (ET, OU) et de l'opérateur virgule dans des expressions complexes.
#include <stdio.h>
int main() {
int i = 2, j = 3, k = 4;
int res_x, res_y, res_z, res_n, res_m;
res_x = (i + j < k) && i != j;
res_y = (i + j < k) || i != j;
// Utilisation de l'opérateur virgule
res_z = (i + j, j + k); // res_z prend la valeur de la dernière expression
res_n = i / j;
res_m = (i + j, i / j, k % j);
printf("x=%d, y=%d, z=%d, n=%d, m=%d\n", res_x, res_y, res_z, res_n, res_m);
return 0;
}
4. Priorité des opérateurs d'affectation composée
Cet exemple illustre l'ordre d'évaluation lors de l'utilisation d'affectations multiples et composées (+=, -=, *=).
#include <stdio.h>
int main() {
int val_a, val_b, val_c;
// Affectation simple
val_a = (val_b = 4) + (val_c = 6);
printf("Valeur initiale de a : %d\n", val_a);
// Affectations composées successives
// L'évaluation se fait de droite à gauche
val_a += val_a -= val_a * val_a;
printf("Valeur finale de a : %d\n", val_a);
return 0;
}