Conteste cuidadosamen - Universidad Tecnológica de la Mixteca

Anuncio
UNIVERSIDAD TECNOLÓGICA DE LA MIXTECA
2do. Examen Parcial. 18 de diciembre del 2002.
Grupo 104-A. Nombre:
Conteste cuidadosamente el siguiente cuestionario, recuerde que sus respuestas deben ser
exactas debido a que no existen medios puntos. No esta permitido hablar con sus
compañeros por ningún motivo, si necesita algo consúltelo con el profesor. Dispone de
1 hora y 45 minutos para resolver el examen.
1.- El siguiente fragmento de código contiene errores, rescriba el código correctamente.
int i;
for( i = 0; i > 10; i++);
printf(“%f\n”, i);
2.- Explique que es lo que realiza el siguiente programa. Escriba un comentario junto a
cada linea del mismo.
1#include <stdio.h>
2#include <string.h>
3void main(){
4 char a[50] , b[50], c[50];
5 int r, i, j;
6 printf(“Escribe la frase\n”);
7 gets(a);
8 for(i=0, j = 0; a[i] != ‘\0’; i++)
9
if(a[i] == ‘ ‘) continue;
10 else{
11
b[j] = a[i];
12
j++;
13 }
14 b[j] = ‘\0’;
15 for(i = 0, j = strlen(b) - 1; i < strlen(b); i++, j--)
16
c[i] = b[j];
17 c[i]= ‘\0’;
18 r = strcmp(b, c);
19 if ( r == 0) printf(“\nBravo\n”);
20 else printf(“\nNi modo\n”);
21}
3.- Rescriba el código del algoritmo de la burbuja para que funcione con la siguiente
estructura:
struct tienda{
char producto[20];
char marca[30];
int precio;
};
struct tienda oficina[20];
debe ordenar los datos por marca.
4.-Diga que es lo que realiza el siguiente codigo: y haga una prueba de escritorio:
for(i =1; i<=5; i++){
for(j=0; j < i; j++)
printf(“ “);
for(k=5; k>=i; k--)
printf(“*“);
}
5.- Indique que hacen las funciones de la siguiente página. Ponga comentarios junto a cada
línea. ¿Cuál es la condición para que trabajen correctamente?
int funcion1(char L){
if(L == 'A' || L == 'E' || L == 'I' || L == 'O' || L == 'U')
return 1;
else
return 0;
}
char funcion2(char *a){
int i;
i = 1;
while(!funcion1(a[i])) i++;
return a[i];
}
Rescate.- Diga cual es la nacionalidad de Krustie.
Cuando se escala una pared muy alta, lo peor que podemos hacer es mirar hacia abajo.
SOLUCION
1.- int i;
for( i = 0; i < 10; i++);
printf(“%d\n”, i);
2.- (1) Librería para usar printf y gets.
(2) Librería para usar strlen y strcmp.
(3) Inicio de la función principal.
(4) Declaración de 3 cadenas a, b y c.
(5) Declaración de los índices para las cadenas.
(6) Mensaje para solicitar datos.
(7) Leer cadena del teclado y guardarla en a.
(8) Ciclo para recorrer la cadena a hasta su final. Iniciar índices al inicio. Incrementar índice de la cadena a
para cambiar de letra.
(9) Saltar espacios en blanco.
(10)(11)(12)(13) Copiar letra de a en b, cambiar de posición índice de cadena b para copiar la siguiente letra.
(14) Terminar la cadena b con el carácter nulo. La cadena b es la cadena a pero sin espacios.
(15)(16) Ciclo para copiar la cadena b en la cadena c pero al revés. La cadena b se recorre desde el final
(posición igual a strlen(b) – 1) y la cadena c desde el inicio. Se incrementa el índice de c y se disminuye el
índice de b.
(17) Se termina la cadena c con el carácter nulo y la cadena c es la cadena b pero al revés.
(18) Se comparan las cadenas b y c para ver si son iguales.
(19)(20) Si son iguales la comparación es igual a cero y entonces imprime eureka. Si no son iguales imprime
ni modo.
(21) Fin de la función principal y del programa.
3.-
struct tienda t;
do{
bandera = 0;
for(i = 0; i < N-1; i++)
if(strcmp(oficina[i].marca, oficina[i+1].marca)>0){
t = oficina[i];
oficina[i] = oficina[i+1];
oficina[i+1] = t;
bandera = 1;
}
}while(bandera == 1);
4.i j
1
k
0
Impresión en pantalla
i
j k Impresión en pantalla
4
0
1
‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘
‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘
4 ‘ ‘**
2
‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘
3 ‘ ‘***
2 ‘ ‘****
3
‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘’ ‘
5 ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘’ ‘*
‘‘
5 ‘ ‘*
1 ‘ ‘*****
2
0
1
‘ ‘*****’ ‘
‘ ‘*****’ ‘’ ‘
0
1
‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘’ ‘**’ ‘
‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘’ ‘**’ ‘’ ‘
5 ‘ ‘*****’ ‘’ ‘*
2
‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘’ ‘**’ ‘’ ‘’ ‘
4 ‘ ‘*****’ ‘’ ‘**
3 ‘ ‘*****’ ‘’ ‘***
3
4
‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘’ ‘**’ ‘’ ‘’ ‘’ ‘
‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘’ ‘**’ ‘’ ‘’ ‘’ ‘’ ‘
2 ‘ ‘*****’ ‘’ ‘****
3
4 ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘’ ‘**
0
1
‘ ‘*****’ ‘’ ‘****’ ‘
‘ ‘*****’ ‘’ ‘****’ ‘’ ‘
2
‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘
5 ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘*
5
5 ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘’ ‘**’ ‘’ ‘’ ‘’ ‘’ ‘*
4 ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘**
3 ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***
Imprime lo siguiente ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘’ ‘**’ ‘’ ‘’ ‘’ ‘’ ‘*, sin saltarse de
linea.
5.//Esta funcion devuelve verdadero si la letra que se le pasa como parámetro es vocal y falso si //no
int funcion1(char L){
if(L == 'A' || L == 'E' || L == 'I' || L == 'O' || L == 'U')//Comparar la letra con todas las vocales mayúsculas
return 1;//Devuelve verdadero si es una de las vocales
else
return 0;//Devuelve falso en caso contrario
}
//Esta función busca la primer vocal interna en una cadena que se le pasa como parámetro
char funcion2(char *a){
int i;//índice para recorrer la cadena
i = 1;//comenzar en la segunda posición(la primera es cero), por ello busca la primer vocal interna
while(!funcion1(a[i])) i++;//mientras no se localice la vocal, seguir buscando en las letras siguientes
return a[i];//devolver como resultado la primer vocal interna
}
La condición para que funcionen es que la cadena en la función2 sea convertida
previamente a mayúsculas.
Descargar