École Supérieure Privée d Ingénieurs de Monastir niveau : 1 ere année spécialité : mécatronique & froid et climatisation AU : 2014-2015 Programmation C Travaux pratiques Correction Exercice 1 TP3 long i n t N,X; p r i n t f ( Donner un e n t i e r N : ) ; s c a n f ( % ld,&n) ; while (N<=0); X=0; while (N) i f (N%10==0) X++; N=N/10; p r i n t f ( X = %d\n,x) ; 2- N 1040 104 10 1 0 20400 2040 204 20 2 0 X 0 1 2 0 1 2 3 Résultat X = 2 X = 3 3- Il permet de compter et d afficher le nombre de zéro d un entier >0 4- Avec DO... WHILE : i f (N%10==0) X++; N=N/10; while (N) ;
Avec FOR : f o r (X=0; N;N/=10) i f (N%10==0) X++; Exercice 2 TP3 1- i 1 2 4 8 16 x 0 1 2 3 4 Résultat 1 2 3 4 2- Solution avec...while i =1; x = 0 ; x++; i=i 2; p r i n t f ( %d\ t, x ) ; while ( i <10); Solution avec for f o r ( x=0, i =1 ; i <10 ; i=i 2) x++; p r i n t f ( %d\ t, x ) ; Exercice 3 TP3 1 i n t i, N ; f l o a t S ; p r i n t f ( Donner N : ) ; s c a n f ( %d,&n) ; while (N<=0); f o r (S=1, i =1; i<=n; i++) S=S + ( f l o a t )1/(2 i +1); p r i n t f ( La somme = %.2 f \n,s ) ; Kais Ben Salah Page : 2
2 i n t i, N ; f l o a t S ; p r i n t f ( Donner N : ) ; s c a n f ( %d,&n) ; while (N<=0); S=1; i =1; while ( i<=n) S=S + ( f l o a t )1/(2 i +1); i ++; p r i n t f ( La somme = %.2 f \n,s ) ; Exercice 4 TP3 long i n t n, x, ninv =0,p ; p r i n t f ( Donner un e n t i e r : ) ; s c a n f ( % ld, &n ) ; while (n<=9); x=n ; while ( x ) ninv=ninv 10; ninv=x%10+ ninv ; x=x /10; p=(n%10) n ; i f ( ( p= =ninv ) && ( n= =ninv ) ) p r i n t f ( % ld e s t un e n t i e r symétrique et propre \n,n ) ; i f ( p==ninv ) p r i n t f ( % ld e s t un e n t i e r propre \n,n ) ; i f ( n==ninv ) p r i n t f ( % ld e s t un e n t i e r symétrique \n,n ) ; p r i n t f ( % ld e s t un e n t i e r non symétrique et non propre, n ) ; Kais Ben Salah Page : 3
Exercice 5 TP3 i n t A, B, N, nb, cp, i, j, S ; p r i n t f ( Donnner deux e n t i e r s : ) ; s c a n f ( %d %d,&a, &B) ; while (A<=0 B<=0 A>B) ; p r i n t f ( Donnner l a t a i l l e de l a s u i t e : ) ; s c a n f ( %d,&n) ; while (N<=1); f o r ( i =1,cp=0,S=0, j =0; i<=n; i++) p r i n t f ( Donner l e n t i e r %d de l a s u i t e :, i ) ; s c a n f ( %d,&nb ) ; while ( nb==0); i f ( nb>a && nb<b) cp++; i f ( nb>0) S+=nb ; j ++; i f ( cp ) p r i n t f ( Le nombre d e n t i e r s compris e n t r e %d et %d = %d\n,a,b, cp ) ; p r i n t f ( I l n e x i s t e pas des e n t i e r s compris e n t r e %d et %d\n,a,b) ; i f ( j ) p r i n t f ( La moyenne de l a s u i t e e s t =%.2 f \n,( f l o a t ) S/ j ) ; p r i n t f ( I l n e x i s t e pas des e n t i e r s p o s i t i f s dans l a s é r i e ) ; Exercice 9 TP3 \ begin verbatim long i n t N, sd, s, x, d, u ; i n t choix, i, j, ok=0; p r i n t f ( MENU PRINCIPAL\n ) ; p r i n t f ( 1. Problème 1\n ) ; p r i n t f ( 2. Problème 2\n ) ; p r i n t f ( 3. Problème 3\n ) ; p r i n t f ( 4. Quitter l e programme\n ) ; Kais Ben Salah Page : 4
p r i n t f ( Donner un choix e n t r e 1 et 4 : ) ; s c a n f ( %d, &choix ) ; while (! ( choix >=1 && choix <=4)); p r i n t f ( Donner un e n t i e r : ) ; s c a n f ( % ld, &N) ; while (N<=0); x=n; switch ( choix ) case 1 : f o r ( case 2 : f o r ( i =1, s =0, j =1; i<=n; i++) s+=j ; j=j +2; p r i n t f ( Le c a r r é de %ld = %ld \n, x, s ) ; break ; i =1, sd =0; i<=n/ 2 ; i++) i f (N%i ==0) sd+=i ; i f ( sd%n==0) p r i n t f ( % ld e s t m u l t i p a r f a i t \n, x ) ; p r i n t f ( % ld n e s t pas m u l t i p a r f a i t \n, x ) ; break ; case 3 : u=n%10; d=n/10; N=d+4 u ; i f (N==13 N==26 N==39) ok = 1 ; break ; while (d>=10); i f ( ok ) p r i n t f ( % ld e s t d i v i s i b l e par 13\n, x ) ; p r i n t f ( % ld n e s t pas d i v i s i b l e par 13\n, x ) ; case 4 : break ; Kais Ben Salah Page : 5
Exercice 11 TP3 i n t n, i, p, ok ; p r i n t f ( Donnez un e n t i e r : \ n ) ; s c a n f ( %d,&n ) ; while (! ( n >10)); p r i n t f ( Les nombres premiers i n f é r i e u r s a %d sont : \ n,n ) ; f o r (p=2;p<=n ; p++) ok =1; f o r ( i =2; i<p ; i++) i f ( p%i ==0) ok=0; break ; i f ( ok==1) p r i n t f ( %d\ t, p ) ; Exercice 1 TP4 #i n c l u d e <s t d i o. h> long i n t INVERSION( long i n t N) long i n t NINV=0; while (N!=00) NINV = 1 0 ; NINV += N%10; N /= 1 0 ; return NINV; i n t PALINDROME ( long i n t N) i f ( N == INVERSION(N) ) return 1 ; return 0 ; long i n t N; p r i n t f ( Entrez un nombre p o s i t i f : ) ; s c a n f ( % ld, &N) ; while (! ( N>0)); i f (PALINDROME (N)==1) p r i n t f ( % ld e s t palindrome \n,n) ; p r i n t f ( % ld n e s t pas palindrome \n,n) ; Kais Ben Salah Page : 6
Exercice 2 TP4 #i n c l u d e <s t d i o. h> long i n t SAISIE ( ) long i n t nb ; p r i n t f ( Donner un e n t i e r : ) ; s c a n f ( % ld,&nb ) ; while (! ( nb >0)); return nb ; i n t PRODUIT ( i n t x ) i n t p=1,y ; while ( x!=0) y=x%10; i f ( y!=0) p=p y ; x=x /10; return p ; long i n t A,B; p r i n t f ( S a i s i e de A\n ) ; A = SAISIE ( ) ; p r i n t f ( S a i s i e de B\n ) ; B =SAISIE ( ) ; i f (PRODUIT (A)==PRODUIT (B) ) p r i n t f ( % ld et %ld sont c o u s i n s \n,a,b) ; p r i n t f ( % ld et %ld ne sont pas c o u s i n s \n,a,b) ; Exercice 3 TP4 #include <math. h> i n t SAISIE ( ) long i n t nb ; p r i n t f ( Donner un e n t i e r : ) ; s c a n f ( %d,&nb ) ; while (! ( nb >0)); return nb ; Kais Ben Salah Page : 7
i n t VERIFICATION ( i n t NB) i n t v =1, x ; while ( NB!=0 && v==1) x=nb%10; i f ( x>7) v=0; NB= NB/10; return v ; i n t CONVERSION ( i n t NB) i n t exp=0, r e s =0, x ; while (NB!=0) x=nb%10; r e s=r e s + x pow (8, exp ) ; exp++; NB=NB/10; return r e s ; i n t A; A= SAISIE ( ) ; i f (VERIFICATION (A)==1) p r i n t f ( %d en base 10 = %d,a, CONVERSION(A) ) ; p r i n t f ( %d n a p p a r t i e n t pas en base 8, A) ; Exercice 4 TP4 i n t s a i s i e t a i l l e ( ) i n t n ; p r i n t f ( nner l a t a i l l e du tableau : ) ; s c a n f ( %d,&n ) ; while (! ( n>1 && n <50)); return n ; Exercice 5 TP4 void chargement ( i n t t [ ], i n t n ) i n t i ; p r i n t f ( t [%d ] :, i ) ; s c a n f ( %d,& t [ i ] ) ; while (! ( t [ i ] >0)); Kais Ben Salah Page : 8
Exercice 6 TP4 void a f f i c h e r ( i n t t [ ], i n t n) i n t i ; p r i n t f ( %d\ t, t [ i ] ) ; Exercice 7 i n t s a i s i e t a i l l e ( ) i n t n ; p r i n t f ( nner l a t a i l l e du tableau : ) ; s c a n f ( %d,&n ) ; while (! ( n>1 && n <50)); return n ; void chargement ( i n t t1 [ ], i n t n1 ) i n t i ; f o r ( i =0; i<n1 ; i++) p r i n t f ( t1 [%d ] :, i ) ; s c a n f ( %d,& t1 [ i ] ) ; void a f f i c h e r ( i n t t1 [ ], i n t n1 ) i n t i ; p r i n t f ( %d\ t, t [ i ] ) ; i n t minimum( i n t t [ ], i n t n ) i n t min=t [ 0 ], i ; f o r ( i =1; i<n ; i++) i f ( t [ i ]<min ) min=t [ i ] ; return min ; void r e c h e r c h e ( i n t t1 [ ], i n t n1 ) i n t a, i, min, n2=0, t2 [ 5 0 ] ; p r i n t f ( \ nnner l a v a l e u r de A: ) ; s c a n f ( %d,&a ) ; Kais Ben Salah Page : 9
f o r ( i =0; i<n1 ; i++) i f ( t1 [ i ]>a ) t2 [ n2]= t1 [ i ] ; n2++; i f ( n2!=0) p r i n t f ( \ nles éléments de T1 qui sont s u p é r i e u r s à %d sont : \ n, a ) ; a f f i c h e r ( t2, n2 ) ; min= minimum( t2, n2 ) ; p r i n t f ( \ n l e plus p e t i t des éléments qui sont > à %d=%d\n, a, min ) ; p r i n t f ( i l n e x i s t e pas des e n t i e r s qui sont s u p é r i e u r s à %d\n, a ) ; i n t t1 [ 5 0 ], n1 ; n1=s a i s i e t a i l l e ( ) ; chargement ( t1, n1 ) ; p r i n t f ( \ ncontenu de t1 \n ) ; a f f i c h e r ( t1, n1 ) ; r e c h e r c h e ( t1, n1 ) ; Exercice 8 TP4 i n t s a i s i e t a i l l e ( ) i n t n ; p r i n t f ( nner l a t a i l l e du tableau : ) ; s c a n f ( %d,&n ) ; while (! ( n>1 && n <50)); return n ; void chargement ( i n t t [ ], i n t n ) i n t i ; p r i n t f ( t [%d ] :, i ) ; s c a n f ( %d,& t [ i ] ) ; void a f f i c h e r ( i n t t [ ], i n t n) i n t i ; p r i n t f ( %d\ t, t [ i ] ) ; Kais Ben Salah Page : 10
void t r a n s f e r e ( i n t T1 [ ], i n t T4 [ ], i n t N1) i n t i, j, k ; f o r ( i =0, j =0,k=N1 1; i<n1 ; i++) i f ( i %2==1) T4 [ k]=t1 [ i ] ; k ; T4 [ j ]=T1 [ i ] ; j ++; i n t t1 [ 5 0 ], t4 [ 5 0 ], n1 ; n1=s a i s i e t a i l l e ( ) ; chargement ( t1, n1 ) ; t r a n s f e r e ( t1, t4, n1 ) ; p r i n t f ( \ ncontenu de t1 \n ) ; a f f i c h e r ( t1, n1 ) ; p r i n t f ( \ ncontenu de t4 \n ) ; a f f i c h e r ( t4, n1 ) ; Exercice 9 TP4 i n t s a i s i e t a i l l e ( ) i n t n ; p r i n t f ( nner l a t a i l l e du tableau : ) ; s c a n f ( %d,&n ) ; while (! ( n>1 && n <50)); return n ; void chargement ( i n t t [ ], i n t n ) i n t i ; p r i n t f ( t [%d ] :, i ) ; s c a n f ( %d,& t [ i ] ) ; void a f f i c h e r ( i n t t [ ], i n t n) i n t i ; p r i n t f ( %d\ t, t [ i ] ) ; Kais Ben Salah Page : 11
i n t SYMETRIQUE( i n t t1 [ ], i n t n1 ) i n t i, j, ok=1; f o r ( i =0, j=n1 1; i<n1 / 2 ; i ++,j ) i f ( t1 [ i ]!= t1 [ j ] ) ok=0; break ; return ok ; i n t t1 [ 5 0 ], n1 ; n1=s a i s i e t a i l l e ( ) ; chargement ( t1, n1 ) ; p r i n t f ( \ ncontenu de t1 \n ) ; a f f i c h e r ( t1, n1 ) ; i f (SYMETRIQUE( t1, n1)==1) p r i n t f ( \ nle tableau T1 e s t symétrique \n ) ; p r i n t f ( \ nle tableau T1 n e s t pas symétrique \n ) ; Exercice 12 TP4 i n t s a i s i e t a i l l e ( ) i n t n ; p r i n t f ( nner l a t a i l l e du tableau : ) ; s c a n f ( %d,&n ) ; while (! ( n>1 && n <50)); return n ; void chargement ( i n t t [ ], i n t n ) i n t i ; p r i n t f ( t [%d ] :, i ) ; s c a n f ( %d,& t [ i ] ) ; void a f f i c h e r ( i n t t [ ], i n t n) i n t i ; p r i n t f ( %d\ t, t [ i ] ) ; Kais Ben Salah Page : 12
void i n v e r s i o n ( i n t t1 [ ], i n t n1 ) i n t i, j, aux ; f o r ( i =0, j=n1 1; i<n1/2 ; i ++,j ) aux=t1 [ i ] ; t1 [ i ]= t1 [ j ] ; t1 [ j ]=aux ; i n t t1 [ 5 0 ], n1 ; n1=s a i s i e t a i l l e ( ) ; chargement ( t1, n1 ) ; p r i n t f ( \ ncontenu de T1 avant i n v e r s i o n \n ) ; a f f i c h e r ( t1, n1 ) ; i n v e r s i o n ( t1, n1 ) ; p r i n t f ( \ ncontenu de T1 aprés i n v e r s i o n \n ) ; a f f i c h e r ( t1, n1 ) ; Exercice 13 TP4 i n t s a i s i e t a i l l e ( ) i n t n ; p r i n t f ( nner l a t a i l l e du tableau : ) ; s c a n f ( %d,&n ) ; while (! ( n>1 && n <50)); return n ; void chargement ( i n t t [ ], i n t n ) i n t i ; p r i n t f ( t [%d ] :, i ) ; s c a n f ( %d,& t [ i ] ) ; void a f f i c h e r ( i n t t [ ], i n t n) i n t i ; p r i n t f ( %d\ t, t [ i ] ) ; Kais Ben Salah Page : 13
void r o t a t i o n ( i n t t1 [ ], i n t n1 ) i n t i, aux ; aux=t1 [ n1 1]; f o r ( i=n1 ; i >0 ; i ) t1 [ i ]= t1 [ i 1]; t1 [0]= aux ; i n t t1 [ 5 0 ], n1 ; n1=s a i s i e t a i l l e ( ) ; chargement ( t1, n1 ) ; p r i n t f ( \ ncontenu de T1 avant r o t a t i o n \n ) ; a f f i c h e r ( t1, n1 ) ; r o t a t i o n ( t1, n1 ) ; p r i n t f ( \ ncontenu de T1 aprés r o t a t i o n \n ) ; a f f i c h e r ( t1, n1 ) ; Kais Ben Salah Page : 14