Programacion ejercicios
Daniel HernandezTrabajo29 de Agosto de 2015
4.492 Palabras (18 Páginas)257 Visitas
____________________________________________________________________________________
APELLIDOS:
NOMBRE:
CARRERA:
____________________________________________________________________________________
INFORMACION SOBRE LA FORMA DE REALIZAR EL EXAMEN
=====================================================
Después del enunciado de cada pregunta, existen cuatro opciones numeradas: 01) 02) 04) 08).
El alumno debe contestar cada pregunta colocando DOS cifras decimales en el recuadro RESPUESTA, que correspondan con la SUMA de las opciones que considere correctas.
Ejemplos:
-- Si se considera que son correctas las opciones 01) y 04), se contestará con:
RESPUESTA: | 0 | 5 |
-- Si se considera que son correctas las opciones 01), 02) y 08), se contestará con:
RESPUESTA: | 1 | 1 |
-- Si se considera que sólo es correcta la opción 08), se contestará con:
RESPUESTA: | 0 | 8 |
-- Si se considera que ninguna opción es correcta, se contestará con:
RESPUESTA: | 0 | 0 |
NOTA:
Suponer que en los códigos fuente de todos los enunciados están ya incluidos mediante directivas "include" todos los ficheros de cabecera que sean necesarios.
01) Indicar cual de las siguientes funciones es la que presenta por pantalla la cadena referenciada por "n", pero escrita al revés.
01) void escribir (char *n)
{ if (*n!=0) { escribir (n+1); putchar (*n); } }
02) void escribir (char *n)
{ if (*n!=0) { escribir (n++); putchar (*n); } }
04) void escribir (char *n)
{ if (*n!='\0') { escribir (n+1); putchar (*n); } }
08) void escribir (char *n)
{ if (*n!=0) { escribir (n+1); putchar (n); } }
RESPUESTA: |
____________________________________________________________________________________
02) Al ejecutar el siguiente programa:
main()
{
int a[8] = { 1,2,3,4,5,6,7,8 }, *p = &a[5], v;
v = (*p-- = 4);
printf ( "v=%d, a[5]=%d", v, a[5] );
}
01) Imprime v=4, a[5]=4, y el puntero "p" acaba apuntando a la dirección de a[4]
02) Imprime v=5, a[5]=4, y el puntero "p" acaba apuntando a la dirección de a[4]
04) Imprime v=4, a[5]=3, y el puntero "p" acaba apuntando a la dirección de a[4]
08) Imprime v=4, a[5]=5, y el puntero "p" no se modifica pues se decrementa el valor de a[5]
RESPUESTA: |
____________________________________________________________________________________
03) En el arbol binario de búsqueda siguiente: 4
2 10
1 3 8 12
¿en qué orden se han podido introducir los datos? 11 13
01) 4 2 10 12 8 11 13 1 3
02) 4 2 10 8 12 13 11 3 1
04) 4 2 10 11 8 12 1 3 13
08) 1 2 3 4 8 10 11 12 13
RESPUESTA: |
04) Completar la función siguiente para conseguir que se impriman números enteros en pantalla sin usar la función "printf":
void imprimir ( int N )
{
if ( N<0 )
{ putchar ('-'); N = -N; }
if ( N >= 10 )
/* COMENTARIO A SUSTITUIR */
putchar ( N%10 + '0' );
}
01) putchar ( N/10 + '0' );
02) imprimir ( N/10 );
04) imprimir ( N/10 + '0' );
08) putchar ( N/10 );
RESPUESTA: |
____________________________________________________________________________________
05) En un fichero en disco disponemos de las notas correspondientes a una determinada asignatura. Cada registro del fichero es de la forma: typedef struct r
{ char nombre[60];
float nota;
} tregnota;
Completar el desarrollo de la función "numregs" que recibe como argumento el nombre de un fichero y devuelve como resultado la cantidad de registros del tipo "tregnota" que contiene, o bien un 0 si no se puede abrir el fichero, sustituyendo el comentario indicado.
int numregs (char *nombrefich)
{
int tam;
FILE *pf;
if ((pf = fopen (nombrefich, "rb") == NULL )
{ printf ("No se puede abrir el fichero.\n"); return 0; }
/* COMENTARIO A SUSTITUIR */
fclose (pf);
return tam;
}
01) fseek (pf, 0L, 2); tam = (int)(ftell (pf))/sizeof (tregnota);
02) fseek (pf, 0L, SEEK_END); tam = (int)(ftell (pf))/sizeof (tregnota);
04) fseek (pf, 0L, SEEK_END); tam = (int)(ftell (pf))*sizeof (tregnota);
08) fseek (pf, 0L, SEEK_SET); tam = (int)(ftell (pf))/sizeof (tregnota);
RESPUESTA: |
06) Se quiere escribir un programa que reciba dos números ("n" y "k") a través de la linea de órdenes y que calcule la raiz "n-ésima" de "k". Se supone que la función que calcula la raiz n-ésima ya existe, y su declaración prototipo es float raiz ( float k, int n ).
La forma de llamar al programa desde el Sistema Operativo será: raiz 7 2187
Para conseguir esto, indicar qué lineas han de ser sustituidas por el comentario en el siguiente programa:
main ( int argc, char *argv[ ] )
{
int n; float k;
if ( argc != 3 ) { printf ("Forma de uso: %s n k", argv[0] ); exit (-1); }
n = atoi ( argv[1] );
if ( n<=1) { printf ("Parámetro %s fuera de rango\n", argv[1] ); exit (-1); }
/* COMENTARIO A SUSTITUIR */
}
01) k = atof ( argv[2] ); printf ("%f\n", raiz (k,n));
02) k = argv[2]; printf ("%f\n", raiz (k,n));
04) k = atof ( argv[1] ); printf ("%f\n", raiz (k,n));
08) k = atof ( argv[2] ); k = raiz (k,n); printf ("%g\n", k);
RESPUESTA: |
____________________________________________________________________________________
07) Si se crea un arbol binario de búsqueda con los valores 50, 20, 10, 90, 70, 40, 80 , en el que cada nodo está compuesto por una estructura del tipo struct nodo
{ int dato;
struct nodo *izqdo;
struct nodo *dcho;
}
...