QCM en programmation C – Les Constants – Partie 1

QCM sur C avec des réponses pour la préparation des entretiens, des tests en ligne, des examens etc.

 
 

1. Quelle est la sortie de ce code C?
#include <stdio.h>

int main()
{
     enum {FRAISE = 6, BANANE, POMME = 2, AUBERGINE};
     printf("AUBERGINE = %d\n", AUBERGINE);
}

A AUBERGINE = 3

B AUBERGINE = 2

C AUBERGINE = 6

D AUBERGINE = 7

A

La valeur d’un élément enum dépend de la valeur affecter à l’élément précédent. La sortie est comme suite:

$gcc prog1.c
$ a.out
AUBERGINE = 3

 

2. Quelle est la sortie de ce code C?
#include <stdio.h>

int main()
{
     printf("programmation C  %s", "Fonction par \n%s WayToLearnX", "WWW");
}

A

Programmation C Fonction par
    WWW WayToLearnX

B

Programmation C Fonction par\n%s WayToLearnX

C

Programmation C Fonction par
    %s WayToLearnX

D Erreur de compilation

C

Ce programme n’a qu’un seul %s dans les premières guillemets “ ”, donc il ne lit pas la chaîne “WWW”. La sortie est comme suite:

$gcc prog1.c
$ a.out
Programmation C Fonction par
   %s WayToLearnX

 

3. Le pointeur « str » contient une référence vers quelle chaîne de caractére ____?
char * str = "Hello\0" "World!";

A Hello

B Hello\0world!

C Helloworld!

D Déclaration invalide

A
‘\0’ est accepté comme char dans la chaîne. Même si strlen() donnera la longueur de la chaîne « Hello ».

#include <stdio.h>
#include <string.h>

int main()
{
    char * str = "Hello\0" "World!";
    printf("%s", str);
    return 0;
}

Sortie:

Hello

 

 

4. Quelle est la sortie de ce code C?
#include <stdio.h>
#define x 20

int main()
{
    const int x = 7;
    printf("x = %d\n", x);
}

A x = 7

B x = 20

C Erreur de compilation

D Erreur d’exécution

C

#define remplace x avec 20, l’identifiant sera remplacer par une valeur, sachan que x est une constante, nous pouvons pas la modifier et donc une erreur de compilation. La sortie est comme suite:

$gcc prog2.c
$ a.out
prog2.c: In function ‘main’:
prog2.c:5: error: expected identifier or ‘(’ before numeric constant

 

5. Quelle est la sortie de ce code C?
#include <stdio.h>

int main()
{
    int x = 010;
    printf("%d", x);
}

A 2

B 8

C 9

D 10

B

010 est une représentation octale de 8. La sortie est comme suite:

$gcc prog3.c
$ a.out
8

 

6. Quelle est la sortie de ce code C?
#include <stdio.h>

enum oiseau {MOINEAU, PERROQUET, PAON};
enum animal {LION = 16, LAPIN, ZEBRE, TIGRE};

int main()
{
        enum oiseau o = LION;
        int k;
        k = o;
        printf("%d\n", k);
        return 0;
}

A 0

B Erreur de compilation

C 1

D 16

D

« o » reçoit un entier, donc « k » et « o » sont compatible. La sortie est comme suite:

$gcc prog5.c
$ a.out
16

 

7. Quelle est la sortie de ce code C?
#include <stdio.h>
#define MAX 3

enum animal {LION = MAX + 1, LAPIN = LION + MAX};

int main()
{
    enum animal a = LAPIN ;
    printf("%d\n", a);
    return 0;
}

A erreur de compilation

B 7

C valeur non définie

D 3

B

La valeur MAX est 3 et donc LAPIN aura une valeur de 4 + 3. La sortie est comme suite:

$gcc prog6.c
$ a.out
7

 

8. Quelle est la sortie de ce code C?
#include <stdio.h>
#include <string.h>

int main()
{
    char *str = "y";
    char c = 'y';
    char array[1];
    array[0] = c;
    printf("%d %d", strlen(str), strlen(array));
    return 0;
}

A 1 1

B 2 1

C 2 2

D 1 (valeur indéfinie)

D

La valeur de strlen(str) est 1 car la variable str contient un seul caractère, mais la valeur de strlen(array) se change à caque fois que vous compilez le programme, donc c’est indéfini.

$gcc prog7.c
$ a.out
1 (valeur indéfinie)

 

4 réflexions sur “QCM en programmation C – Les Constants – Partie 1

  • juillet 21, 2020 à 2:04 am
    Permalien

    La réponse à la question 3 est A

    Répondre
  • juillet 23, 2020 à 5:25 pm
    Permalien

    Je comprends pas la réponse de la question 3. Comment se fait il que la réponse ne soit pas A ?

    Répondre
  • juillet 23, 2020 à 5:57 pm
    Permalien

    Pouvez vous revérifier la réponse à la question 8 car je pense que c’est D.

    Répondre
    • juillet 25, 2020 à 12:31 pm
      Permalien

      Merci pour cette remarque 🙂

      Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *