Année universitaire 2003-2004

DEUG MIAS
Module Info 2
Travaux dirigés


Séance 7 :

  • Tableaux.

  • TD 7 : Tableaux
    1. Pour chaque déclaration, dire si elle est valide toujours, parfois, jamais. Justifiez votre réponse.
    (a) float  x[5.0];
    (b) int  x[n];
    (c) int  x[five];
    (d) char x[ ];
    (e) char  [ ] = {a,b,c,d,e};
    (f) char [ ] = {'Q','U','I','T'};
    (g) char [7] = {'Q','U','I','C', 'K','L','Y'}
    2. Quelle est la sortie de ce programme?
    #include<stdio.h>
    void  main(void){
     int od[10], ev[10], k[10];
     int n;
     for (n = 0; n< 10; n++){
      ev[n] = 2 * n;
      od[n] = 1;
     }
     for (n = 0; n< 10; n++){
      scanf("%d", &k[n]);
     for (n = 0; n< 10; n++){
      if (k[n] % 2 == 0)
       ev[n] = k[n];
      else od[9 - n] = k[n];
     for (n = 0; n< 10; n++){
      printf("%d %d \n", ev[n], od[n]);
     }

    Entrée: 6 3 12 14 9 6 7 5 3 10
    3. Quelle est la sortie de ce programme?
    #include<stdio.h>
    void  main(void){
     int k[10];
     int n;
     for (n = 0; n< 10; n++){
      scanf("%d", &k[n]);
     for (n = 0; n< 10; n++){
      if (k[n] % 2 > 0)

      k[n/2] = k[n];
     for (n = 0; n< 10; n++){
      printf("%d \n", k[n]);
     }

    Entrée: 6 3 12 14 9 6 7 5 3 10
    4. Soit a un tableau d'entiers de taille N. Ecrire une fonction qui a a comme paramètre d'entrée et qui renvoie la somme des éléments du tableau.
    5. Quelle est la taille de ces tableuax?
    float x[4][10];
    char ch[3][3];
    float x[4][4][6];

    6. Quelle est la sortie de ces programmes?
    #include<stdio.h>
    void  main(void){
     int tab[4][4];
     int a,b;
     for (a = 0; a< 4; a++)
      for (b = 0; b< 4; b++)
       scanf("%d", &tab[a][b]);
     for (b = 0; b< 4; b++)
      for (a = 0; a< 4; a++)
       printf("%d \n", tab[a][b]);
     }
    #include<stdio.h>
    void  main(void){
     int tab[4][4];
     int a,b;
     for (a = 0; a< 4; a++)
      for (b = 0; b< 4; b++)
       scanf("%d", &tab[a][b]);
     for (a = 0; a< 4; a++)
      for (b = 0; b< 4; b++)
       printf("%d \n", tab[3-a][b]);
     }

    Entrée: 1 7 4 2 5 9 12 8 20 30 2 7 6 4 11 6
    7. Quelle est la sortie de ces programmes?
    #include<stdio.h>
    void  main(void){
     int tab[4][4];
     int a,b;
     for (a = 0; a< 4; a++)
      for (b = 0; b< 4; b++)
       scanf("%d", &tab[a][b]);
     for (a = 0; a< 4; a++)
      for (b = 0; b< 4; b++)
       if ((tab[a][b] % 2) != (tab[b][a] % 2))
        tab[a][b] = 0;
     for (b = 0; b< 4; b++)
      for (a = 0; a< 4; a++)
       printf("%d \n", tab[a][b]);
     }
    #include<stdio.h>
    void  main(void){
     int tab[4][4];
     int a,b;
     for (a = 0; a< 4; a++)
      for (b = 0; b< 4; b++)
       scanf("%d", &tab[a][b]);
     for (a = 0; a< 4; a++)
      for (b = 0; b< 4; b++)
       if (tab[a][b] % 2) == 0)
        tab[a][b] = 1;
     for (a = 0; a< 4; a++)
      for (b = 0; b< 4; b++)
       printf("%d \n", tab[3-a][3-b]);
     }

    Entrée: 1 7 4 2 5 9 12 8 20 30 2 7 6 4 11 6
    8. Soit a un tableau d'entiers à M lignes et N colonnes. Ecrire une fonction qui a a comme paramètre d'entrée ainsi qu' un entier k et qui renvoie la somme des éléments de la k-ième colonne . La fonction est appelée pour 1£k£ N. (même question pour la k-ième ligne)


    Commentaires pascal.lafourcade@lsv.ens-cachan.fr