EVALUATION EN LANGAGE C ( PROGRAMMATION C ) TEST 03 /XX 2022
EXAMEN LANGAGE C
Dans ce document la correction de l'examen de programmation a été entièrement rédigé par le groupe Genius. Le but réel et de pouvoir écrire un programme qui puise réaliser le factoriel, la puissance , matriciel, algorithmes du calcul du sinus ,algorithmes de tri sélection , recherche avec sentinelle , recherche dichotomique et bien d’autres. Dans une correction détaillée pas à pas, vous aller découvrir ce qu’il y avait lieu de faire dans cette épreuve.
Correction :
Exercice 1 :
1- Différence entre l'opérateur * et l'opérateur &
L'opérateur * placer entre deux variable numériques permet de réaliser la multiplication de celle-ci, cependant si elle est placé entre une déclaration et une variable, alors elle définit un point vers le type de donnée créer.
exple : multiplication int a = 4, b = 5; int c = a*b;
Déclaration de pointeur int*a;
L'opérateur & permet de représenter l'adresse mémoire d'une variable (c'est la zone a laquelle sera stocké son contenue ou sa valeur)
exple : int a; scanf("%d",&a);
2- différence entre les déclarations int*pt et int val;
int*p est la declaration d'un pointeur pt;
int val est une déclaration d'une variable entière nommée val;
3- la valeur finale de val est : 10
4- l'instruction correcte est *pt=4; car pt est un pointeur.
Exercice 2 :
1- Différence entre passage par valeur et passage par référence :
Le passage par référence signifie que les fonctions dites "du paramètre sera le même que les appelants' argument passé (pas la valeur, mais l'identité de la variable elle-même). Le passage par valeur signifie que les fonctions dites "du paramètre sera une copie de l'appelant' argument passé.
2- une fonction en langage c ne peut pas modifiée la valeur d’une variable passée par paramètre car elle travaille sur une copie de celle-ci.
3- Le passage d'un tableau en paramètre a une fonction se fait par référence c.-à-d. on passe le pointeur de tète du tableau.
4- Correction du code :
#include <stdio.h> #define N 5 int* create_init(int size){ int *v ; // on crée un pointeur en local et on lui alloué dynamiquement de la memoire v = malloc(size*sizeof(int)); for(int i=0;i<size;i++) *(v+i)=0; //on manipule ce tableau comme un pointeur return v;//on retourne l'adresse memoire de ce pointeur } |
Exercice 3 :
void triangle(int n){ if(n>0){ for(int i=0;i<n;i++){ for(int j=0;j<=i;j++){ printf("*"); } printf("\n"); } }else{ printf("valeur entrée non reconnue\n"); } }
|
Sortie Ecran :
Exercice 4 :
#include <stdio.h> #include <stdlib.h> #define N 2
int main(){ int a[N][N],b[N][N];int size=0;
//lecture des données de la matrice A for(int i=0;i<N;i++){ for(int j=0;j<N;j++){ printf("Entrer la valeur A[%d,%d]\n",i,j); scanf("%d",&(a[i][j])); } }
//lecture des données de la matrice B for(int i=0;i<N;i++){ for(int j=0;j<N;j++){ printf("Entrer la valeur B[%d,%d]\n",i,j); scanf("%d",&(b[i][j])); } }
//determinons le nombre de coeficients egaux for(int i=0;i<N;i++){ for(int j=0;j<N;j++){ if(a[i][j] == b[i][j]) size++; } }
printf("Il y'a %d coeficients egaux\n",size);
return 0; } |
Exercice 5 :
1- fonction qui détermine si une chaine est une sous chaine d'une autre chaine
int sous_chaine(char*sc,char*chaine){ int bool = 0,i=0,j=0; while(i < strlen(sc)){ if(j < strlen(chaine)){ if(*(chaine+j) == *(sc+i)){ j++;i++; }else{ i++;j=0; } } else{ bool = 1; break; } }
return bool; }
|
2- fonction qui fusionne deux chaine de caractère
char* fusion2(char*chaine1, char*chaine2){ char* chaine;int j=0,k=0; chaine = malloc((strlen(chaine1) + strlen(chaine2))*sizeof(char)); for(int i = 0;i < (strlen(chaine1) + strlen(chaine2));i++){ if(j< strlen(chaine1)){ *(chaine+i) = *(chaine1+j); j++; }else{ *(chaine+i) = *(chaine2+k); k++; } } return chaine; } |
Exercice 6 :
#include <stdio.h> #include <string.h> #include <stdlib.h> char* plug_long_nom(){ char* nom=malloc(100*sizeof(char)),*nom1=malloc(100*sizeof(char)); printf("Entrez un nom\n"); scanf("%s",nom);
while(strcmp(nom1,"fin")){ printf("Entrez un autre nom\n"); scanf("%s",nom1);
if(strlen(nom) < strlen(nom1)){ strcpy(nom,nom1); }} return nom ;}
int main(){ char* nom = plug_long_nom(); printf("Le plus long nom saisie est : %s\n",nom); return 0; }
|
‘’ La persévérance, c’est ce qui rend l’impossible possible, le possible probable et le probable réalisé. ‘’
Bonne chance pour la normale les amis.
Contact WhatsApp : +237 658395978 | Réaliser Par Joël_Yk .
Ajouter un commentaire