Certamen 1 Lenguaje de Programación
Jorge López R.

1. (1 punto)
 
a) Nombre  los componentes del Sistema Procesador y describa la función de cada uno de ellos. b) Mediante un diagrama, explique el proceso paso a paso para obtener un programa ejecutable a partir de dos archivos fuente.
c) defina y de un ejemplo de: identificador, palabra reservada, variable global y puntero . d) Describa la diferencia entre una variable local y una variable argumento de una función.
2.(2 puntos) Qué imprimen los siguientes programas:
 
a) 
struct s {
      char m[40];
};
void estructura(struct s b);
main(){
     struct s a;
     strcpy(a.m,"Hola");
     estructura(a);
  printf("%s\n",a.m);
}
void estructura(struct s b){
     printf("%s\n",b.m);
     strcpy(b.m,"Chao");
     printf("%s\n",b.m);
}
b)
int dato[2];
main(){
     int x;
  x = almacen(999);
       printf("%d\n",x);
       x = almacen(888);
       printf("%d\n",x);
       x = almacen(777);
       printf("%d\n",x);
       x = almacen(666);
       printf("%d\n",x);
       x = almacen(555);
       printf("%d\n",x);
}
int almacen(int entrada){
        int salida;
     salida = dato[1];
       dato[1] = dato[0];
      dato[0] = entrada;
      return salida;
}
c)
main(){
 int x;
  x = almacen(999);
       printf("%d\n",x);
       x = almacen(888);
       printf("%d\n",x);
       x = almacen(777);
       printf("%d\n",x);
       x = almacen(666);
       printf("%d\n",x);
       x = almacen(555);
       printf("%d\n",x);
}
int almacen(int entrada){
     int dato[2]; 
   int salida;
     salida = dato[1];
     dato[1] = dato[0];
     dato[0] = entrada;
     return salida;
}
d)
main(){
  int x=333;
    int *y;
y = &x;
  *y = *y + 1;
    printf("%d\n", x);
}
e)
struct s {
      int x;
  struct s *p;
};
main(){
  struct s a, b;
  a.p = &b;
  a.x = 555;
  b.p = &a;
  b.x = 222;
  printf("%d\n", a.p->x);
  printf("%d\n", a.p->p->x);
}
3. (2 puntos)
 
a) Crear una función  que ordene de menor a mayor el contenido de tres variables enteras que son locales a las funciones que la llaman. El prototipo de debe ser:
void ordena(int ..., int ..., int ....);
Se debe reemplazar correctamente los puntos suspensivos de los parámetros del prototipo .
b) Crear una función que retorne el menor dígito decimal de un número almacenado en una variable entera. El prototipo debe ser:

int menor(int n);

4. (2 puntos)

Hacer un programa que lea por teclado un string de unos y ceros, debe imprimir "aceptar" si el string tiene un número par de dígitos y es simétrico. Ej.: 11000011,     00011000