Bonjour à tous j'ai un examen en septembre ( donc bientot)
j'ai réussis à avoir l'examen
comme je ne suis pas très fort en C je me permet de le poster
avec mes réponses
( et +- justifications )
je ne peut pas faire mieux par ce que j'ai beaucoup de mal en C

j'aimerai une correction ... pour m'orienter dans mon étude et dans mon syllabus

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
1.	On souhaite déclarer un tableau de 20 chaînes de caractères
a.   char   *tableau [19];
b.   char *tableau [20];
c.   char (*tableau)[20];
pour moi c'est B car l'étoile est devant tableau et 20 entre crochet
mais que signifie (*tableau)[20]

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
2.	La fonction main 
a. peut renvoyer une valeur entière
b. ne peut jamais rien renvoyer
c. peut renvoyer une valeur réelle
d. peut renvoyer des valeurs de n’importe quel type
A elle renvoie un Int

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
3.	La fonction main peut recevoir des arguments
a. sous forme d’un réel et d’un tableau vers des chaînes de caractères
b. sous forme d’un entier et d’un tableau vers des chaînes de caractères
c. sous forme d’un entier et d’une chaîne de caractères qui comprend tous les arguments
B car int void ( char * argc[] int arg )

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
4.	Soient les instructions :
    void *p ;
    int t [ ] = {100, 200, 300, 400} ;
 On veut augmenter t[2] de 1.
 
a. p = &t[2] ;
   (*p)++ ;
 
b. (int *)p = &t[2] ;
    (*p)++ ;
 
c. p = &t[2];
   (*(int *) p) ++ ;
 
d. p = &(int *)t[2] ;
    (*p)++ ;
je ne sais pas le faire peut on m'expliquer ce que fait chacun ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
5.	Lors du passage d’un argument à une fonction,
a. une variable élémentaire passe par adresse
b. un tableau passe par adresse
c. un pointeur passe par adresse
je ne sais pas du tout

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
6.	Soit :
int tab[][4] = { {10, 20, 30, 40}, {50, 60, 70, 80}} ;
int * p =  *tab ;
Pour imprimer le ième élément du tableau (i = 0, 1, …),
a. printf( "%d", *(tab+i) ) ;     
b. printf( "%d", *(*(tab+i)) ) ;         
c. printf( "%d", *(p+i) ) ;
je pense que c'est le B car il y a deux etoiles ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
7.	Si le programme est écrit dans un seul fichier, une variable globale est déclarée
a. n’importe où dans le fichier, en dehors de toute fonction
b. au début du fichier, en dehors de toute fonction
c. n’importe où dans le fichier, en-dehors de toute fonction, avant la fonction main
C je crois mais pk ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
8.	a &= 0X8 ;
a. a garde le bit n°3 ,les autres s’annulent (le bit le plus à droite porte le n° 0).
b. a garde le bit n°3 , les autres deviennent 1
c. a garde le bit n°3, les autres s’inversent
je ne comprend pas la question on à pas la valeur de a
a = a & 0X8

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
9.	Une variable locale dans une fonction
a. peut porter le même nom qu’une variable d’une autre fonction
b. ne peut pas porter le même nom qu’une variable d’une autre fonction
A je pense par ce que je déclare de I pour des while dans mes fonctions

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
10.	La fonction calloc
a. initialise des entiers à 0 et les caractères à ‘ ‘
b. initialise des entiers à 0 et les caractères à ‘\n’
c. initialise des entiers à 0 et les caractères à ‘\0
C elle va initialiser les entier à 0 et les caractères à '\0'


Voila pourriez vous m'aider merci

C'est hyper important