Académique Documents
Professionnel Documents
Culture Documents
Exercice 1
Donner une fonction qui retourne la moyenne, le minimum et le maximum d’un tableau
unidimensionnels ;
Exercice 2
On déclare un tableau d'entiers A de dimension 10
Définir deux fonctions, remplitA et impA, permettent de remplir et imprimer le tableau.
Déclarer un pointeur vers l'élément 7, incrémenter le pointeur et la valeur pointée.
Ecrire une fonction Trie qui tri les éléments d'un tableau dans l'ordre croissant ;
Tester tous ses fonctions dans un programme principal.
Exercice 3
Écrire une fonction char * recherche_char(char* s,char c) qui renvoie un pointeur vers la
première occurrence du caractère c (le caractère passé en argument, pas le caractère ’c’) dans
la chaine s. Si ce caractère n’apparait pas dans la chaine, la fonction devra renvoyer NULL
Exercice 4
À l’aide de recherche_char, écrire une fonction int compte_char(char *s, char c) qui compte
le nombre d’occurrences de c dans s.
Exercice5
Ecrire une fonction fois_deux qui multiplie par deux un entier.
Ecrire une fonction appliquer_tableau(int f(int), int * t, int n) qui applique une fonction f,
au tableaut de taille n.
Ecrire une fonction main qui teste appliquer_tableau
corrigés :
Exercice 1:
#include<stdio.h>
#include<conio.h>
{ int i,n,t[10],s=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{printf("t[%d]=",i);
scanf("%d",&t[i]);
*min=t[0];
*max=t[0];
for(i=0;i<n;i++)
{ s=s+t[i];
if(t[i]<*min)
{ *min=t[i]; }
if(t[i]>*max)
{*max=t[i]; }
*moy=s/n;
main()
fonction(&max,&min,&moy);
getch();
Exercice2 :
#include<stdio.h>
#include<conio.h>
{int i;
for(i=0;i<n;i++)
scanf("%d",&t[i]);}}
{int i;
for(i=0;i<n;i++)
{printf("%d\t",t[i]);}}
{if(n>7)
{p=t+7;
for(p=t+7;p<t+n;p++)
{*p=*p+1;}}}
{int aide,i,j;
for(i=0;i<n-1;i++)
{for(j=i+1;j<n;j++)
{if( t[i]>t[j])
{aide=t[i];
t[i]=t[j];
t[j]=aide;}}}}
main()
{int t[10],*p,n;
printf("donnez la dimention");
scanf("%d",&n);remplit( n, t);
impt( t, n);
printf("\n");
pointer(p,t, n);
tri( t,n);
impt( t, n);
getch();}
Exercice 3:
#include<stdio.h>
#include<conio.h>
#include<string.h>
{ char*p;p=s;
while(*p!='\0')
{if(*p==c)
{return(p);}
else
{p++;}
return(NULL);}
char*p;p=s;
int k=0;
while(p=recherche_char(s,c))
{k++;
p++;}
return(k);
main()
{char s[100],c,*p;
int k;
gets(s);
scanf("%c",&c);
p=recherche_char(s,c);
puts(p);
k=compte_char(s,c);
printf("%d ",k);
getch();}
Exercice 4:
#include<stdio.h>
#include<conio.h>
#include<string.h>
{ char*p;
p=s;
while(*p!='\0')
{if(*p==c)
{return(p);}
else
{p++;}
return(NULL);}
{ char*p;p=s;
int i;
i=0;
while(p=recherche_char(p,c))
{i++;
p++;}
return(i);}
main()
{char s[100],c;
int i;
gets(s);
scanf("%c",&c);
i=compte(s,c);
printf("%d",i);
getch();}
Ecrire une fonction afficher qui permet d’afficher les éléments du tableau
Ecrire une fonction calculer_moyenne qui permet de calculer la moyenne des éléments du tableau
Ecrire une fonction trouver_minmax qui permet de trouver le minimum et le maximum des éléments du tableau.
/* Edition du résultat */
printf("Tableau trié :\n");
for (J=0; J<N; J++)
printf("%d ", A[J]);
printf("\n");
return 0;
}
Exercice langage C fusion de tableaux triés en fonctions
Ecrire la fonction FUSION qui construit un tableau FUS trié par ordre croissant avec les éléments de deux
tableaux A et B triés par ordre croissant. Pour deux tableaux de dimensions N et M, le tableau FUS aura la
dimension N+M. (Méthode: voir exercice 7.13)
Ecrire un programme qui teste la fonction FUSION à l'aide de deux tableaux lus au clavier et triés à l'aide de
TRI_BULLE.
1 #include <stdio.h>
2
3 main()
4 {
5 /* Prototypes des fonctions appelées */
6 void FUSION(int *A, int *B, int *FUS, int N, int M);
7 void TRI_BULLE(int *T, int N);
8 void LIRE_TAB (int *TAB, int *N, int NMAX);
9 void ECRIRE_TAB (int *TAB, int N);
10 /* Variables locales */
11 /* Les tableaux et leurs dimensions */
12 int A[100], B[100], FUS[200];
13 int N, M;
14 /* Traitements */
15 printf("*** Tableau A ***\n");
16 LIRE_TAB (A, &N, 100);
17 printf("*** Tableau B ***\n");
18 LIRE_TAB (B, &M, 100);
19 TRI_BULLE(A, N);
20 printf("Tableau A trié : \n");
21 ECRIRE_TAB (A, N);
22 TRI_BULLE(B, M);
23 printf("Tableau B trié : \n");
24 ECRIRE_TAB (B, M);
25 FUSION(A,B,FUS,N,M);
26 printf("Tableau FUS : \n");
27 ECRIRE_TAB (FUS, N+M);
28 return 0;
29 }
30
31
32 void FUSION(int *A, int *B, int *FUS, int N, int M)
33 {
34 /* Variables locales */
35 /* Indices courants dans A, B et FUS */
36 int IA,IB,IFUS;
37 /* Fusion de A et B dans FUS */
38 IA=0, IB=0; IFUS=0;
39 while ((IA<N) && (IB<M))
40 if (*(A+IA)<*(B+IB))
41 {
42 *(FUS+IFUS)=*(A+IA);
43 IFUS++;
44 IA++;
45 }
46 else
47 {
48 FUS[IFUS]=B[IB];
49 IFUS++;
50 IB++;
51 }
52 /* Si A ou B sont arrivés à la fin, alors */
53 /* copier le reste de l'autre tableau. */
54 while (IA<N)
55 {
56 *(FUS+IFUS)=*(A+IA);
57 IFUS++;
58 IA++;
59 }
60 while (IB<M)
61 {
62 *(FUS+IFUS)=*(B+IB);
63 IFUS++;
64 IB++;
65 }
66 }
67
68 void TRI_BULLE(int *T, int N)
69 {
70 /* Prototypes des fonctions appelées */
71 int RANGER(int *X, int *Y);
72 . . .
73 }
74 int RANGER(int *X, int *Y)
75 {
76 . . .
77 }
78 void LIRE_TAB (int *TAB, int *N, int NMAX)
79 {
80 . . .
81 }
82 void ECRIRE_TAB (int *TAB, int N)
83 {
84 . . .
85 }
Exercice 1
Donner une fonction qui retourne la moyenne, le minimum et le maximum d’un tableau
unidimensionnels ;
Exercice 2
On déclare un tableau d'entiers A de dimension 10
Définir deux fonctions, remplitA et impA, permettent de remplir et imprimer le tableau.
Déclarer un pointeur vers l'élément 7, incrémenter le pointeur et la valeur pointée.
Ecrire une fonction Trie qui tri les éléments d'un tableau dans l'ordre croissant ;
Tester tous ses fonctions dans un programme principal.
Exercice 3
Écrire une fonction char * recherche_char(char* s,char c) qui renvoie un pointeur vers la
première occurrence du caractère c (le caractère passé en argument, pas le caractère ’c’) dans
la chaine s. Si ce caractère n’apparait pas dans la chaine, la fonction devra renvoyer NULL
Exercice 4
À l’aide de recherche_char, écrire une fonction int compte_char(char *s, char c) qui compte
le nombre d’occurrences de c dans s.
Exercice5
Ecrire une fonction fois_deux qui multiplie par deux un entier.
Ecrire une fonction appliquer_tableau(int f(int), int * t, int n) qui applique une fonction f,
au tableaut de taille n.
Ecrire une fonction main qui teste appliquer_tableau
corrigés :
Exercice 1:
#include<stdio.h>
#include<conio.h>
{ int i,n,t[10],s=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{printf("t[%d]=",i);
scanf("%d",&t[i]);
*min=t[0];
*max=t[0];
for(i=0;i<n;i++)
{ s=s+t[i];
if(t[i]<*min)
{ *min=t[i]; }
if(t[i]>*max)
{*max=t[i]; }
*moy=s/n;
main()
fonction(&max,&min,&moy);
getch();
Exercice2 :
#include<stdio.h>
#include<conio.h>
{int i;
for(i=0;i<n;i++)
scanf("%d",&t[i]);}}
{int i;
for(i=0;i<n;i++)
{printf("%d\t",t[i]);}}
{if(n>7)
{p=t+7;
for(p=t+7;p<t+n;p++)
{*p=*p+1;}}}
{int aide,i,j;
for(i=0;i<n-1;i++)
{for(j=i+1;j<n;j++)
{if( t[i]>t[j])
{aide=t[i];
t[i]=t[j];
t[j]=aide;}}}}
main()
{int t[10],*p,n;
printf("donnez la dimention");
scanf("%d",&n);remplit( n, t);
impt( t, n);
printf("\n");
pointer(p,t, n);
tri( t,n);
impt( t, n);
getch();}
Exercice 3:
#include<stdio.h>
#include<conio.h>
#include<string.h>
{ char*p;p=s;
while(*p!='\0')
{if(*p==c)
{return(p);}
else
{p++;}
return(NULL);}
char*p;p=s;
int k=0;
while(p=recherche_char(s,c))
{k++;
p++;}
return(k);
main()
{char s[100],c,*p;
int k;
gets(s);
scanf("%c",&c);
p=recherche_char(s,c);
puts(p);
k=compte_char(s,c);
printf("%d ",k);
getch();}
Exercice 4:
#include<stdio.h>
#include<conio.h>
#include<string.h>
{ char*p;
p=s;
while(*p!='\0')
{if(*p==c)
{return(p);}
else
{p++;}
return(NULL);}
{ char*p;p=s;
int i;
i=0;
while(p=recherche_char(p,c))
{i++;
p++;}
return(i);}
main()
{char s[100],c;
int i;
gets(s);
scanf("%c",&c);
i=compte(s,c);
printf("%d",i);
getch();}
Exercice 5: