IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Examen de C en Septembre


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    gjhffd
    Invité(e)
    Par défaut Examen de C en Septembre
    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

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Par défaut Question 1
    1. On souhaite déclarer un tableau de 20 chaînes de caractères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char *tableau [19];
    //tableau[19] de pointeur sur char, donc chaînes de caractères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char *tableau [20];
    //tableau[20] de pointeur sur char, donc chaînes de caractères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char (*tableau)[20];
    //c'est un pointeur sur un tableau[20] de char
    Donc la réponse corrrecte est bien la B

  3. #3
    gjhffd
    Invité(e)
    Par défaut
    merci pour la 1ere réponses
    tu peux regarder les autres ?

    // m'aider pour les autres

  4. #4
    Membre chevronné Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Par défaut
    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
    18
    19
    20
    21
     
    4.	Soient les instructions :
        void *p ;
        int t [ ] = {100, 200, 300, 400} ;
     On veut augmenter t[2] de 1.
     
    //Un truc a savoir c'est que int *p equivaut a int p[]
    //*(p+i) equivaut a p[i]
    //p+i equivaut a &p[i]
     
    a. p = &t[2] ;/*on recupere l'adresse de t[2] qu'on met dans p mais t est un pointeur int alors que p est un pointeur void*/
       (*p)++ ;//incrementation de la valeur pointee par p
     
    b. (int *)p = &t[2] ;/*On convertit d'abord p en un pointeur vers int et puis on effectue l'affectation*/
        (*p)++ ;//incrementation de la valeur pointee par p
     
    c. p = &t[2];//voir a
       (*(int *) p) ++ ;/*conversion de p en pointeur int et in crémentation de la valeur vers laquelle il pointe*/
     
    d. p = &(int *)t[2] ;/*Conversion de t[2] en pointeur vers int avant l'affectation*/
        (*p)++ ;//voir plus haut
    Je dirais que la réponse est B. Si jamais, je dis n'importe quoi, prière de me corriger.

  5. #5
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par AL1986
    Je dirais que la réponse est B. Si jamais, je dis n'importe quoi, prière de me corriger.
    Caster une l-value ? C'est mal parti !

  6. #6
    gjhffd
    Invité(e)
    Par défaut
    La question 4 je ne comprend pas du tout l'avancée dans les pointeurs
    la question 5 je ne comprend pas la question
    la question 6 je ne comprend pas l'avancée dans les poiteurs
    la question 8 je ne comprend pas comment trouver la solution a=&0X8


    pour le reste un oui ou un non a la réponse ?


    pour la 4 si ont peut confirmer la réponses que j'essaye de comprendre grace aux commentaire très utiles

  7. #7
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par jchenoy
    Donc la réponse corrrecte est bien la B
    Mouais, sauf que la question entretient la confusion entre pointeur vers char et chaine de caractere. Mauvaise question.
    La question sur le retour de main() est assez etrange aussi. "peut renvoyer"... Ecrit comme ca, toutes les reponses sont correctes, puisque l'implementation peut faire ce qu'elle veut. Par contre, si on veut suivre le standard, c'est la reponse a re-ecrite 'doit renvoyer une valeur entiere'.

    xa4ke: les reponses sont dans ton livre de C ou n'importe quel tutoriel sur l'Internet. Ce ne sont pas des questions difficiles. (mal ecrites, parfois!)

  8. #8
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Citation Envoyé par DaZumba Voir le message
    xa4ke: les reponses sont dans ton livre de C ou n'importe quel tutoriel sur l'Internet. Ce ne sont pas des questions difficiles. (mal ecrites, parfois!)
    Effectivement, l'énoncé est très mal formulé. Il y a trop d'ambigüité.

    On se croirait à l'examen du code de la route:
    - La barrière est levée. Est-ce que je peux passer ?
    - Ben, je *peux* passer, oui. Mais comme le feu est rouge et qu'il y a un gendarme juste à côté, c'est pas forcément une bonne idée...

  9. #9
    gjhffd
    Invité(e)
    Par défaut
    le problème ( par ce que j'ai le syllabus ) c'est que je ne comprend pas
    tout et que donc je m'adresse sur un forum pour avoir éventuellement des explications complémentaire la ou il n'y a pas de réponses et de oui ou des non
    aux question avec réponse dans le principe ou je ne peux pas me planter sur les questions de théorie

  10. #10
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par xa4ke Voir le message
    le problème ( par ce que j'ai le syllabus ) c'est que je ne comprend pas
    tout et que donc je m'adresse sur un forum pour avoir éventuellement des explications complémentaire la ou il n'y a pas de réponses et de oui ou des non
    aux question avec réponse dans le principe ou je ne peux pas me planter sur les questions de théorie
    Reprends tes cours et poses des questions précises sur ce que tu ne comprends pas.

  11. #11
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par xa4ke Voir le message
    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]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int void ( char * argc[]  int arg )


    La réponse B est bonne en effet mais attention aux prototypes pris en compte, ici ca veut rien dire ce que tu as écrit, c'est au choix en C ANSI/ISO:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int main (void)
    int main (int argc, char ** argv)
    /* ou pour le second on peut aussi écrire: */
    int main (int argc, char * argv [])
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  12. #12
    gjhffd
    Invité(e)
    Par défaut
    ok

Discussions similaires

  1. examen pour la fonction publique
    Par blue dans le forum Etudes
    Réponses: 3
    Dernier message: 27/03/2007, 11h37
  2. Défi Septembre 2004
    Par grishka dans le forum XSL/XSLT/XPATH
    Réponses: 30
    Dernier message: 26/12/2005, 17h37
  3. Gérer les notes d'un examen
    Par declencher dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 31/05/2005, 12h59
  4. Congés pour Examen ?
    Par nebule dans le forum Etudes
    Réponses: 5
    Dernier message: 14/04/2005, 10h30
  5. [Java] Examen de la certification Sun
    Par chady dans le forum Certifications
    Réponses: 8
    Dernier message: 23/12/2004, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo