Vous êtes sur la page 1sur 3

Programmation en langage C Faculté des Sciences

Types, Opérateurs, Expressions, Licence SMA


Entrée/Sortie Année 2020-2021

Exercice n◦ 1

1. Soit les déclarations suivantes :

int n = 10 , p = 4 ;
long q = 2 ;
float x = 1.75 ;

Donner le type et la valeur de chacune des expressions suivantes :


(a) n+q : long 12
(b) n+x : float 11,75
(c) n % p +q : long 4
(d) n<p : int 0
(e) n >= p : int 1
(f ) n>q : int 1
(g) q + 3 * (n > p) : long 5
(h) q && n : int 1
(i) (q-2) && (n-10) : int 0
(j) x * (q==2) : float 1,75
(k) x * (q=5) : float 8,75
2. Ecrire plus simplement l’instruction suivante :

z = (a>b ? a : b) + (a <= b ? a : b) ;
z = a + b;

Exercice n◦ 2

1. Ecrire une fonction taille() qui liste la taille des divers types prédéfinis en langage C en utilisant la fonction prédéfinie
sizeof(type).
2. Ecrire un programme qui détermine les valeurs minimum et maximum pour des variables de types char, short, int,
et long en représentation signée et non signée.

Exercice n◦ 3

1. Donner la différence entre les valeurs 7, "7", et ’7’.


Le premier terme représente l’entier 7. Le second est la chaine de caractère composé de caractère ’7’ et ’\0’. Le
troisième terme représente le caractère ’7’ qui a pour code ASCII (55).
2. On considère l’instruction d’affectation suivante : double ans= 10.0+2.0/3.0-2.0*2.0;
Réecrire cette instruction en inserant de des parenthèses pour avoir ans= 11.0
double ans= 10.0+2.0/((3.0-2.0)*2.0);

3. On considère l’instruction d’affectation suivante :


double ans= 10.0+2.0/squar(2+1);
Donner la valeur de la variable ans pour chacune des fonctions macro squar suivantes :
(a) #define squar(x) x*x
(b) #define squar(x) (x*x)
(c) #define squar(x) (x)*(x)
(d) #define squar(x) ((x)*(x))
1
Exercice n◦ 4

1. Quels seront les résultats fournis par ce programme ?

#include <stdio.h>
int main ()
{
int n = 543 ;
int p = 5 ;
float x = 34.5678;
printf("A : %d %f\n", n, x) ; // 543 34.567799 %f par défaut 6 chiffres apres la virgule
printf("B : %4d %10f\n", n, x) ; // 543 entier avec 3 caracteres minimum, 34.567799 minimum 10 cara
printf("C : %2d %3f\n", n, x) ; // 543 34.567799
printf("D : %10.3f %10.3e\n", x, x) ; // 34.568 3.457e+01 notation exponentielle
printf("E : %*d\n", p, n) ; // 543
printf("F : %*.*f\n", 12, 5, x) ; // 34.56780

return 0; }

2. Quels résultats fournit le programme suivant :

#include <stdio.h>
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=10, p=10, q=10, r=1
n = p = q = 5 ;
n += p += q ;
printf ("B : n = %d p =%d q = %d\n", n, p, q) ;\\ n=15, p=10, q=5
q = n < p ? n++ : p++ ;
printf ("C : n = %d p =%d q = %d\n", n, p, q) ; \\ n=15, p=11, q=10
q = n > p ? n++ : p++ ;
printf ("D : n = %d p =%d q = %d\n", n, p, q) ; \\ n=16, p=11, q=15

retun 0;
}

3. Quelles seront les valeurs lues dans les variables n et p (de type int), par l’instruction d’entrée suivante :

scanf("%4d %2d", &n, &p);

lorsqu’on lui fournit les données suivantes (le symbole ˆ représente un espace et le symbole @ représente une fin de
ligne, c’est-à- dire une ”validation”) :

(a) 12ˆ45@ // n=12, p=45


(b) 123456@ // n=1234, p=56
(c) 123456ˆ7@ // n=1234, p=56
(d) 1ˆ458@ // n=1, p=45
(e) ˆˆˆ4567ˆˆ8912@ // n=4567, p=89

Exercice n◦ 5

1. Ecrire une macro max qui calcul le maximum de deux variables.

#define macromax(a,b) (a<b?b:a)

2. Ecrire une fonction qui renvoie le maximum de deux entiers de type int.

int max(int a, int b) {


return (a<b?b:a);
}

2
3. Ecrire un programme qui demande à l’utilisateur de saisir trois entiers et qui affiche leurs maximum.

int main(){
int a,b,c;

printf("Donner 3 nombres\n ");


scanf("%d%d%d",&a,&b,&c);

a=max(a,b);
a=max(a,c);

printf("\n Le maximum est %d \n ",a);

printf("Le maximum est %d \",macromax(macromax(a,b),c));

return 0;
}

Vous aimerez peut-être aussi