TÉCNICAS DE PROGRAMACIÓN

Anuncio
TÉCNICAS DE PROGRAMACIÓN
EXAMEN I SUSTITUTO
19/06/06
1. Dadas las siguientes inicializaciones:
int i = 21, j = 9;
char c = 'c', k[] = "ABC", *q = k + 1;
dé el resultado de las siguientes expresiones de C (asuma que el código de caracteres es
ASCII):
a. i/5 * j/2;
b. j%2 ? i / (j – 1) : j / (i – j);
c. c++
d. *(k + 3)
e. (*q) + 1
f. *(q + 2)
g. (3 * (i – j)) / 5 == 3 * ((i – j) / 5)
2. El siguiente programa intenta invertir una cadena; si la cadena no viene como
primer argumento se supone que debe leerla de la entrada estándar (con scanf).
Encuentre los errores.
void invertir(char s[]) {
int longitud = 0, i, c;
while(s[longitud] != '\0')
longitud++;
for(i = 0; i < longitud / 2; i++) {
c = s[i];
s[i] = s[longitud – i];
s[longitud – i] = c;
}
}
main(int argc, char *argv[]) {
char c = 'nada';
char kdna[3] = "abc";
char s[1000];
if(argc < 1) {
printf("Ingrese línea a invertir\n");
scanf("%s", s);
}
invertir(s);
printf(s);
}
3. Encuentre los errores en el siguiente código que se supone debe manejar una pila.
int MAXLENG = 1000;
int tope = 0;
void push(char valor) {
if(tope < MAXLENG) {
pila[tope] = valor;
tope++;
}
}
char pop() {
if(tope == 0) {
printf('la pila está vacía');
return 0;
}
else {
valor = pila[tope];
tope--;
return valor;
}
}
4. Declare una variable tipo apuntador a función que retorna int y recibe apuntador a
char.
5. Escriba un programa que (suponiendo que ya existen las funciones que manejan una
pila) lea caracter por caracter de la entrada estándar y, si es llave (paréntesis, corchete o
llave) abierta lo introduzca en la pila y, si es llave (paréntesis, corchete o llave) cerrada,
saque la llave del tope y verifique si corresponde a la que se acaba de cerrar y si no
corresponde imprima un error y finalice.
6. Escriba un programa que reciba dos cadenas y retorne una nueva cadena donde el
primer caracter sea el primero de la primera cadena, el segundo sea el primero de la
segunda cadena, el tercero sea el segundo de la primera, el cuarto sea el segundo de la
segunda, y así sucesivamente. Es decir intercale una cadena con la otra. Si una cadena se
acaba primero que la otra, el resto de los caracteres de la nueva cadena vendrán sólo de la
cadena que quede.
7. Escriba un programa que reciba un arreglo de enteros, junto con su longitud y lo
ordene de forma ascendente. No intente hacer un algoritmo eficiente, simplemente haga el
algoritmo más simple que esté seguro que hace el trabajo.
Descargar