UNIVERSIDAD CENTRAL DEL ECUADOR
FACULTAD DE INGENIERA EN GEOLOGA, MINAS, PETRLEOSY
AMBIENTAL
COMPUTACIN GRFICA
Nombre: Kevin Alejandro Sinmaleza Panchi
Carrera: Ing. Ambiental
Fecha: Quito, 06 de Marzo de 2015
Tema: Ejercicios de programacin.
Realizar los siguientes ejercicios de lenguaje C, basados en lo visto en clase.
1. Determinar cules de los siguientes valores numricos son constantes vlidas. Si una
constante es vlida, especificar si es entera o real. Especificar tambin la base en que est
escrita cada constante.
a)
b)
c)
d)
e)
f)
g)
h)
i)
j)
k)
l)
0.5
27,822
9.3e12
9.3e-12
12345678
12345678L
0.8E+0.8
0.8E8
0515
018CDF
0XBCFDAL
0x87e3ha
2. Determinar cules de las siguientes son constantes de carcter vlidas.
a) 'a'
j) '\052'
b) '$'
c) '\n'
d) '/n'
e) '\\'
f) '\a'
g) 'T'
h) '\0'
i) 'xyz'
3. Determinar cules de las siguientes son constantes de cadena de caracteres vlidas.
a)
b)
c)
d)
e)
f)
g)
'8:15 P.M.'
'Rojo, Blanco y Verde'
''Nombre:
''Captulo 3 (Cont\'d)''
''1.3e-12''
''28018 MADRID''
''El profesor dijo, ''Por favor, no se duerman en clase''
4. Escribir las declaraciones apropiadas para cada grupo de variables y arrays.
a) Variables enteras: p, q
Variables de coma flotante: x, y, z
Variables de carcter: a, b, c
b) Variables de coma flotante: raz1, raz2
Variable entera larga: cont
Variable entera corta: indicador
c) Variable entera: ndice
Variable entera sin signo: cliente_num
Variables de doble precisin: bruto, impuesto, neto
d) Variables de carcter: actual, ltimo
Variable entera sin signo: contador
Variables de coma flotante: error
e) Variables de carcter: primero, ltimo
Array de caracteres de 80 elementos: mensaje
5. Escribir declaraciones apropiadas y asignar los valores iniciales dados para cada grupo de
variables y arrays.
a) Variables de coma flotante: a= -8.2, b= 0.005
Variables enteras: x= 129, y= 87, z= -22
Variables de carcter: c1= 'w', c2= '&'
b) Variables de doble precisin: d1= 2.88x10^-8, d2= -8.4x10^5
Variables enteras: u= 711 (octal), v= ffff (hexadecimal)
c) Variables de entero largo: grande= 123456789
Variable de doble precisin: c= 0.3333333333
Variable de carcter: eol= carcter de nueva lnea
d) Array unidimensional de caracteres: mensaje= ''ERROR''
6. Explicar el propsito de cada una de estas expresiones:
a)
b)
c)
d)
e)
f)
g)
a-b
a x (b+c)
d= a x (b+c)
a >= b
(a % 5) '''' 0
a < (b / c)
--a
7. Identificar cundo cada una de las siguientes sentencias es una sentencia de expresin,
una sentencia compuesta o una sentencia de control.
a) a x (b + c);
b) while (a < 100)
{
d= a x (b + c);
++a;
}
c) if (x > 0 )
y= 2.0;
else
y= 3.0;
d) {
++x;
if (x > 0)
y= 2.0;
else
y= 3.0;
printf (%f, y) ;
}
e) {
++x;
if (x > 0)
{
y= 2.0;
z= 6.0;
}
else
{
y= 3.0;
z= 9.0;
}
8. Supongamos que a, b y c son variables enteras que tienen asignados los valores a=8, b=3,
c=-5. Determinar el valor de cada una de las siguientes expresiones aritmticas.
a)
b)
c)
d)
e)
f)
g)
h)
i)
j)
a+b+c
2 * b + 3 * (a - c)
a/b
a%b
a/c
a%c
a*b/c
a * (b / c)
(a * c) % b
a * (c % b)
9.
Supongamos que x, y y z son variables de coma flotante que tienen asignados los valores
x=88, y=3.5, z=-5.2. Determinar el valor de cada una de las siguientes expresiones
aritmticas.
a)
b)
c)
d)
e)
f)
g)
h)
x+y+z
2 * y + 3 * (x - z)
x/y
x%y
x / (y + z)
(x / y) + z
2*x/3*y
2 * x / (3 * y)
10. Supongamos c1, c2 y c3 variables de tipo carcter que tienen asignados los caracteres E.
5 e ? respectivamente. Determinar el valor numrico de las siguientes expresiones,
basndose en el conjunto de caracteres ASCII.
a)
b)
c)
d)
e)
c1
c1 - c2 + c3
c2 - 2
c2 - ' 2 '
c3 + ' # '
f)
g)
h)
i)
j)
c1 % c3
'2'+'2'
(c1 / c2) * c3
3 * c2
' 3 ' * c2
11. Un programa en C contiene las siguientes declaraciones:
int i, j;
long ix;
short s;
float x;
double dx;
char c;
Determinar el tipo de datos de cada una de las siguientes expresiones:
a)
b)
c)
d)
e)
f)
g)
h)
i)
i+c
x+c
dx + x
((int) dx ) + ix
i+x
s+j
ix + j
s+c
ix + c
12. Un programa en C contiene las siguientes declaraciones y asignaciones iniciales:
int i= 8, j= 5;
float x= 0.005, y= -0.01;
char c= ' c ', d= ' d ';
Determinar el valor de cada una de las siguientes expresiones. Utilizar los valores
asignados inicialmente a las variables para cada expresin.
a)
b)
c)
d)
e)
f)
(3 * i 2 * j) % (2 * d - c)
2 * ((i / 5) + (4 *(j - 3)) % (i + j - 2))
(i 3 * j) % (c + 2 * d) / (x - y)
(i + j)
++ i
i++
g)
h)
i)
j)
k)
l)
m)
n)
o)
p)
q)
r)
s)
t)
u)
v)
w)
x)
y)
z)
--j
++ x
j-i <= j
c>d
x >= 0
x< y
j != 6
c == 99
5 * (i + j) > ' c '
(2 * x + y) == 0
2 * x + (y == 0)
2 * x + y == 0
1 (i <= j)
1 (c == 99)
1 (x > 0)
(i > 0) && (j < 5)
(i > 0) ( j < 5)
(x > y) && (i > 0) ( j > 5)
(x > y) && (i > 0) && (j > 5)
13. Un programa en C contiene las siguientes declaraciones y asignaciones iniciales:
int i= 8, j= 5, k;
float x= 0.005, y= -0.01, z;
char a, b, c= ' c ', d= ' d ';
Determinar el valor de cada una de las siguientes expresiones de asignacin. Utilizar para
cada expresin el valor inicial asignado a las variables.
a)
b)
c)
d)
e)
f)
g)
h)
i)
j)
k)
l)
m)
n)
o)
k= (i + j)
z= (x + y)
i=j
k= (x + y)
k= c
z= i / j
a=b=d
i = j = 1.1
z=k=x
k=z=x
i+ = 2
y- = x
x*= 2
i/ = j
i% = j
p)
q)
r)
s)
t)
u)
v)
i+ = (j - 2)
k= (j == 5) ? i : j
k = (j > 5) ? i : j
z= (y >= 0) ? x : j
z= (y >= 0) ? y : j
a= (c < d) ? c : d
i- = (j > 0) ? j : 0
14. Cada una de las siguientes expresiones utiliza una funcin de biblioteca. Identificar el
propsito de cada expresin.
a)
b)
c)
d)
e)
f)
g)
h)
i)
j)
k)
l)
m)
n)
o)
p)
q)
r)
s)
t)
u)
v)
abs (i - 2 * j)
fabs (x + y)
isprint (c)
isdigit (c)
toupper (d)
ceil (x)
floor (x + y)
islower (c)
isupper (j)
exp (x)
log (x)
sqrt (x * x + y * y)
isalnum (10 * j)
isalpha (10 * j)
isascii (10 * j)
toascii (10 * j)
fmod (x, y)
tolower (65)
pow (x y, 3.0)
sin (x - y)
strlen (hola \0)
strpos (hola \0, ' e')
15. Un programa en C contiene las siguientes declaraciones y asignaciones iniciales
int i= 8, j= 5;
double x= 0.005, y= -0.01;
char c= ' c ', d= ' d ';
Determinar el valor de cada una de las siguientes expresiones, que hacen uso de
funciones de biblioteca.
a) abs (i 2 * j)
b)
c)
d)
e)
f)
g)
h)
i)
j)
k)
l)
m)
n)
o)
p)
q)
r)
s)
t)
u)
v)
w)
x)
y)
z)
fabs (x + y)
isprint (c)
isdigit (c)
toupper (d)
ceil (x)
ceil (x + y)
floor (x)
floor (x + y)
islower (c)
isupper (j)
exp (x)
log (x)
log (exp (x) )
sqrt (x * x + y * y)
isalnum (10 * j)
isalpha (10 * j)
isascii (10 * j)
toascii (10 * j)
fmod (x, y)
tolower (65)
pow (x y, 3.0)
sin (x - y)
strlen (hola \0)
strpos (hola \0, ' e')
sqrt (sin(x) + cos(y))
16. Un programa en C contiene las siguientes sentencias
#include<stdio.h>
int i, j, k;
Escribir de forma adecuada una funcin scanf que permita introducir los valores
numricos de i, j, k, asumiendo que:
a) Los valores de i, j, k son enteros decimales y cada uno no excede los seis caracteres.
b) El valor de i es un numero entero decimal, j es un entero octal y k un entero hexadecimal,
y cada cantidad no excede de los ocho caracteres.
c) Los valores de i, y son enteros hexadecimales y k es un entero octal. Cada cantidad tiene
siete o menos caracteres.
17. Interpretar el significado de la cadena de control de cada funcin scanf:
a) scanf(%121d %5hd %151f %151e, &a, &b, &c, &d);
b) scanf(%101x %6ho %5hu %141u, &a, &b, &c, &d);
c) scanf(%12d %hd %15f %15e, &a, &b, &c, &d);
d) scanf(%8d %*d %121f %121f, &a, &b, &c, &d);
18. Un programa en C contiene las siguientes sentencias.
#include<stdio.h>
int i, j;
long ix;
short s;
unsigned u;
float x;
double dx;
char c;
Escribir una funcin scanf para cada uno de los siguientes grupos de variables que lea un
conjunto de datos correspondiente y los asigne a las variables. Supngase que todos los
enteros se leern como cantidades decimales.
a)
b)
c)
d)
i, j, x y dx
i, ix, j, x y u
i, u y c
c, x, dx y s
19. Un programa en C contiene las siguientes sentencias:
#include<stdio.h>
int i, j;
long ix;
short s;
unsigned u;
float x;
double dx;
char c;
Escribir una funcion scanf que satisfaga cada uno de los siguientes puntos, suponiendo
que todos los enteros se leern como cantidades decimales.
20. Un programa en C contiene las siguientes sentencias:
#include<stdio.h>
int i, j, k;
Escribir una funcin printf para cada uno de los siguientes grupos de variables o
expresiones. Supngase que todas las variables representan enteros decimales.
a) i, j y k
b) (i + j), (i - k)
c) aqrt (i + j), abs (i - k)
21. Un programa en C contiene las siguientes sentencias:
#include<stdio.h>
int i, j, k;
Escribir una funcin printf para cada uno de los siguientes grupos de variables o
expresiones. Supngase que todas las variables representan enteros decimales.
a) i, j, k con una longitud de campo mnima de tres caracteres por cantidad.
b) (i + j), (i - k), con una longitud de campo mnima de cinco caracteres por cantidad
c) aqrt (i + j), abs (i - k), con una longitud de campo mnima de nueve caracteres para la
primera cantidad y siete para la segunda.
22. Un programa en C contiene las siguientes sentencias:
#include<stdio.h>
float x, y, z;
Escribir una funcin printf para cada uno de los siguientes grupos de variables o
expresiones:
a) x, y, z
b) (x + y), (x - z)
c) sqrt (x + y), fabs (x - z)
23. Un programa en C contiene las siguientes sentencias:
#include<stdio.h>
float x, y, z;
Escribir una funcin printf para cada uno de los siguientes grupos de variables o
expresiones, utilizando la conversin tipo f para cada cantidad en coma flotante:
a) x, y, z con una longitud de campo mnima de seis caracteres por cantidad.
b) (x + y), (x - z) con una longitud de campo mnima de ocho caracteres por cantidad.
c) sqrt (x + y), fabs (x - z) con una longitud de campo mnima de 12 caracteres por la
primera cantidad y nueve para la segunda.
24. Escribir una estructura de control que examine el valor de una variable de coma flotante
llamada temp y escribir uno de los siguientes mensajes dependiendo de su valor.
a) HIELO, si el valor de temp es menor que 0.
b) AGUA, si el valor de temp se encuentra entre 0 y 100.
c) VAPOR, si el valor de temp es mayor que 100.
25. Escribir un bucle for que lea los caracteres de un array de caracteres llamado texto y los
escriba en sentido opuesto en otro array llamado inverso. Supngase que el array texto
contiene 80 caracteres. Utilizar el operador coma dentro de la sentencia for.
26. Describir la salida que generar cada uno de los siguientes programas en C.
a) #include <stdio.h>
main()
{
int i= 0, x= 0;
while (i < 20)
{
if (i % 5 ==0)
{
x+= i;
printf (%d, x);
}
++i;
}
printf (\nx = %d, x);
}
b) #include <stdio.h>
main()
{
int i= 0, x= 0;
do
{
if (i%5==0)
{
x++;
printf(%d, x);
}
++i;
}
while (i < 20);
printf (\nx = %d, x);
}
c) #include <stdio.h>
main()
{
int i= 0, x= 0;
for (i = 1; i < 10; i *=2)
{
x++;
printf (%d, x);
}
printf (\nx= %d, x);
}
d) #include <stdio.h>
main()
{
int i= 0, x= 0;
for (i = 1; i < 10; ++i)
{
if (i % 2 == 1)
x+ = 1;
else
x--;
printf(%d, x);
}
printf (\nx= %d, x);
}
e) #include <stdio.h>
main()
{
int i= 0, x= 0;
for (i = 1; i < 10; ++i)
{
if (i % 2 == 1)
x+ = i;
else
x--;
printf(%d, x);
continue;
}
printf (\nx= %d, x);
}
f) #include <stdio.h>
main()
{
int i= 0, x= 0;
for (i = 1; i < 10; ++i)
{
if (i % 2 == 1)
x+ = i;
else
x--;
printf(%d, x);
break;
}
printf (\nx= %d, x);
}
g) #include <stdio.h>
main()
{
int i, j, x= 0;
for (i = 1; i < 5; ++i)
for (j = 1; j < i; ++j)
{
x+ = (i + j - 1);
printf(%d, x);
}
printf (\nx= %d, x);
}
h) #include <stdio.h>
main()
{
int i, j, x= 0;
for (i = 1; i < 5; ++i)
for (j = 0; j < 1; ++j)
{
x+ = (i + j - i);
printf(%d, x);
break;
}
printf (\nx= %d, x);
}
i) #include <stdio.h>
main()
{
int i, j, x= 0;
for (i = 0; i < 5; ++i)
for (j = 0; j < 1; ++j)
{
x+ = (i + j - 1);
printf(%d, x);
break;
}
printf (\nx= %d, x);
}
j) #include <stdio.h>
main()
{
int i, j, k, x= 0;
for (i = 0; i < 5; ++i)
for (j = 0; j < i; ++j)
{
k = (i + j - 1);
if (k % 2 == 0)
x+ = k;
else
if(k % 3 == 0)
x+= k 2;