
\documentclass[10pt]{article} 
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fourier}
\usepackage{alterqcm}
\usepackage{fullpage}
\usepackage{longtable}
\usepackage{verbdef}
\usepackage[frenchb]{babel}

\pagestyle{empty}
%--------------------------------------------------------------
\begin{document}
%--------------------------------------------------------------
\parindent=0pt
\begin{center}
Contrôle de langage C \\

\vspace{5mm}
Nom : \hspace{5cm}
Prénom :   \\

\vspace{5mm}
{\small Pour chaque question, 3 réponses sont proposées. Une et une seule est correcte. A vous de la trouver et de \textbf{noircir la case correspondante}. 
Bonne réponse = +1 point. Pas de réponse = 0 point. Mauvaise réponse = -0.5 point.}
\begin{alterqcm}[lq=90mm,title,num=true,alea,long] 
% rajouter ou enlever l'option correction pour voir ou non les corrections :-)
%--------------------------------------------------------------

\AQquestion{Quel était le langage précurseur du langage C ?}
{{le Fortran},%
 {le langage B},%
 {le Basic},%
 {X},%
 {Y}}
%--------------------------------------------------------------
\verbdef\arg|int a = 3 ^ 4 ;|
\AQquestion{\arg}
{{élève 3 à la puissance 4},
 {fait un OU exclusif entre 3 et 4},
 {n'est pas une instruction C}}
%--------------------------------------------------------------
\AQquestion{Quelle est la bonne syntaxe pour décaler de 8 bits à gauche l'entier \texttt{a} ?}
{{\texttt{b = lshift(a, 8) ;}},
 {\texttt{b = 8 << a ;}},
 {\texttt{b = a << 8 ;}}}
%--------------------------------------------------------------
\AQquestion{Le programme complet :	\\
\texttt{int main() \\
~~\{ printf ("bonjour") ; return 0 ; \}}}
{{affiche \texttt{bonjour}},
  {donne une erreur à la compilation},
 {donne une erreur à l'exécution}}
%--------------------------------------------------------------
\verbdef\arg|float tab[10]|
\verbdef\propa|*tab|\global\let\propa\propa
\verbdef\propb|&tab|\global\let\propb\propb
\verbdef\propc|tab|\global\let\propc\propc
\AQquestion{Soit la déclaration \arg ; \\Le premier réel du tableau  est \ldots}
{{\propa},
 {\propb},
 {\propc}}
%--------------------------------------------------------------
\AQquestion{La ligne \texttt{printf("\%c", argv[2][0]) ;} du \texttt{main} de  \texttt{monProg} exécuté ainsi : \texttt{monProg parametre}}
{{affiche \texttt{p}},
 {n'affiche rien},
 {peut provoquer un plantage}}
%--------------------------------------------------------------
\AQquestion{Quelle est la taille en mémoire d'un \texttt{long int} ?}
{{4 octets},
 {8 octets},
 {ça dépend \ldots}}
%--------------------------------------------------------------
\AQquestion{Suite à la déclaration \texttt{int * i} ;}
{{\texttt{*i} est une adresse},
 {\texttt{*i} est un entier},
 {\texttt{*i} est un pointeur}}
%--------------------------------------------------------------
\AQquestion{Suite à la déclaration \texttt{char tab[12]} ;}
{{\texttt{\&tab} est l'adresse du tableau},
 {\texttt{\&tab} est le pointeur sur le tableau},
 {\texttt{\&tab} ne signifie rien}}

%--------------------------------------------------------------
\AQquestion{Un des choix suivants n'est pas une bibliothèque standard du C}
{{\texttt{stdlib}},
 {\texttt{stdin}},
 {\texttt{math}}}
%--------------------------------------------------------------
\AQquestion{La syntaxe complète de la fonction \texttt{main} est \ldots}
{{\texttt{int main(int argc, char* argv)}},
 {\texttt{int main(int argc, char argv*[])}},
 {\texttt{int main(int argc, char* argv[])}}}
%--------------------------------------------------------------
\AQquestion{Le programme complet :
\texttt{int main()\\
\{ char a[2]="x" ; char b[2]="y" ; \\
~~return (a[0] == b[0]) ; \}
}}
{{comporte 0 erreur},
 {comporte 1 erreur},
 {comporte 2 erreurs}}

%--------------------------------------------------------------
\AQquestion{Pour libérer une zone mémoire allouée dynamiquement en C, on utilise la fonction \ldots}
{{\texttt{delete}},
 {\texttt{clear}},
 {\texttt{free}}}

%--------------------------------------------------------------
\AQquestion{L'expression  \texttt{val char[32] ; }}
{{est syntaxiquement incorrecte},
 {déclare une chaîne},
 {déclare un tableau}}

 %--------------------------------------------------------------
\verbdef\arga|char s[10] ; int i ;|
\verbdef\argb|scanf("%d, %s", \&i, s) ;|
\AQquestion{On compte dans les lignes suivantes :\\
\arga \\
\argb}
{{0 erreur de compilation},
 {1 erreur de compilation},
 {2 erreurs de compilation}}
%--------------------------------------------------------------
\AQquestion{Une variable globale est \ldots}
{{\texttt{static}},
 {stockée dans la pile},
 {initialisée avec des zéros par défaut}}
%--------------------------------------------------------------
\AQquestion{La portée d'une variable locale est \ldots}
{{la fonction},
 {le module},
 {le bloc}}
%--------------------------------------------------------------
\AQquestion{La ligne \texttt{int c = argv[1] + argv[2] ;}
 du \texttt{main} de  \texttt{monProg} exécuté ainsi : 
\verb!monProg 123 456!}
{{affecte 579 à \texttt{c}},
 {donne une erreur à la compilation},
 {affecte une valeur indéterminée à \texttt{c}}}
\end{alterqcm}
\end{center}
\end{document}

% utf8
% pdflatex
% Pascal Bertolino Alain Matthes
%