Cuestionarios de mp
![]() |
![]() |
![]() |
Título del Test:![]() Cuestionarios de mp Descripción: Bateria de preguntas |




Comentarios |
---|
NO HAY REGISTROS |
A partir del siguiente trozo de código, indica que aparecería en pantalla, sabiendo que las variables están almacenadas a partir de las siguientes direcciones: i=1000, pi=1004, ppi=1008. a. Con printf("%p",i): 1000. b. Con printf("%p",ppi): 1008. c. Con printf("%p",pi): 1000. d. Con printf("%i",pi): 2. Si una variable tiene que almacenar la dirección de la dirección de un carácter, ¿qué tipo debe tener su declaración?. a. char *. b. ** char. c. string **. d. char **. Indica cuál de las siguientes afirmaciones es correcta. a. La suma de dos punteros es otro puntero. b. La multiplicación de dos punteros da como resultado una nueva dirección de memoria. c. Se pueden asignar punteros de diferente tipo sin necesidad de hacer un casting. d. Si p es un puntero, p--, direcciona el elemento anterior. En el siguiente trozo de código: int main () { char s[10]="Hola"; //resto de instrucciones } Seleccione la correcta: a. Daría un error de compilación. b. Inicializa los primeros 5 caracteres de s. c. Inicializa sólo los 4 primeros caracteres de s con las letras de "Hola". d. Ninguna de las anteriores es cierta. En un programa se definen estas dos variables: int i= 10; *i_ptr; Si la variable i está almacenada en la posición de memoria 100, ¿qué valor contiene la variable i_ptr?. a. Su propia dirección de memoria. b. Ningún válido porque no ha sido inicializada. c. El valor 104 porque es la posición siguiente a la que ocupa i. d. El valor 100 que es la dirección de la variable i. ¿Qué valor se imprime por pantalla al ejecutar el siguiente programa, sabiendo que la variable i está almacenada a partir de la posición 2000?: int main () { int i; int * pi; i=2; pi=&i; printf("%d",*pi); }. a. Un valor indeterminado, porque la asignación pi=&i es incorrecta. b. 2. c. 2000. d. El formato de printf es incorrecto. Indica cuál de las siguientes afirmaciones es correcta. a. Si p, q y r son punteros a enteros, se puede usar la expresión r=p+q. b. Al declarar un puntero, se inicializa a NULL automáticamente. c. Si p es un puntero a int y q un puntero a float, sizeof(p) es distinto de sizeof(q). d. Los punteros se deben inicializar a NULL en la declaración. A partir del siguiente trozo de código, indica que aparecería en pantalla, sabiendo que las variables están almacenadas a partir de las siguientes direcciones: i=1000, pi=1004, ppi=1008: int main() { int i=2; int * pi=&i; int **ppi=π printf ("...") ; ... } Seleccione la correcta: a. Con printf("%p",&ppi) :1004. b. Con printf("%p",&pi) :1000. c. Con printf("%i",&pi) :1004. d. Con printf("%i",*pi) :2. Considera el siguiente fragmento de código: struct data { struct data *s; }; struct data a; struct data b; struct data c; ¿Qué tres líneas de código son necesarias para crear una estructura de datos circular (a.s apunta a b,b.s apunta a c y c.s apunta a a? Seleccione una: a. &a.s = b; &b.s = c; &c.s = a;. b. a.s = b; b.s = c; c.s = a;. c. a.s = &b; b.s = &c; c.s = &a;. d. a.s = *b; b.s = *c; c.s = *a;. ¿Cómo se define NULL en stdlib.h?. a. (char*). b. 0. c. NULL. d. No se define en ese fichero de cabecer. Se define un array de dos enteros de 4 bytes del tipo int array[2] y está almacenado a partir de la posición 100 de memoria. Se ejecuta el código: array[0] = 20; array[1] = 30; ¿Qué valor tiene el entero almacenado en la posición de memoria 104? Seleccione una: a. 30. b. 20. c. 104. d. 2. Sean las siguientes declaraciones: int * pi, x=5, y; int vector [] = {1,2,3,4,5}; int ** ppi; Seleccione una o más de una: a. d.printf ("%d",*(vector+2)); imprime 3. c. vector=&x;. b. y=*(vector+4). a.ppi=& pi ;. Sean las siguientes declaraciones: struct Foo { int campo 1; int* campo2; } struct Foo A, *p=&A; Para acceder a un campo de la estructura A a través de p utilizaremos: a. "p.nombreDelCampo" independientemente del tipo del campo. b. "p->nombreDelCampo" si el campo al quese accede es detipo puntero. c. "p->nombreDelCampo" independientemente del tipo del campo. d. "p.nombreDelCampo"si el campo al que se accede es de tipo puntero. Dado el siguiente código int y; int * x; y=10; x=&y; (*x) ++; ¿Qué valor tiene y después de ejecutar las sentencias?. a. 1. b. 10. c. 11. d. 9. Una variable entera puede tener delante: a. El operador *. b. El operador &. c. El operador & y el operador *. El tamaño de un puntero depende del tipo de datos al que apunta. Seleccione una: a. Verdadero. b. Falso. ¿Qué código de control se debe utilizar en printf() para imprimir un puntero? Seleccione una: a. %x. b. %c. c. %d. d. %p. Indica cuál de las siguientes afirmaciones es correcta. Seleccione una: a. Se pueden asignar punteros de diferente tipo sin necesidad de hacer un casting. b. Si p es un puntero, p--, direcciona el elemento anterior. c. La multiplicación de dos punteros da como resultado una nueva dirección de memoria. d. La suma de dos punteros es otro puntero. Determina qué salida por pantalla producirá el siguiente programa void p (int p1, int * p2) { p1 = p1 -1; *p2 = p2 +1; } int main () { int a,b; a=1; b=3; p(b,&a); printf ("a=&d b=&d ",a,b); } Seleccione una: a. a=2 y b=2. b. a=1 y b=2. c. Produciría un error en tiempo de ejecución. d. a=2 y b=3. Cuál de las siguientes sentencias es falsa?: a. El programa ar permite crear una biblioteca de cero. b. El programa ar permite actualizar los módulos de una biblioteca. c. El programa ar no permite añadir módulos nuevos a una biblioteca existente. d. El programa ar permite eliminar un módulo de una biblioteca. Una función recursiva que produzca llamadas recursivas infinitas desbordará: a. El montón o el heap. b. La pila o stack. c. El registro. d. El código. En un programa desde el inicio hasta su finalización, debemos realizar tantas invocaciones a "free" como la suma de invocaciones de malloc y calloc. Seleccione una: a. Verdadero. b. Falso. Qué problema puedes contemplar en el siguiente bloque de código? char * s = (char *) malloc (sizeof (char*)*6) ; strcpy (s,"Adios") ; printf ("%s ",s) ; Seleccione una: a. No se ha invocado a la función strcpy correctamente. b. La variable no se puede llamar s pues coincide con el modificador o formato de printf %s. c. No se ha invocado a la función malloc correctamente. d. Verdadero. Dada la siguiente definición de la función recursiva f(x) ¿Qué es lo que calcula? Si x=0 devolver 1 Si no devolver 2*f(x-1) Seleccione una: a. El logaritmo en base 2 de x. b. 2^x. c. No calcula nada ya que introduce una llamada recursiva infinita. d. 2x. Cuál de las siguientes afirmaciones sobre objetos dinámicos es falsa? Seleccione una. a. Los objetos dinámicos se alojan en el heap. b. El nº de objetos dinámicos se conoce en tiempo de compilación. c. Los objetos dinámicos se crean y se destruyen según las necesidades. d. El nº de objetos dinámicos puede variar durante la ejecución del programa. ¿De qué tipo es el argumento de free ()? Seleccione una: a. NULL. b. int*. c. void*. d. char*. Dada la declaración int cont=1; ¿Cuál es el contenido de la variable cont después de la llamada funcrecur (2,&cont) ;? void funcrecur (int n, int * cont) { *cont=*cont+1; if (n>0) { funcrecur (n-1,cont) ; funcrecur (n-1,cont) ; } } Seleccione una: a. 7. b. 8. c. 5. d. 6. Cuando un vector dinámico se crea dentro de una función, ¿la memoria reservada se destruye de forma automática al salir de la función? Seleccione una: a. Sólo si se ha hecho la reserva de memoria con malloc. b. Sí. c. Sólo si se ha hecho la reserva de memoria con calloc. d. No. Cuál de las siguientes afirmaciones es falsa? Seleccione una: a. Las librerías se crean con el comando ar. b. El uso de librerías perjudica el trabajo en equipo. c. El uso de librerías favorece la reutilización del código. d. El uso de librerías favorece el trabajo en equipo. Dada la siguiente definición de forma recursiva f(x), siendo x un número mayor que 0, ¿qué se calcula? int f(int x) { if (x==0) return 1; else return 1+f(x-1); } Seleccione una: a. x-1. b. x. c. No calcula nada ya que introduce una llamada recursiva infinita. d. x+1. Cuál de las siguientes afirmaciones sobre algoritmos recursivos es correcta? Seleccione una: a. Un algoritmo recursivo sólo puede tener un caso base. b. Un algoritmo recursivo es siempre más eficiente que su versión iterativa. c. Los parámetros de un algoritmo recursivo pueden ser punteros. d. Sólo puede haber una llamada al propio algoritmo. ¿Cuál de las siguientes afirmaciones es cierta? Seleccione una: Seleccione una: a. El uso de librerías favorece la reutilización de código. b. El uso de librerías perjudica el trabajo en equipo. c. El programa principal forma parte de la librería. d. Las librerías se crean con el comando lib. Sea la siguiente declaración: float**matriz; *(*matriz)+i) es equivalente a: Seleccione una: a. *(matriz[i]). b. (*matriz)[i]. c. matriz[0][i]. d. (matriz+i). ¿Es correcto el siguiente trozo de código? int main () { int nEle=2; int * pi; pi [0]=-1; pi [1]=1; ... } Seleccione una. a. Sí, porque se ha definido un vector a través del puntero pi, y a continuación se ha utilizado sin salirse del rango de dicho vector. b. No, porque se intenta utilizar pi utilizando []. c. No, ya que falta reservar memoria para nEle elementos. d. No, porque sólo se puede acceder a pi[1] y pi[2] porque nEle=2. Dada la siguiente definición de la función recursiva f(x), siendo x un número mayor que 0, ¿qué es lo que se calcula? int f (int x) { return x * f(x-1); } Seleccione una: a. Se produce un error en tiempo de compilación. b. x*(x-1). c. No calcula nada ya que introduce una llamada recursiva infinita. d. x!. Las llamadas "malloc" y "calloc" en caso de que no se produzca error devuelven: Seleccione una: a. El número de elementos que se han reservado correctamente. b. Un puntero al final de la memoria reservada. c. Un puntero al inicio de la memoria reservada. d. Un puntero al medio de la memoria reservada. Lo que hace que en un lenguaje de programación puede funcionar la recursividad es: Seleccione una: a. El poder repetir los identificadores de los métodos d. El uso de bucles para controlar el caso base. b. La rapidez del sistema ya que si no la recursividad sería demasiado lenta. c. La pila de llamadas al sistema. d. El uso de bucles para controlar el caso base. La declaración: int * número; Seleccione una: a. No implica reserva de memoria en el heap. c. Implica la reserva de un puntero a entero en el heap. c. Implica la reserva de un puntero a entero en el heap. d. Define una variable que se aloja en el heap. Si una llamada a la función realloc para ampliar la memoria falla, ¿qué ocurre con la zona antigua y los datos que hubiera almacenados en ella? Seleccione una: a. Ni el contenido ni la memoria se modifican. b. La memoria se libera y por lo tanto los datos se pierden. c. Los datos se mantienen, pero el puntero que los referencia toma el valor NULL. d. La memoria sigue reservada pero los datos se pierden. Para utilizar una biblioteca en nuestro programa necesitamos Seleccione una: a. El código de la biblioteca (fichero .a) y el fichero con los prototipos de las funciones incluidas en la biblioteca (fichero .h). b. El código objeto de las funciones (ficheros .o). c. El código de la biblioteca (fichero .a). d. El código fuente de las funciones (ficheros .c). En el tamaño del ejecutable obtenido al enlazar un programa principal con una biblioteca, no influye la estructura interna de la biblioteca (número de ficheros objetos, y/o número de funciones por fichero objeto. a. Falso, el tamaño dependerá de la organización de las funciones en ficheros objetos. Más ficheros objetos, con menos funciones cada uno, darán ejecutables más pequeños. b. Falso, el tamaño dependerá de la organización de las funciones en ficheros objetos. Cuantas más funciones haya por fichero objeto, menor será el tamaño del ejecutable. c. Verdadero. El tamaño del ejecutable sólo depende del programa principal. d. Falso. Cuantas más funciones tenga la biblioteca más grande será el tamaño del ejecutable. Si tenemos que reservar una nueva porción de memoria dinámica e inicializarla a 0, utilizaremos: Selecciones una: a. Calloc. b. Realloc. c. Free. d. Malloc. Cuándo enlazamos o "linkamos" un programa principal con una librería y obtenemos un ejecutable, el enlace sólo se realiza con los módulos .o en los que se encuentran las funciones utilizadas. Seleccione una: a. Verdadero. b. El usuario es quien indica en la compilación con qué módulos se enlaza. c. Depende de la librería. No es lo mismo, por ejemplo, la librería matemática que la librería gráfica. d. Falso. El enlace se realiza con todos los módulos de la librería. ¿Cuál de las llamadas a la función frecursiva devuelve los resultados correctos? long frecursiva (int x, int y) { if (x == 0) return 0; if (y==1) return 1; return (x*frecursiva(x,y-1)) ; }. a. frecursiva (2,7) devuelve 64. b. frecursiva (2,7) devuelve 512. c. frecursiva (1,7) devuelve 7. d. frecursiva (2,7) devuelve 128. Dadas las siguientes afirmaciones: 1. Siempre se prefiere la solución recursiva de un problema que su solución iterativa 2. La solución recursiva de un problema es más eficiente que la solución iterativa. a. 1 es falsa y 2 es cierta. b. 1 y 2 son ciertas. c. 1 es cierta y 2 es falsa. d. 1 y 2 son falsas. Dada la siguiente definición de la función recursiva f(x), siendo x un número mayor que 0, ¿qué calcula la función f(x)? int f(int x) { if (x == 1) return 1; else return 1 + f(x-1) } Seleccione una: a. x-1. b. No calcula nada ya que introduce una llamada recursiva infinita. c. x. d. x+1. Indica qué afirmación es cierta Seleccione una: a. La memoria dinámica reservada con calloc es liberada automáticamente. b. El compilador nos avisa cuando intentamos acceder a una zona de memoria no reservada. c. Cuando accedemos a una zona de memoria no reservada se produce unerros un tiempo de ejecución. d. La memoria dinámica reservada con malloc es liberada automáticamente. La función calloc () reserva memoria de la zona de: Seleccione una: a. Variable globales. b. Variables locales. c. La pila o stack. d. El montón o heap. ¿De qué zona de memoria toma malloc() el espacio que necesita? Selecciona una: a. La pila o stack. b. El código. c. Los datos. d. El montón o heap. Dada la siguiente definición de la función recursiva f(x) ¿Qué es lo que calcula? Si x=0 devolver 1 Si no devolver 2*f(x-1) Seleccione una: a. 2x. b. 2^x. c. El logaritmo en base 2 de x. d. No calcula nada ya que introduce una llamada recursiva infinita. ¿Cuál de las siguientes afirmaciones sobre objetos dinámicos es falsa? Seleccione una: a. El nº de objetos dinámicos puede variar durante la ejecución del programa. b. Los objetos dinámicos de alojan en el heap. c. Los objetos dinámicos se crean y se destruyen según las necesidades. d. El nº de objetos dinámicos se conoce en tiempo de compilación. Dada la siguiente definición de la función recursiva f(x), siendo x un número mayor que 0, ¿qué es lo que se calcula? int f(int x) { return x * f(x-1); } Seleccione una: a. x!. b. Se produce un error en tiempo de compilación. c. x*(x-1). d. No calcula nada ya que introduce una llamada recursiva infinita. ¿Cuál de las siguientes zonas de memoria tiene un tamaño conocido en tiempo de compilación? Seleccione una: a. pila. b. stack. c. heap. d. datos estáticos. La extensión por defecto de los ficheros de la biblioteca o librería es: Seleccione una: a. No tienen extensión. b. .a. c. .o. d. .lib. Indica cuál de las siguientes afirmaciones es correcta Seleccione una: a. Si mediante malloc reservamos n elementos e intentamos acceder al elemento n+5, se producirá un error en tiempo de ejecución. b. La suma de dos punteros es otro puntero. d. La función free puede liberar la memoria reservada en tiempo de compilación. d. La función free puede liberar la memoria reservada en tiempo de compilación. Para leer de forma segura una línea del fichero indicado por pfic y almacenarla en la variable s (char s[100];) se utiliza: Seleccione una: a. fgets (&s,100,pfic);. b. fgets(&s,99,pcif);. c. fgets(pfic,99,s);. d. fgets(s,100,pfic). Las funciones fgets() y gets() de C: Seleccione una: a. fgets() sustituye el '\n ' final por un '\0' ' y gets() no. b. gets() sustituye el '\n' final por un '\0'' y fgets() no. c. Ninguno sustituye el '\n ' final por un '\0'. d. Sustituyen el '\n' final por un '\0'. Cuando almacenamos un fichero, los datos: Seleccione una: a. Se almacenan directamente en el fichero físico. b. Se van almacenando en el buffer de salida y cuando éste está lleno se vuelcan al fichero físico. c. Si el fichero es de texto, se almacenaran directamente en el fichero físico. d. Si el fichero es binario, se almacenan directamente en el fichero físico. La función fclose() devuelve: Seleccione una: a. FILE *. b. int *. c. int. d. void. ¿Qué devuelve la función fread()? Seleccione una. a. Nada. b. El número de elementos que se quieren leer. c. La dirección a partir de la cual se almacena la línea leída desde el fichero (si se ha leído correctamente). d. El número de elementos leídos. ¿Qué parámetro se le pasa a fseek() para especificar un desplazamiento desde el final del fichero? Seleccione una: a. SEEK_END. b. END. c. FSEEK_END. d. FSK_END. La función ftell(): a. Devuelve el número de bytes de un fichero. b. Devuelve el número de registros de un fichero binario. c. Devuelve el número de bytes que hay desde el principio del fichero,hasta el registro en el cual estemos situados. d. Devuelve el número de registros de un fichero de texto. ¿Cuál es el valor de SEEK_END? Seleccione una: a. 0. b. 2. c. 3. d. 1. La función fgets() devuelve al ser ejecutada: Seleccione una: a. -1 si se alcanzó el final del fichero u ocurrió algún error. b. EOF para indicar el final del fichero. c. La dirección a partir de la cual se almacena la línea leída desde el fichero (si se ha leído correctamente). d. El número de caracteres leídos, incluyendo el y el \0. ¿Cuál de los siguientes flujos permite leer en del teclado? Seleccione una: a. Ninguna de las restantes es correcta. b. stdin. c. stderr. d. stdou. En el siguiente trozo de código, la variable pfic almacena: FILE * pfic; pfci=fopen ("prueba.txt","r"); Seleccione una: a.La dirección del fichero prueba.txt en el disco duro. b. La dirección del buffer o zona de memoria donde están almacenados todos los caracteres del fichero prueba.txt. c. La dirección de la estructura de control del fichero prueba.txt en memoria. d. La dirección de comienzo de la cadena de caracteres donde se ha almacenado el fichero prueba.txt en memoria. La siguiente función, ¿devuelve los datos del empleado j-ésimo del fichero binario de datos de empleados pasado como argumento? struct empleado datosEmpleado_j (char * nombreFichero, int j) { FILE * f; struct empleado emp1_aux; f=fopen (nombreFichero, "rb") ; fseek (f, (j-1)*sizeof(struct empleado), SEEK_SET) ; fread (&emp1_aux,sizeof (struct empleado),1,f); fclose(f) ; return (emp1_aux) ; } Seleccione una: a. No, la llamada a la función fread es incorrecta. b. No, es necesario incluir un bucle para leer los empleados del fichero que aparece antes del requerido. c. Sí, siempre que j tome valor entre 1 y el número de empleados en el fichero. d. No, la llamada a la función fseek es incorrecta. La función fopen() devuelve un: Seleccione una: a. FILE *. b. int. c. char *. d. void. La función fgets() devuelve al ser ejecutada: Seleccione una: a. EOF para indicar el final del fichero. b. La dirección del último carácter leído. c. El número de caracteres leídos, incluyendo el y el \0. d. NULL si se alcanzó el final del fichero u ocurrió algún error. ¿Cuál de las siguientes no es una característica de los ficheros binarios? Seleccione una: a. Contiene datos escritos como una secuencia de bits. b. Los datos no son legibles usando un editor de texto. c. Los datos se representan igual que en memoria. d. Contiene datos legibles para una persona. ¿Qué sentencia es correcta para abrir un fichero binario para escribir a continuación de su contenido? Seleccione una: a. fp=fopen("fichero.dat","rb");. b. fp=fopen("fichero.dat","ab");. c. fp=fopen("fichero.dat","wb");. d. fp=fopen("fichero.dat","rwb");. ¿Qué tipo devuelve la función fscanf()? Seleccione una: a. long. b. int. c. void. d. char *. El borrado físico: Seleccione una: a. No libera espacio en el fichero puesto que no borra el registro. b. Marca el registro que se quiere borrar. c. Elimine un registro de un fichero para que el espacio que ocupa en el fichero quede libre. d. Es una actualización del fichero binario. En el siguiente trozo de programa hay el siguiente error (o errores) int i; ... fscanf (stdin,"%d",i); Seleccione una: a. El formato para leer la variable i es incorrecto. b. No es stdin, sino stdout. c. No hay error. d. Falta poner la dirección de la variable i. El carácter que marca el final de un fichero es el Seleccione una: a. END. b. EOF. c. \n. d. \0. ¿Cuál de las siguientes no es una característica de un fichero de texto? Seleccione una: a. El final del fichero lo indica el carácter EOF. b. Puede ser generado y modificado con un editor de texto. c. Contiene datos legibles para una persona. d. Los datos se representan igual que en memoria. En un programa en C, la lectura de un fichero Seleccione una: a. Ninguna de las respuestas es correcta. b. No depende del soporte. El SO se encarga de ocultar el modo de lectura propio de cada dispositivo l. c. No depende del soporte salvo que sea un CD-ROM, en ese caso se lee de modo especia. d. Depende del soporte donde esté guardado, porque hay que indicarlo en el programa. Si queremos abrir un fichero binario para corregir un registro, lo abriremos: Seleccione una: a. Con la opción "ab". b. Con la opción "r+b". c. Con la opción "wb". d. En los ficheros de binarios no se puede realizar esta operación directamente. Para contar los registros de un fichero binario: Selecciona una: a. Hay que leerlo registro a registro obligatoriamente. b. No hace falta contar, el número de registros será el número de bytes del fichero. c. Se pueden contar con la función count(). d. Se pueden contar sin leer el fichero. ¿Qué valor devuelve fclose() si hay un error? Seleccione una: a. -1. b. EOF. c. 0. d. NULL. La siguiente función, sabiendo que j es menor o igual que el número de empleados del fichero ¿devuelve los datos del empleado j-ésimo del fichero binario de datos de empleados pasado como argumento? struct empleado datosEmpleado_j (char * nombreFichero, int j) { FILE * f struct empleado empl_aux; f=fopen (nombreFichero, "rb"); fseek (f, (j-l)*sizeof(struct empleado), SEEK_SET) ; fread(empl_aux,sizeof(struct empleado),1,f) ; fclose (f) ; return (empl_aux) ; } Seleccione una: a. No, es obligatorio abrir el fichero con la opción "r+b". b. No, la llamada a la función fread es incorrecta. c. No, es necesario incluir un bucle para leer los empleados del fichero que aparecen antes del requerido. d. No, la llamada a la función fseek es incorrecta, ya que devuelve los datos del empleado j+1. Si queremos abrir un fichero de texto para corregir un registro,lo abriremos: Seleccione una: a. En los ficheros de texto no se puede realizar esta operación directamente. b. Con la opción "a". c. Con la opción "r". d. Con la opción "w". La función printf() es equivalente a: Seleccione una: a. sprintf(stdin,...). b. fprintf(stdout,...). c. fprintf(stdin,...). d. sprintf(stdout,...). En un fichero de texto, los elementos se separan Seleccione una: a. Si son enteros no hace falta separarlos, el compilador sabe cuánto ocupa un entero. b. Cualquier carácter que decida el programador. c. El espacio en blanco. d. No hace falta separarlos, el compilador sabe cuánto ocupa un entero. La siguiente función, sabiendo que j es menor o igual que el número de empleados del fichero (1<=j<=nEmpleados) ¿devuelve los datos del empleado j-ésimo del fichero binario de datos de empleados pasado como argumento? struct empleado datosEmpleado_j (char * nombreFichero, int j) { FILE * f struct empleado empl_aux; f=fopen (nombreFichero, "rb"); fseek (f, j*sizeof(struct empleado), SEEK_SET) ; fread(empl_aux,sizeof(struct empleado),1,f) ; fclose (f) ; return (empl_aux) ; } Seleccione una: a. No, la llamada a la función fread es incorrecta. b. No, es necesario incluir un bucle para leer los empleados del fichero que aparecen antes del requerido. c. No, la llamada a la función fseek es incorrecta, ya que devuelve los datos del empleado j+1. d. No, es obligatorio abrir el fichero con la opción "r+b". Para leer de forma segura una palabra del fichero indicado por pfic y almacenarla en s (char s[100]) se utiliza: Seleccione una: a. fscanf(pfic,"%99s",&s);. b. fscanf(pfic,s,"%s");. c. fscanf(pfic,"%100s",s);. d. fscanf(pfic,"%99s",s). Para borrar un registro de un fichero de texto Seleccione una. a. Se necesitan tres ficheros (el original, un auxiliar y el de destino). b. Se necesitan dos ficheros (origen y auxiliar). c. Se desplazan todos los registros que están detrás del borrado, una posición hacia arriba. d. Sólo se puede el registro si éste es el último. ¿Cuál es el orden de utilización de un fichero? Seleccione una: . Abrir el fichero, cerrar el fichero, procesar el fichero. b. Abrir el fichero, procesar el fichero, cerrar el fichero. c. Abrir el fichero, procesar el fichero. d. Procesar el fichero, abrir el fichero, cerrar el fichero. ¿Cuántos argumentos tiene la función fseek()? Seleccione una: a. 1. b. 3. c. 4. d. 2. Si no se cierra un fichero Seleccione una. a. No se puede volver a abrir el fichero. b. El fichero puede quedar incoherente y perder datos. c. Se borran los elementos que tenga el fichero. d. No pasa nada. La función ftell() Seleccione una: a. Devuelve el número de registros de un fichero binario. b. Devuelve el número de bytes de un fichero. c. Devuelve el número de registros de un fichero de texto. d. Ninguna de las respuestas es cierta. ¿Es posible leer un fichero binario completo constituido por elementos del mismo tipo con una sola invocación a la función fread()? Seleccione una. a. Sería obligatorio usar un esquema iterativo para realizar múltiples lecturas con fread. b. Si conocemos el tamaño en bytes de los elementos contenidos en dicho fichero y la cantidad de elementos ubicados en el mismo sería posible con dos invocaciones de la función fread. La segunda de ellas serviría para ver si hemos llegado al final del fichero. c. No es posible. d. Sí, es posible si conocemos el tamaño en bytes de los elementos contenidos en dicho fichero y el número de elementos. ¿Qué función se usa para borrar un fichero? Seleccione una: a. delete(). b. remove(). c. unlink(). d. erase(). ¿Qué función se usa para renombrar un fichero? Seleccione una. a. name(). b. rename(). c. newname(). d. unname(). La función putchar() escribe un carácter en: Seleccione una: a. La salida de error estándar. b. El flujo que se la pasa como parámetro. c. La salida estándar. d. La pantalla. ¿Cuál de las siguientes sentencias es una cabecera de función main válida? Seleccione una: a. int main(int argc, char ** argv[]);. b. int main(int argc, char ** argv);. c. int main(int argc, char argv[][]);. d. int main(int *argc, char *argv[]). En un sistema informático que recibe las peticiones de los alumnos para inscribirse en grupos de prácticas, ¿Qué estructura de datos es más probable que utilices para almacenar las peticiones de cara a asignarles grupo? Seleccione una. a. Una lista. b. Una pila. c. Un fichero. d. Una cola. ¿Cuál de los siguientes métodos tiene eficiencia O(m)? Seleccione una: a. Burbuja. b. Quicksort. c. Inserción directa. d. Contabilización de frecuencias. Si argc vale 1, quiere decir que Seleccione una. a. Se ha llamado al programa sin argumentos. b. Ninguna de las anteriores es cierta. c. argv[0] contiene un. d. Se ha llamado al programa con un argumento. Si un ejecutable se invoca de la siguiente forma: p1.x datos1.txt dato2.txt Seleccione una: a. argv[1] es "p1.x". b. argv[0] es "3". c. argc vale 3. d. argc vale 2. ¿Cuál de las siguientes afirmaciones es cierta? Seleccione una: a. En una pila siempre se puede consultar directamente el primer y el último elemento. b. Ninguna de las afirmaciones es cierta. c. En una lista siempre se puede consultar directamente el primer y el último elemento. d. En una cola siempre se puede consultar directamente el primer y el último elemento. ¿En qué estructura de datos se puede aplicar la búsqueda secuencial? Seleccione una: a. En un array unidimensional desordenado. b. Todas las respuestas son ciertas. c. En una lista. d. En un array unidimensional ordenado. Dada la siguiente declaración de una estructura struct nodo { int dato; struck nodo * sig; } Seleccione una. a. La estructura nodo define un nodo a una lista doblemente enlazada. b. a y c son correctas. c. La estructura nodo define un nodo a una lista simplemente enlazada. d. La estructura nodo define un nodo a una lista simplemente enlazada circular. Suponiendo que se dan las condiciones necesarias para aplicar cualquiera de ellos, ¿qué algoritmo utilizarías si tu programa tuviera que encontrar a una persona dada en un listado de 200000 personas?. a. Búsqueda secuencial. b. Inserción directa. c. La burbuja. d. La búsqueda binaria o dicotómica. Si argc vale 0, quiere decir que Seleccione una: a. Se ha llamado al programa sin argumentos. b. Ninguna de las anteriores es cierta. c. argv[0] contiene un \n. d. Se ha llamado al programa con un argumento. Para escribir los elementos de una lista en forma directa: Seleccione una: a. Se puede implementar usando la recursividad, escribiendo los datos después de la llamada recursiva. b. Es imprescindible utilizar un esquema iterativo. c. Se puede realizar introduciendo una llamada recursiva dentro de un esquema while, que controle el final de la lista. d. Ninguna de las afirmaciones es cierta. ¿Cuál de los siguiente métodos tiene eficiencia O(nlogn)? Seleccione una: a. Quicksort. b. Burbuja. c. Contabilización de frecuencias. d. Inserción directa. Si tuviésemos que ordenar los datos del censo español (45 millones de personas), por los apellidos, ¿qué método escogerías? Seleccione una. a. Contabilización de frecuencias. b. Quicksort. c. Burbuja. d. Inserción binaria. Analiza el código de la siguiente función e indica que permite realizar: void function (char ** v, int n, char * item) { int orden; for (orden=n-1;orden>=0;orden--) { if (!strcmp (v [orden] , item)) printf ("Fin function=> %s ",item) ; else printf ("Continuo "); } } Seleccione una. a. Búsqueda dicotómica. b. Búsqueda lineal teniendo en cuenta que puede haber elementos repetidos. c. Búsqueda lineal. d. Ordenación descendente por inserción. Analiza el código de la siguiente función e indica qué permite realizar: void func(char ** v, int n) { aaaint ind1,ind2; aaachar * interc; aaafor(ind1=0;ind1<n;ind1++) { aaaaaafor(ind2=ind1+1;ind2<n;ind2++){ aaaaaaaaaif (strlen(v[ind2]<strlen(v[ind1])) { aaaaaaaaaaaainterc=v[ind1]; aaaaaaaaaaaav[ind1]=v[ind2]; aaaaaaaaaaaav[ind2]=interc; aaaaaaaaa} aaaaaa} aaa} } (las a no sirven de nada). a. Ordenación por inserción. b. Ordenación por intercambio. c. Ordenación por selección. d. Búsqueda lineal con elementos repetidoa. Dado el array {1,2,6,3,4,5,6,7} ¿cuántas veces intercambiaría la posición de un par de elementos el algoritmo burbuja. a. 0. b. 1, ya que sólo hay un elemento desordenado. c. 3. d. 4. Suponiendo que p, q y lista son variables de tipo puntero a un nodo de una lista simplemente enlazada, y que lista apunta al primer nodo de una lista no vacía. ¿Qué afirmación es correcta después de ejecutarse el siguiente fragmento de programa? p=lista; q=lista; while(p->sig!=NULL) { aaaq=p; aaap=p->sig; } q=lista; Seleccione una: a. p y q apuntan a NULL. b. p apunta a NULL y q al último nodo. c. p apunta al último nodo y q también. d. p apunta al último nodo de la lista y q al primer nodo. ¿Cuál de los siguientes NO es un algoritmo de búsqueda?. a. Secuencial. b. Inserción directa. c. Binaria. d. Dicotómica. El parámetro formal char * argv[] de la función main es: a. Una cadena de carácteres. b. Un puntero a un array de un carácter. c. Un puntero al primer elemento de un array de caracteres. d. Una estructura de punteros. ¿Cuál de las siguientes afirmaciones es falsa. a. Para vectores con pocos elementos, no hay diferencia en cuánto a tiempo entre el quicksort t y los métodos de órden O(n ). b. El método de ordenación burbuja es el peor de los métodos estudiados. c. El método de la sacudida es una variante mejorada y mucho más más eficiente del método de la burbuja. d. El método de ordenación por selección es de orden O(n. Dada una lista simplemente enlazada y un puntero al primer nodo cuyo identificador es lista y su tipo Nodo * ¿Qué prototipo es el más adecuado? Seleccione una: a. void recorrerLista(Nodo ** lista);. b. void recorrerLista(Nodo * lista, int dato);. c. void insertarNodo (Nodo * lista, int dato);. d. void insertarNodo(Nodo ** lista, int dato);. Si un programa recibe como argumentos (en la línea de órdenes) dos números enteros con la intención de sumarlos. a. Tendrá que convertirlos antes de sumarlos usando la función atof(). b. Podrá sumarlos directamente. c. Tendrá que convertirlos antes de sumarlos, usando la función atoi(). d. Podrá sumarlos siempre que se asigne el resultado a una variable entera. Para escribir los elementos de una lista en forma inversa: a. Se puede implementar usando la recursividad, sin ninguna estructura de datos adicional. b. Es imprescindible almacenar los datos en una lista auxiliar. c. Se puede realizar introduciendo una llamada recursiva dentro de un esquema while, que controle el final de la lista. d. Ninguna de las respuestas es cierta. En el caso de que tuvieses que almacenar un conjunto de elementos cuyo tamaño varíe durante la ejecución del programa. a. Usaría un vector estático. b. Usaría un vector dinámico reservado con malloc. c. Usaría una lista. d. Usaría un vector dinámico reservado con calloc. ¿De qué tipo es el primer argumento de main()?. a. char. b. int. c. void *. d. char *. Cuál de las siguientes afirmaciones es cierta?. a. Un vector no presenta ninguna ventaja frente a una lista. b. Siempre es deseable usar un vector frente a una lista. c. Ninguna de las respuestas es cierta. d. Una lista no presenta ninguna ventaja frente a un vector. ¿Cuál de las siguientes afirmaciones es falsa?. a. Para vectores con pocos elementos, no hay diferencia en cuánto a tiempo entre el quicksort t y los métodos de órden O(n ). b. El método de ordenación por selección es de orden O(n ). c. El método de ordenación burbuja es el peor de los métodos estudiados. d. El método de contabilización de frecuencias es aplicable en cualquier condición. ¿Cuál de las siguientes afirmaciones es cierta?. a. Una cola es una estructura LIFO. b. Un array es una estructura LIFO. c. Una pila es una estructura LIFO. d. Una lista es una estructura LIFO. ¿De qué tipo es el segundo argumento de main()?. a. char. b. char **. c. void **. d. char. Para hacer un programa que permita imprimir por pantalla los números que un usuario ha introducido por teclado, pero en orden inverso al original, la estructura de datos que aplicaría de forma más natural es: a. Una lista. b. Una pila. c. Una cola. d. Un fichero. ¿Cuál de los siguiente métodos tiene eficiencia O(n^2 )?. a. Inserción directa. b. Inserción binaria. c. Sacudida. d. Todas la respuestas son ciertas. |