Ejercicios página 70 1) Identificar los errores en cada uno de los siguientes literales, pudiera existir más de un error por cada enunciado. Luego corregir esos errores:
b) Scanf (“%d”, un_entero); scanf (“%d”, un_entero);
e) printf (“Residuo de %d dividido por %d es\n”, x, y, x % y); printf (“%d %% %d es\n”, x % y); h) printf (“El valor ingresado es: %d/n, &valor); printf (“El valor ingresado ingresad o es: %d/n”, &valor);
2) Indicar ¿Cuáles de los siguientes literales son verdaderas y falsos? Explicar su respuesta: a) La función printf (“a=5”); es un ejemplo típico de una expresión de asignación. FALSO Para signar una valor en la función printf primero se lo hace con los especificadores de formatos printf (“%d”, 5); c) La función scanf (“Ingrese un número: %d”, &numero); puede ingresar un dato con un mensaje. FALSO Ya que para leer una cadena de caracteres caract eres o texto, porque con el primer espacio en blanco termina el proceso de lectura. d) La función scanf (“%s”, &nombre); ingresa una cadena declarada como char nombre [31]; VERDADERA Los caracteres leídos de una cadena son asignados al argumento de scanf (), que es un arreglo de caracteres.
3) Encontrar los errores en cada uno de los siguientes s egmentos de programa. Explicar cómo pueden ser corregidos cada uno de ellos:
c) printf (“%c\n”, ‘Esta es una cadena’); 1. código %c solo se utiliza para carácter no para una cadena. printf (“%c\n”, ‘x’);
f) printf (%f, 123.456); 1. Le falta las comillas en “%f ” printf (“%f ”, 123.456); h) char s [10]; scanf (“%c”, s [7]); 1. Debemos colocar en este caso en intervalos de A-H
scanf (“%[A-H]”, s); i) int ent; scanf (“%d”, ent); 1. Le falta la dirección que se es &
scanf (“%d”, &ent); 4) Interpretar el significado de la “cadena de control” de cada función scanf ():
scanf (“%12|d %5hd %15|f %15|e”, &a, &b, &c, &d); %12|d= leer al menos 12 espacios en un numero entero decimal largo. %5hd = leer al menos 5 espacios en un numero entero decimal corto. %15|f =leer al menos 15 espacios en un número double. %15|e = leer al menos 15 espacios en un número double.
scanf (“%12d %hd %15f %15e”, &a, &b, &c, &d); %12d = leer al menos 12 espacios en un numero entero decimal. %hd = leer un numero entero decimal corto. %15f = leer al menos 15 espacios en un numero de tipo punto flotante. %15e = leer al menos 15 espacios en un numero de tipo punto flotante.
5) Un programa en lenguaje C contiene la siguiente sentencia de declaración: Int i, j, k; Escribir de forma adecuada una función scanf () que permita introducir los valores numéricos de i, j y k, asumiendo que: b) Los valores de i, j, k son enteros decimales y cada uno no excede los seis caracteres. scanf (“%6d %6d %6d”, &i, &j, &k);
d) El valor de i es un entero decimal, j un entero octal y k un entero hexadecimal, y cada cantidad no excede de los ocho caracteres.
scanf (“%8d %8o %8x”, &i, &j, &k);
f) Los valores de i y j son enteros hexadecimales, k un entero octal, y cada cantidad tiene siete o menos caracteres. scanf (“%7x %7x %7o”, &i, &j, &k);
6) Un programa en lenguaje C contiene las sentencias de declaración: int i, j; long ix; short s; unsigned u; float x; double dx; char c; Escribir una función scanf () que realice cada uno de los siguientes literales, suponiendo que todos los enteros se leerán como cantidades decimales: a) Introducir los valores de i, ix, j, x, u, dx, c, s. scanf (“%d %i %d %f %u %f %c %d”, &i, &ix, &j, &x, &u, &dx, &c, &s) ;
c) Introducir los valores de i, ix, j, x y u, suponiendo que cada cantidad entera no excede los cinco caracteres, el entero largo no excede más de doce caracteres y la cantidad en punto flotante no excede los diez caracteres. scanf (“%5d %5i %5d %10f %12u”, &i, &ix, &j, &x, &u,);
d) Introducir los valores de i, u y c, suponiendo que cada cantidad entera n o excede más de los nueve caracteres. scanf (“%9d %9u %c”, %i, &u, &c);
7) Un programa en lenguaje C contiene la siguiente sentencia de declaración: char texto [80]; Escribir una función scanf () que lea una cadena de caracteres y se le asigne al arreglo texto: b) Suponiendo que la cadena de caracteres solo contiene letras minúsculas, espacios en blanco y un carácter de nueva línea. scanf (“%[a-\n]”, texto);
d) Suponiendo que la cadena de caracteres contiene cualquier carácter salvo al asterisco para indicar el final de la cadena. scanf (“%[\0-*]”, texto);
8) Un programa en lenguaje C contiene las sentencias de declaración: char a, b, c; int u, v; float x, y;
Suponiendo que se desea introducir el carácter ‘$’ y se le asigna a a, que a b se le asigne el carácter ‘*’, que a c se le asigne ‘@’, que a u se le asigna el valor 12, que a v se le asigna el valor -8, que a x se le asigna el valor 0.011 y que a y se le asigna el valor -2.2x 10 8. Mostrar cómo se deben introducir los datos para cada una de las siguientes funciones scanf (), en caso de ser posibles:
c) scanf (“%s %s %s”, &a, &b, &c); No es posible ya que %s se utiliza para leer una cadena
g) scanf (“%d %d %e %e”, &u, &v, &x, &y); scanf (“%d %d %e %e”, 12, -8, 0.011, -22e8);
i) scanf (“%3d %3d %8f %8e”, &u, &v, &x, &y); scanf (“%3d %3d %8f %8e”, 15 -5, 1100000, -2.2e16);
9) Un programa en lenguaje C contiene las sentencias de declaraciones: int i, j, k; int a=0177, b=055, c=0xa8, d=0x1ff; Escribir una función printf () para cada uno de los s iguientes grupos de variables o expresiones, suponiendo que todas las variables representan enteros decimales: c) sqrt (i+j), fabs (i-k) printf (“%d %d”, sqrt, fabs);
e) (i+j) y (i-k), con una longitud de campo mínima de cinco caracteres por cantidad. printf (“La suma de %d y %d:%5d”, i , j, resultado); printf (“La resta de %d y %d:%5d”, i, k, resultado);
g) a, b, c, b
printf (“%o %o %x %x”, 0177, 055, 0xa8, 0x1ff); 10) Un programa en lenguaje C contiene la sentencia de declaración: float x, y, z;
Escribir una función printf () para cada uno de los s iguientes grupos de variables o expresiones, utilizando el especificado de formato f para cada cantidad de punto flotante: b) (x+y), (x-z) printf (“La suma de %f y %f: %f”, x, y, resultado); printf (“La resta de %f y %f : %f”, x, z, resultado);
e) (x+y) y (x-z), con una longitud de campo mínima de ocho característic as por cantidad. printf (“La suma de %f y %f : %8f”, x, y, resultado); printf (“La resta de %f y %f : %8f”, x, z, resultado);
g) x, y y z, con una longitud de campo mínima de ocho caracteres por cantidad, con cuatro cifras decimales. printf (“%8.4f %8.4f %8.4f”, x, y, z);
j) Repetir los literales anteriores utilizando el especificador de formato e. b) printf (“La suma de %e y %e: %e”, x, y, resultado); printf (“La resta de %e y %e : %e”, x, z, resultado); e) printf (“La suma de %e y %e : %8e”, x, y, resultado); printf (“La resta de %e y %e : %8e”, x, z, resultado); g) printf (“%8.4e %8.4e %8.4e”, x, y, z);
11) Suponiendo que i, j y k son variables enteras, donde i representan una cantidad octal, j una cantidad decimal y k una cantidad hexadecimal. Escribir una función printf () adecuada para cada una de los siguientes enunciados: a) Escribir los valores de i, j y k con una longitud de campo mínima de ocho caracteres por cada valor. printf (“%8o %8d %8x”, i, j, k) ;
b) Repetir el literal a) con cada dato ajustado a la izquierda de su campo printf (“%-8o %-8d %-8x”, i, j, k);
12) Un programa en lenguaje C contiene las sentencias de declaración: int i, j; long ix; short s; unsigned u; float x; double dx; char c; Escribir una función printf () para cada uno de los s iguientes enunciados. Supóngase que todos los enteros se desean presentar como cantidades decimales: b) Escribir los valores de i, j, x y dx, suponiendo que cada cantidad entera tiene una longitud de campo mínima de cuatro caracteres y cada cantidad de punto flotante se presenta en notación exponencial con un total de al menos 14 caracteres y no más de 8 cifras decimales. printf (“%4d %4d %14.8e %14.8e”, i, j, x, dx);
d) Escribir los valores de i, ix, j, x y u, suponiendo que cada cantidad entera tiene una longitud de campo mínima de cinco caracteres y el entero l argo tiene una longitud de campo mínima de 12 caracteres y la cantidad de punto flotante tiene al menos 10 caracteres con un máximo de 5 cifras deci males, no incluir el exponente. printf (“%5d %12i %5d %10.5f %5u”, i, ix, j, x, u);
g) Escribir los valores de j, u y x, visualizando las cantidades enteras con una longitud de campo mínima de cinco caracteres, y la cantidad en punto flotante utilizando el especificador de formato f, con una longitud de campo mínima de 11 caracteres y máximo de 4 cifras decimales. printf (“%5d %5u %11.4f”, j, u, x);
h) Repetir el literal g) con cada dato ajustado a la izquierda dentro de su c ampo. printf (“%-5d %-5u %-11.4f”, j, u, x);
13) Un programa en lenguaje C contiene las sentencias de declaración:
int a = 12345, b= 0xabcd9, c= 077777; int i = 12345, j = -13579, k = -2468; long ix = 123456789; short sx = -3333; unsigned ux = 666; Mostrar la salida resultante de cada una de las siguientes funciones printf ():
e) printf (“%08d %08d %08d \n\ n %015|d %08d %8u”, i, j, k, ix, sx, ux);
El programa imprime: i= 00012345 j= -0013579 k= -0002468 ix= 000000123456789 sx= -0003333 ux=
666
g) printf (“%3d %3x %3o”, a, b, c);
El programa imprime: a= 123 b= 0xa c= 077
k) printf (“%08d %#8x %#8o”, a, b, c);
El programa imprime: a= 00012345 b= 0xabcd9 c= 077777
14) Un programa en lenguaje C contiene la declaración: float a = 2.5, b = 0.0005, c = 3000; Mostrar la salida resultante de cada una de las siguientes funciones:
a) printf (“%f %f %f”, a, b, c); printf (“f %f %f”, 2.5 , 0.0005 , 3000.00);
f) printf (“%8.2e %8.2e %8.2e”, a, b, c); printf (“%8.2e %8.2 %8.2e”, 2.50, 000.05, 003000);
j) printf (“%g %g %g”, a, b, c); printf (“%g %g %g”, 2.5, 5e4, 300.00);
15) Un programa en lenguaje C contiene la sentencia de de claración:
char a, b, c; Realizar los siguientes literales: a) Ingresar los valores de a, b y c mediante funciones getchar (). a=getchar () b= getchar () c= getchar () b) Visualizar los valores ingresados de putchar (). putchar (‘a’, ‘b’, ‘c’)
d) Repetir los literales a) y b) utilizando solo una función scanf () y printf (), respectivamente.
a) scanf (“%c %c %c”, &a, &b, &c); printf (“%c %c %c”, a, b, c);
b) scanf (“%c %c %c”, &a, &b, &c); printf (“%c %c %c”, a, b, c);