You are on page 1of 47

Repblica Bolivariana de Venezuela

Ministerio de Educacin Superior


Fundacin Misin Sucre
Municipio Urachiche Edo. Yaracuy

Programa Nacional de Formacin en Sistemas e Informtica

1
C
Ctedra: Introduccin a la Programacin
Primer Periodo Primer Trimestre
Profesor-Asesor: Vladimir Gude

G Gu u a a 1 1 d de e p pr ro og gr ra am ma ac ci i n n e en n L Le en ng gu ua aj je e C C

La presente gua no pretende sustituir al profesor, sino servir de apoyo a los triunfadores en el
aprendizaje de la programacin en el lenguaje C.

Historia del Lenguaje C
El lenguaje C naci en los laboratorios de la Bell Telephone y ha sido estrechamente asociado
con el sistema operativo Unix, ya que su desarrollo se realiz en este sistema y debido a que tanto Unix
como el propio compilador C, fueron escritos en C.
Este lenguaje est inspirado en el lenguaje B escrito por Ken Thompson en 1970 con intencin de
recodificar el Unix, que en la fase de arranque estaba escrito en lenguaje ensamblador, en vistas a su
transportabilidad a otras mquinas. B era un lenguaje evolucionado e independiente de la mquina,
inspirado en el lenguaje BCPL concebido por Martn Richard en 1967.
En 1972, Dennis Ritchie, toma el relevo y modifica el lenguaje B, creando el lenguaje C y
rescribiendo el Unix en dicho lenguaje. La novedad que proporcion el lenguaje C sobre el B fue el
diseo de tipos y estructura de datos.
C, que ha sido pensado para ser altamente transportable y para programar lo improgramable,
tiene sus inconvenientes. Carece de instrucciones de Entrada/Salida, de instrucciones para manejo de
cadenas de caracteres, con lo que este trabajo queda para la librera de rutinas, con la consiguiente
prdida de transportabilidad. Ha pesar de todo, C ha demostrado ser un lenguaje extremadamente eficaz
y expresivo.

Conceptos
Variables:
Las variables son nombres que se le dan a las localidades en la memoria principal donde un
elemento de dato puede almacenarse.
Un nombre de variable puede estar formado por una secuencia de letras del alfabeto y/o dgitos
de 0 al 9 y/o el carcter subrayado (_). Sin embargo, no debe comenzar con un dgito.
Ejemplos: edad, num_1, n1, Edad
Los nombres de variables pueden contener caracteres del alfabeto en mayscula as como en
minscula. En el ejemplo anterior, las variables edad y Edad se toman como variables distintas Sin
embargo, los programadores generalmente usan letras minsculas para los identificadores de las
variables, para evitar confusiones.
El nombre de una variable puede tener cualquier longitud, pero slo los primeros 31 caracteres
son significativos. Aunque algunos compiladores de C aceptan slo los primeros ocho caracteres como
significativos.
Los nombres de variables no pueden ser iguales a las palabras reservadas de C. De hecho las
palabras reservadas en C estn en letras minsculas. A continuacin se presenta la lista de las 32
palabras reservadas o claves del ANSI C (algunos compiladores aaden otras palabras claves, propias
de ellos):


2
Palabras Claves en C:
auto const extern register switch continue goto static
break double Float return typedef default if void
case else int short union do signed volatile
char enum long struct unsigned for sizeof while

Identificadores:
Los nombres de las variables y de las funciones se denominan identificadores. Los
identificadores en lenguaje C pueden contener letras del alfabeto y/o dgitos de 0 al 9 y/o el carcter
subrayado (_). Sin embargo, no debe comenzar con un dgito.
Los identificadores pueden estar formados por caracteres en mayscula y/o en minscula. Pero
recuerde que C, hace diferencias entre maysculas y minsculas.
Se recomienda programar en minscula para evitar que una misma variable sea escrita a veces
en mayscula u otras en minscula.


Tipos de Datos Bsicos en C
Un tipo de dato se define como un conjunto de valores y operaciones definidas para las variables
de ese tipo en particular. Los tipos de datos bsicos en C son:
Tipo Rango Descripcin Ejemplos
int -32768 .. 32767 Nmero Entero (sin decimales). edad, nota,
nro_de_hijos
float 3.4*10
-38
.. 3.4*10
+38
Nmero Real (con o sin decimales). sueldo, precio,
interes, promedio,
porcentaje
double 1.7*10
-308
.. 1.7*10
+308
Nmero Real de doble precisin
(con o sin decimales).
sueldo, precio,
interes, promedio,
porcentaje
char -128 .. 127 (carcter) Carcter simple. letra, sexo,
edo_civil, seccion.

Los caracteres (tipo char) se representan a nivel de mquina como un entero. Para hacer esto,
las computadoras utilizan el cdigo ASCII (American Standard Code for Information Interchange: Cdigo
Americano para el Intercambio de Informacin), que tiene enteros estndar asociados para cada uno de
a-z, A-Z, 0-9, y todos los caracteres especiales como $,%,* y &.
Por ejemplo, el carcter 'A' tiene el valor 65 en la tabla ASCII; el carcter 'a' se representa con
el carcter ASCII 97. (ver Tabla ASCII al final de la gua).

Calificadores de Tipos de datos:
Los tipos de datos bsicos pueden modificarse usando calificadores de datos, los cuales son:
short, long, signed y unsigned.
Estos calificadores, en algunos casos, modifican el rango de los tipos bsicos, dependiendo del
compilador que se utilice. La siguiente tabla muestra los tipos bsicos usando calificadores (recuerde
que el rango depende del compilador que se utilice y que algunos tipos no existen en algunos
compiladores, tales como: long float y long double).

Tipo Rango
int
signed int
-32768 .. 32767
unsigned int
unsigned
0 .. 65535
short
short int
signed short int
-32768 .. 32767
3

unsigned short
unsigned short int
0 .. 65535
long
long int
signed long int
-2147483648 .. 2147483647
unsigned long
unsigned long int
0 .. 4294967295
float 3.4*10
-38
.. 3.4*10
+38

long float
double 1.7*10
-308
.. 1.7*10
+308

long double 3.4*10
-4932
.. 3.4*10
+4932

char
signed char
-128 .. 127 (un carcter)
unsigned char 0 .. 255 (un carcter)

Cada uno de los calificadores puede aplicarse al tipo bsico int, para generar: short int,
long int, signed int o unsigned int. Tambin se puede escribir: short, long o unsigned
(omitiendo el tipo bsico int) para referirnos a: short int, long int o unsigned int,
respectivamente.
Generalmente, short tiene un rango menor que int, mientras que long tiene un rango mayor
que int. Esto depende del compilador que se utilice.
El calificador unsigned puede ser agregado a short int y long int, para generar:
unsigned short int o unsigned long int.
Algunos compiladores permiten que el calificador long se pueda usar con float y double para
generar: long float o long double.
Los calificadores signed y unsigned pueden aplicarse al tipo de dato char.
-------- o --------

Valores Enteros:
Un valor entero es un nmero que consiste de una secuencia de dgitos precedida o no por un
signo + o -. Los valores enteros pueden ser escritos en tres sistemas de numeracin diferentes:

Sistema Base Smbolos permitidos Precedido de Ejemplos
Decimal 10 0,1,2,3,4,5,6,7,8,9,+,- +,- un dgito. 9, 4578, -234, 0, +34
Octal 8 0,1,2,3,4,5,6,7 0 (cero) 01234, 0, 01, 077
Hexadecimal 16 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 0X 0x 0Xa2b4C9, 0xFACE, 0x

El sistema decimal permite los dgitos de 0 a 9 y opcionalmente precedido de un signo + o -. No
debe contener comas (,) ni caracteres especiales (como: $,%). No debe comenzar con cero a menos que
sea el propio nmero cero (0). Ejemplo: 9, 4578, -234, 0 y +34
El sistema octal permite los dgitos de 0 a 7 y debe comenzar con cero (0). Ejemplo: 01234,
0, 01 y 077
El sistema hexadecimal permite los dgitos de 0 a 9 y las letras A,B,C,D,E y F. Se puede usar las
letras maysculas o minsculas; y debe comenzar con 0X 0x. Ejemplo: 0Xa2b4C9, 0xFACE y 0x

Valores Reales:
Un valor real es un nmero en base 10 (sistema decimal) que contiene dgitos y un punto decimal
(.) o un exponente (o ambos).
Ejemplo: 0.0, 1.0, 0.3, 1234.43, +2.6, -3.002
Ejemplos con notacin exponencial: 4E-3, 2.3E+4, 0.0034e4
En los ejemplos anteriores, 4E-3 significa: 4 x 10
-3
que es 0.004; 2.3E+4 significa: 2.3 x 10
+4

que es 23000.0
4

Valores de Carcter:
Un valor de tipo carcter es cualquier carcter encerrado entre apstrofes. Ejemplo: 'a', 'C',
'*', '8'.

Valores de Cadenas:
Un valor de cadena consiste de cero o ms caracteres encerrados entre comillas dobles.
Ejemplo: "PAMELA", "hola", "a".
Tenga en cuenta que 'a' es diferente de "a", en el primer caso es el carcter a y en el segundo
es la cadena a.
-------- o --------


Instrucciones Bsicas de C
Las instrucciones bsicas en un programa en C son: Entrada (lectura), Asignacin y Salida
(escribir). A continuacin se explican cada una de ellas:

Instrucciones de Entrada (Lectura): Existen funciones que permiten la lectura o entrada de datos
(realizadas por un usuario) al programa.
Ejemplo: scanf ("%d", &edad);
La funcin scanf lee un dato introducido por teclado. La cadena entre comillas se llama cadena
de formato y especifica el tipo de dato a leer. Luego, se escribe el nombre de la variable
precedido por el smbolo & (excepto para variables cadena).
Cuando aparece la instruccin scanf, la ejecucin del programa se detiene hasta que el usuario
introduce un valor y presiona la tecla Enter. Dicho valor se asigna (introduce) en la variable indicada
entre parntesis (en este ejemplo, en la variable edad).
Ejemplo: printf ("Introduzca Sueldo: ");
scanf ("%f", &sueldo);
En este ejemplo, se muestra por pantalla un mensaje (la cadena: Introduzca Sueldo:) antes de la
lectura, para informar al usuario, que debe introducir un valor.

Especificadores:
Especificador Tipo de dato
%d %i int (nmero entero con signo)
%u int (nmero entero sin signo)
%f float (real)
%c char (carcter)
%s char (cadena string)

Otra funcin de lectura es getche(), la cual permite la lectura de un carcter por teclado, y
asignar ese valor a una variable. No requiere pulsar la tecla Enter despus de introducir el carcter.
Ejemplo: caracter = getche ();
En el ejemplo anterior, la funcin getche() lee un carcter desde el teclado y asigna su valor a
la variable char caracter.
Ejemplo: printf ("Introduzca sexo (F/M): ");
sexo = getche ();
printf ("\n");
Ejemplo: printf ("Pulse una tecla para salir... ");
getche ();
En el ejemplo anterior, se utiliza la funcin getche() sin especificar una variable a la cual
asignarle el valor ledo. Esto tambin es vlido.
5
Instruccin de Asignacin: Est compuesta por: <variable> = <Expresin>;.
Se evala o resuelve la <expresin> a la derecha del smbolo de asignacin (=) y el resultado
lo introduce (o asigna) en la <variable> de la izquierda.
Donde, <expresin> puede ser: una expresin matemtica, lgica, una cadena, o una variable.
Ejemplos: edad = 18;
strcpy (nombre, "Alice");
suma = a + b;
promedio = (n1 + n2 + n3) / 3;
sexo = 'F';
encontrado = 0;
Cabe destacar, que la variable que recibe el valor (a la izquierda) debe ser del mismo tipo que el
resultado de la expresin o valor de la derecha.
Las cadenas (string) se deben escribir entre comillas y los caracteres (char), se deben escribir
encerrados entre apstrofes (Ejemplo: "Alice", 'F').
Las cadenas (ejemplo "Alice" ) no se asignan con el smbolo = sino a travs de la funcin
strcpy. En el ejemplo, se asigna la cadena "Alice" a la variable nombre.

Instrucciones de Salida (Escritura): Las instrucciones de salida o escritura permiten imprimir o mostrar
una cadena de caracteres, una expresin y/o un valor por pantalla.
Ejemplo: printf ("Hola... ");
En el ejemplo anterior se mostrar por pantalla la cadena Hola

Ejemplo: suma = 25;
printf ("%d", suma);
Para mostrar el valor de una variable se debe especificar la cadena de formato (entre comillas).
Luego, separado por una coma, se escribe el nombre de la variable.
En el ejemplo anterior se mostrar por pantalla el contenido de la variable suma, 25.

Nota: Si se va a mostrar una o ms variables y/o una o ms cadenas, se debe indicar el valor de la
variable por medio de un especificador de formato (dentro de la cadena); y luego, escribir las variables
correspondientes.
Ejemplo: total = 20;
printf ("El total es: %d", total);
En el ejemplo anterior se mostrar en pantalla El total es: 20, es decir, se mostrar la cadena El
total es: y el valor contenido en la variable total que es 20.
Ejemplo: strcpy (nombre, "Tamara";
edad = 21;
printf ("La edad de %s es: %d", nombre, edad);
En este ejemplo se mostrar por pantalla: La edad de Tamara es: 21
Ejemplo: strcpy (apellido, "Parra");
edad = 21;
nota = 17.5;
sexo = 'M';
printf ("El apellido es: %s\n", apellido);
printf ("La edad es: %d\n", edad);
printf ("La nota es: %f\n", nota);
printf ("El sexo es: %c", sexo);

En el ejemplo anterior se ha usado la secuencia de escape (\n), que inserta un salto de lnea, es
decir, baja el cursor a la siguiente lnea.
Las secuencias de escape se utilizan para insertar o enviar ciertos caracteres especiales. A
continuacin se presentan algunas de las secuencias de escape:
Nota: Las funciones printf() y scanf() estn definidas en la biblioteca stdio.h. Por lo tanto, si se
va a utilizar alguna de ellas se debe especificar esta biblioteca en el programa.
6
Secuencias de Escape:
Secuencia de Escape Carcter de salida
\n Salto de lnea
\a Suena la campana
\b Retroceso de carro (Backspace)
\r Retorno de carro (al inicio de lnea)
\t Tabulador (6 caracteres)
\' Representacin de apstrofe
\" Representacin de comilla doble
\\ Representacin de \
\? Representacin de ?
-------- o --------


Estructura de un Programa en C
Un programa en C tiene las siguientes partes:
1. llamadas a bibliotecas
2. declaracin de variables globales
3. main() {
4. declaracin de variables locales
5. instrucciones
6. }

Ahora se explicar cada una de estas partes:

1. llamadas a bibliotecas: Aqu se especifican las bibliotecas a utilizar en el programa. Una biblioteca
es un programa (con extensin .h) que contiene la definicin de funciones que van a ser usados en
nuestro programa.
Ejemplo: #include <stdio.h>
#include <conio.h>
Para mejor comprensin, las funciones printf(), scanf() y getche() estn definidas en
la biblioteca stdio.h; por lo tanto si nuestro programa utiliza alguna de estas funciones, se debe llamar
a la biblioteca stdio.h.

2. declaracin de variables globales: Aqu se declaran las variables globales. Se llaman globales
porque son reconocidas en el programa y en las funciones definidas por el programador. Se debe
especificar el tipo de dato y luego el nombre de la variable.
Ejemplo: int edad;
float sueldo, promedio;
char sexo;
char nombre[20];
En el ejemplo anterior se ha definido la variable nombre de tipo cadena (string) de 20 caracteres.

3. main() {: Cualquier aplicacin hecha en lenguaje C debe constar de una funcin principal llamada
main(), que ser la primera en ser llamada. Las llaves ({ }) que incluyen el cuerpo de esta funcin
principal, definen el principio y el final del programa. En la estructura anterior, el main() comprende
desde la lnea 4 a la lnea 7.
Se puede decir que main() contiene las instrucciones del cuerpo principal del programa.
Ejemplo: main() {
nota = 18;
printf ("%d", nota);
}
7
Se puede utilizar int main(void) en sustitucin de main() debido a que son equivalentes.
Es importante mencionar que la funcin principal main() por defecto devuelve un entero y no est
definida para recibir argumento alguno.

4. declaracin de variables locales: Las variables definidas dentro de una funcin, son reconocidas
solo en esa funcin. Las variables declaradas dentro de las llaves ({ }) de la funcin main() solo sern
reconocidas dentro de la funcin main().
-------- o --------

Otras Consideraciones:
Comentarios: Al escribir programas en C podemos colocar algunos comentarios para que el programa
sea ms claro. Los comentarios no sern ejecutados por el programa. Estos comentarios se escriben
encerrados entre /* y */.
Ejemplo:
scanf ("%d", &nota); /* lectura de una nota */
mitad = nota / 2; /* aqu se calcula la mitad de la nota */

Uso de Maysculas y minsculas: El lenguaje C s hace diferencias entre maysculas y minsculas, es
decir, una variable llamada edad es distinta a Edad. Para evitar confusiones se acostumbra a programar
en minscula. Las palabras reservadas en C (tales como: int, float) se deben escribir en minscula.
Ejemplo: letra = 'A';
Letra = 'a'; /*Existen dos variables distintas: letra y Letra*/

Uso del Punto y coma (;): El smbolo punto y coma (;) se usa como separador de instrucciones, tambin
conocido como delimitador de instrucciones.
Las llamadas a bibliotecas no requieren terminar con punto y coma.
Debe tener cuidado al utilizar punto y coma (;) en las instrucciones de ciclo.

Identacin: Es conveniente respetar la identacin (o sangra) al escribir los programas. Esto ayuda a
que los programas sean ms claros y supone una programacin de calidad.

Observaciones: Estas son otras consideraciones a tomar en cuenta en la programacin:
a) Los nmeros con decimales utilizan un punto (no coma) para separar los decimales. Ejemplo: 3.14
b) Las expresiones que involucren una divisin, son de tipo float (se asignan a una variable float).
c) El operador matemtico de divisin (/) devuelve un valor entero si los operandos de la divisin son
enteros (aunque se le asigne a una variable de tipo real).
Ejemplo: float divi;
divi = 7 / 2;
printf ("%f", divi) /* se mostrar: 3.000000 */
d) Se debe evitar la divisin por cero. Asegrese que el divisor es diferente de cero.
e) Tenga en cuenta que una variable no sobrepase los lmites (inferior y superior) de su tipo de dato
(valor fuera de rango). Por ejemplo: a = 20000 + 20000; el valor de a ser 40000. Si la variable
a es de tipo int, se producir un error, porque el tipo int tiene un lmite superior de 32767.
f) Tratar de asignar un valor de tipo no entero a una variable de tipo entero (int), por ejemplo 3.141 o
el carcter 'A', producir que se asigne: 3 65 (cdigo ASCII para el carcter 'A') a la variable.
g) No utilizar palabras reservadas o identificadores estndar de C para nombres de variables.
h) Una instruccin larga se puede dividir en mltiples lneas, utilizando el carcter diagonal inversa (\).
Una lnea de instruccin que termine con el carcter diagonal inversa (\) significa que contina en la
siguiente lnea.
Ejemplo: printf ("Esta linea de instruccin contina \
en la siguiente linea";
8
Programacin Estructurada
La programacin estructurada es una manera o tcnica de organizar y codificar programas que
sean fciles de entender y modificar.
La programacin estructurada permite optimizar los programas debido a la flexibilidad que brinda
en las modificaciones y correcciones, a la facilidad de localizacin de errores y a la claridad y ordenacin
lgica que presenta. Esto genera programas sencillos claros y eficientes.


Uso de Estructuras Lgicas en la construccin de Programas:
La programacin estructurada tiene como principio el uso de tres Estructuras Lgicas bsicas:
A. Estructura Secuencial: Las instrucciones o procesos se ejecutan en secuencia lgica, uno
detrs de otro.
B. Estructura Selectiva o de Decisin: Son estructuras o instrucciones que dependen de una
condicin.
C. Estructura Repetitiva: Son secuencias de instrucciones, bloques o procesos que se repiten un
cierto nmero de veces, mientras o hasta que se cumpla una condicin.
-------- o --------


A. Estructura Secuencial
La estructura secuencial consiste en un conjunto de instrucciones sin condicin, ni repeticin u
omisin de alguna de ellas. Las instrucciones se ejecutan, una detrs de otra, en el orden en que se
escriben. Generalmente, son programas compuestos por instrucciones de Lectura, asignacin y salida.

Ejercicio N 1:
Leer dos nmeros enteros y calcular la suma de ellos.
#include <stdio.h>

main()
{
int num1, num2;
int suma;

printf ("Introduzca un numero entero: ");
scanf ("%d", &num1);
printf ("Introduzca otro numero entero: ");
scanf ("%d", &num2);

suma = num1 + num2;

printf ("La suma de los numeros es %d", suma);
getche(); /* para detener la ejecucin */
return;
}

Nota: Observe que se incluy la instruccin getche() para detener la ejecucin del programa y dar
oportunidad al usuario de ver la salida en pantalla.
-------- o --------

Hemos realizado el primer programa en C.
A continuacin se explicar los operadores aritmticos o matemticos que se utilizan en
expresiones aritmticas en la programacin en C.
-------- o --------


9
Expresiones Aritmticas:
Son combinaciones de valores numricos, variables, operadores aritmticos y/o funciones
asociadas con operandos, que al ser evaluadas proporcionan un resultado numrico entero o real.
Pueden ser usadas para realizar clculos matemticos.

Operadores Aritmticos:
Operadores Descripcin Jerarqua
* , / , % Multiplicacin, Divisin, Mdulo (o Resto). Mayor prioridad
+ , - Adicin, Resta. Menor prioridad
El operador %, divide dos nmeros enteros y devuelve como resultado el resto o residuo de la
divisin. El operador % es vlido slo cuando ambos operandos son enteros.
Ejemplos:
Expresin Aritmtica: Descripcin:
5 + 3 Suma 5 y 3. El resultado es 8.
a 1 Resta 1 a la variable a.
3 * 4 Multiplica 3 por 4. El resultado es 12.
b / c Divide la variable b entre c.
7 % 2 El resultado es 1, que es el resto de la divisin entera de 7 entre 2.
Los operadores aritmticos pueden utilizarse con operandos enteros y/o reales. Sin embargo, el
operador % debe ser usado con operandos enteros y su resultado tambin es entero.
Las expresiones aritmticas Enteras (cuyo resultado es Entero) estn formadas por valores,
variables y/o funciones de tipo entero.
Las expresiones aritmticas reales (cuyo resultado es real) estn formadas por valores, variables
y/o funciones de tipo entero y/o real.
Cuando se usa el operador /, se debe tener cuidado de asegurar que el divisor no sea cero (0).
Si se intenta dividir entre cero, el programa no funcionar.
Al usar el operador %, cuando uno de los operandos es negativo, el resultado no est claro. La
mayora de los compiladores de C hacen que el residuo tenga el mismo signo que el primer operando.
Por ejemplo: -15 % 4, en la mayora de los compiladores el residuo ser 3.
Si una expresin aritmtica est formada por ms de un operador, las operaciones se resuelven
en orden, respetando la jerarqua o prioridad de estos operadores. En el caso en que se presenten
operadores con la misma jerarqua, se resuelven en el orden en que aparecen, de izquierda a derecha.
Los parntesis ( ) se usan para cambiar o dar prioridad a las operaciones. Tambin se usan para
evitar confusiones.
Ejemplos:
Expresin Aritmtica: Descripcin:
2 + 3 * 5 Resuelve primero la multiplicacin y luego la suma. El resultado es 17.
num / 2 * 3 Resuelve la divisin y luego la multiplicacin.
4 + 5 % 2 Resuelve el mdulo y luego realiza la suma. Resultado es 5.
(n1 + n2) / 2 Resuelve la suma y luego la divisin.
(50 + 10)/(4 * (2 + 3)) Resuelven los parntesis internos y luego los externos. Resultado es 3.

Una expresin aritmtica puede contener Funciones Aritmticas. Por ejemplo, la funcin sqrt (x)
calcula la raz cuadrada de x.

Ejemplos:
Expresin: Descripcin:
abs(-12) Resuelve el valor absoluto de -12. El resultado es 12
sqrt(25.0) Calcula la raz cuadrada de 25.0. El resultado es 5.0
sqrt(81.0) + 0.5 El resultado es 9.5

-------- o --------

10
Ejercicio N 2:
Leer tres nmeros enteros y calcular:
a) El producto del segundo nmero por el tercero.
b) La mitad del primer nmero.
c) El Triple del segundo nmero.
d) El cociente (divisin) del primer nmero entre el tercero.

#include <stdio.h>
#include <conio.h>

main()
{
int n1, n2, n3;
int producto, triple;
float mitad, division;

clrscr(); /* Limpia la pantalla */
printf ("Introduzca el primer numero entero: ");
scanf ("%d", &n1);
printf ("Introduzca el segundo numero entero: ");
scanf ("%d", &n2);
printf ("Introduzca el tercer numero entero: ");
scanf ("%d", &n3);

producto = n2 * n3;
mitad = (float) n1 / 2;
triple = n2 * 3;
division = (float) n1 / n3;

printf ("El producto del segundo por el tercero es: %d \n", producto);
printf ("La mitad del primer numero es: %.2f \n", mitad);
printf ("El triple del segundo numero es: %d \n", triple);
printf ("El cociente del primero entre el tercero es: %.2f \n", division);
getche(); /* para detener la ejecucin */
return;
}
-------- o --------

Nota: Las variables mitad y division son de tipo float, porque reciben el resultado de una expresin
con una divisin (que puede no ser exacta). Adems, el tercer nmero a leer debe ser distinto de cero.
Nota: La sentencia #include <conio.h> indica que se va a utilizar la biblioteca conio.h, ya que el
programa hace referencia a la funcin clrscr() que permite limpiar o borrar la pantalla.
Nota: En las instrucciones de clculo de mitad y division, los operandos son enteros por lo tanto
deben convertirse a tipo float antes de asignarse a la variable respectiva, de lo contrario se asignar
slo la parte entera.
Nota: Las instrucciones de salida de las variables tipo float tiene la cadena de formato %.2f, que
indica que se muestren dos cifras para los decimales.

-------- o --------


Ejercicio N 3:
Leer tres edades y calcular la edad promedio.

#include <stdio.h>
#include <conio.h>

11
main()
{
int edad1, edad2, edad3;
float promedio;

clrscr(); /* Limpia la pantalla */
printf ("Introduzca la primera edad: ");
scanf ("%d", &edad1);
printf ("Introduzca la segunda edad: ");
scanf ("%d", &edad2);
printf ("Introduzca la tercera edad: ");
scanf ("%d", &edad3);

promedio = (float) (edad1 + edad2 + edad3) / 3;

printf ("El promedio de Edad es: %6.2f\n", promedio);
getche(); /* para detener la ejecucin */
return;
}
-------- o --------
Nota: A la variable promedio se le asign una divisin, por lo tanto es de tipo float.
Nota: Se ha utilizado la cadena de formato %6.2f para indicar que el valor de tipo float se va a
mostrar en seis (6) espacios o columnas (incluyendo la parte entera, punto y decimales); el segundo
nmero (2) indica que de los seis (6) espacios, dos (2) corresponden a las cifras decimales. Es decir, al
escribir el formato %6.2f se emplearn 3 espacios para la parte entera, un espacio para el punto y 2
espacios para decimales.
-------- o --------

Ejercicio N 4:
Leer un nmero entero de dos cifras. Calcular y mostrar el dgito izquierdo, el dgito derecho y el nmero
ledo con los dgitos invertidos.

#include <stdio.h>
#include <conio.h>

main()
{
int num, dig_izq, dig_der, num_inver;

clrscr(); /* Limpia la pantalla */
printf ("Introduzca un nmero entero de dos cifras: ");
scanf ("%d", &num);

dig_izq = num / 10;
dig_der = num % 10;
num_inver = dig_der * 10 + dig_izq;

printf ("El digito izquierdo es: %d \n", dig_izq);
printf ("El digito derecho es: %d \n", dig_der);
printf ("El numero invertido es: %d \n", num_inver);
getche(); /* para detener la ejecucin */
return;
}
-------- o --------




12
Ejercicio N 5:
Leer el sueldo base y el nmero de hijos de un empleado. Calcular el sueldo neto, sabiendo que se
descuenta Bs 20000 de un seguro y se da un bono de Bs 100000 por hijo.

#include <stdio.h>
#include <conio.h>

main()
{
float sueldo_base, sueldo_neto;
int num_hijos;

clrscr(); /* Limpia la pantalla */
printf ("Introduzca el sueldo base: ");
scanf ("%f", &sueldo_base);
printf ("Introduzca el numero de hijos: ");
scanf ("%d", &num_hijos);

sueldo_neto = sueldo_base - 20000 + num_hijos * 100000;

printf ("El Sueldo Neto es: %.2f \n", sueldo_neto);
getche(); /* para detener la ejecucin */
return;
}

-------- o --------

Ejercicios propuestos:
P01.- Leer el lado de un cuadrado. Calcular su permetro.
P02.- Leer Horas (entero) y calcular su equivalente en minutos y en segundos.
P03.- Leer una medida en metros. Calcular su equivalente en Kilmetros y en centmetros.
P04.- Leer una temperatura en grados Fahrenheit (tipo real). Calcular su equivalente en grados Celsius.
Celsius = 5/9 (F-32).
P05.- Leer un Precio y el porcentaje de IVA. Calcular el precio final (con iva).
P06.- Leer la distancia recorrida y el tiempo empleado por un vehculo. Calcular su velocidad.
P07.- Leer un nmero y calcular el cubo de ese nmero (n
3
).
P08.- Leer la base y la altura de un tringulo. Calcular el rea del tringulo.
P09.- Leer el dimetro de una crculo. Calcular su rea ( rea = .R
2
).
P10.- Leer el radio y la altura de un cilindro. Calcular rea y volumen (rea=2..R.H, volumen =.R
2
.H).
P11.- Leer dos ngulos internos de un tringulo. Calcular el tercer ngulo interno.
P12.- Leer dos catetos de un tringulo rectngulo. Calcular la hipotenusa.
P13.- Leer dos nmeros enteros diferentes (a y b). Intercambiar dichos valores e imprimirlos (por ejemplo,
se lee 4 en a y 8 en b, al intercambiarlos, el contenido de a ser 8 y el de b ser 4.
P14.- Leer un nmero entero de tres cifras. Calcular y mostrar cada dgito y el nmero ledo invertido.
P15.- Leer las Horas que un automvil permaneci en un estacionamiento. Calcular el monto a pagar,
sabiendo que la primera hora tiene un costo de Bs. 1000 y las horas adicionales Bs. 500.
P16.- Leer un monto (entero) en Bs. Calcular cuntos billetes de 50.000, de 20.000, de 10.000, de 5.000,
de 2.000 y de 1.000; y cuntas monedas de 500, de 100, de 50, de 20 y de 10 Bs. se necesitan.
-------- o --------






13
Ejercicios de Porcentajes
En la programacin, generalmente, se utilizan clculos matemticos, entre ellos los Porcentajes.
Se recomienda el uso de reglas de tres. A continuacin veremos dos tipos de ejercicios de porcentaje:

Tipo A:
Ejercicio N 6:
Leer la cantidad de varones y la cantidad total de alumnos de un saln de clase. Calcular el porcentaje
de varones y el porcentaje de hembras.
#include <stdio.h>
#include <conio.h>
main()
{
int varones, total;
float porcentvar, porcenthem;

clrscr(); /* Limpia la pantalla */
printf ("Introduzca la cantidad de varones: ");
scanf ("%d", &varones);
printf ("Introduzca la cantidad total de alumnos: ");
scanf ("%d", &total);
porcentvar = (float) varones * 100 / total;
porcenthem = 100 - porcentvar;
printf ("El porcentaje de Varones es: %.2f\n", porcentvar);
printf ("El porcentaje de Hembras es: %.2f\n", porcenthem);
getche(); /* para detener la ejecucin */
return;
}
-------- o --------
Tipo B:
Ejercicio N 7:
Leer la cantidad total de alumnos de un saln. Si el 25% estn aprobados, calcular la cantidad de
aprobados y la cantidad de reprobados.
#include <stdio.h>
#include <conio.h>
main()
{
int total;
float aprobados, reprobados;

clrscr(); /* Limpia la pantalla */
printf ("Introduzca la cantidad total de alumnos: ");
scanf ("%d", &total);
aprobados = total * 25 / 100; /* o tambien: aprobados = total * 0.25 */
reprobados = total - aprobados;
printf ("La cantidad de Aprobados es: %.0f\n", aprobados);
printf ("La cantidad de Reprobados es: %.0f\n", reprobados);
getche(); /* para detener la ejecucin */
return;
}
-------- o --------
Ejercicios propuestos:
P17.- Leer un Sueldo base. Sabiendo que se descuenta el 8%, calcular el Descuento y el Sueldo final.
P18.- Leer dos notas (A y B). Calcular La nota definitiva, que es, el 70% de A ms el 30% de B.
P19.- Leer: total de Proyectos, Proyectos terminados y Proyectos en ejecucin de una Alcalda. Calcular:
Cantidad de Proyectos No iniciados, Porcentaje de Proyectos terminados, Porcentaje de Proyectos en
ejecucin y Porcentaje de Proyectos No iniciados.
14
Antes de entrar en materia de la Estructura Selectiva o de Decisin, abordaremos las expresiones
relacionales y las expresiones lgicas, con sus respectivos operadores relacionales y conectores lgicos.

Expresiones Relacionales:
Una expresin relacional es aquella que al evaluarla retorna un valor verdadero o falso. El valor
que retorna una expresin relacional es realmente un entero; el valor 1 representa el valor verdadero y 2
representa el valor falso. Estas expresiones se pueden construir con valores, variables y/o expresiones
aritmticas enlazadas con operadores relacionales o con operadores de igualdad.

Operadores Relacionales: Se utilizan para comparar valores o expresiones y as obtener un resultado
booleano (verdadero o falso). Los operadores relacionales que podemos utilizar son:
Operador Descripcin Ejemplo
> Es mayor que nota >= 12
< Es menor que contador < 5
>= Es mayor o igual que edad >= 18
<= Es menor o igual que sueldo <= 900000.00
Los operadores relacionales tienen la misma prioridad o jerarqua entre ellos.

Operadores de Igualdad: Se utilizan para comparar la igualdad o no entre valores o expresiones y as
obtener un resultado booleano (verdadero o falso). Los operadores de igualdad son:
Operador Descripcin Ejemplo
== Es igual a nota == 20
!= No es igual a sexo != 'F'
Observe en los ejemplos que se pueden comparar expresiones o valores enteros, reales o
caracteres (char). La comparacin de cadenas se ver ms adelante.
Nota: Los operadores relacionales ( >, <, >=, <= ) tienen mayor prioridad que los operadores de
igualdad ( ==, != ).
-------- o --------

Expresiones Lgicas:
Una expresin lgica se construye con expresiones relacionales unidas con conectores lgicos
que siempre producen un valor verdadero o falso. El valor que retorna una expresin lgica es realmente
un entero; el valor de verdadero se representa por el valor 1 y el falso por 0.

Conectores Lgicos: Se utilizan para conectar expresiones relacionales. Los Conectores lgicos son:
Conector lgico Descripcin Jerarqua
&& Y ( AND ) Mayor prioridad
|| O ( OR )
! No ( NOT ) Menor prioridad
El conector ! (NOT) se utiliza con un solo operando.
Para comprender el comportamiento de estos conectores lgicos veamos la siguiente tabla:

Tabla de Verdad:
a b a && b a || b ! a ! b
V V V V F F
V F F V F V
F V F V V F
F F F F V V
Donde, a y b son expresiones relacionales; V y F significan Verdadero y Falso, respectivamente.
Recuerde que el valor verdadero es realmente un entero con el valor 1 y falso es un entero con valor 0.
15
Otros Operadores:
C proporciona otros operadores: operadores compuestos de asignacin y los operadores unarios.

Operadores Compuestos de Asignacin: Estos operadores se utilizan como atajos en instrucciones
sencillas de asignacin. La siguiente tabla muestra los operadores compuestos de asignacin:
Operadores Propsito Ejemplo (num=10) Equivalente Salida
+= Suma / Asignacin num += 5; num = num + 5; 15
-= Resta / Asignacin num -= num; num = num 5; 5
*= Multiplicacin / Asignacin num *= num; num = num * 5; 50
/= Divisin / Asignacin num /= num; num = num / 5; 2
%= Mdulo / Asignacin num %= num; num = num % 5; 0

Operadores Unarios: Los operadores que utilizan un solo operador se llaman unarios. C proporciona
operadores unarios ++ y --, de incremento y decremento. Se pueden usar de cuatro maneras diferentes:
Tipo Propsito Ejemplo (num=5) Salida
i++ Post incremento printf("%d", num++); 5
i-- Post decremento printf("%d", num--); 5
++I Pre incremento printf("%d", ++num); 6
--I Pre decremento printf("%d", --num); 4

Se debe tener cuidado cuando se usa un operador unario dentro de otra sentencia (como los
ejemplos de la tabla anterior).
Los operadores i++ e i-- (post incremento y post decremento), incrementan o decrementan el
valor de la variable en 1 despus que la variable se use en la sentencia.
Los operadores ++i e --i (post incremento y post decremento), incrementan o decrementan el
valor de la variable en 1 antes que la variable se use en la sentencia.
-------- o --------
Generalmente, en una expresin booleana, se utilizan los conectores lgicos con operadores
relacionales y/o con operadores aritmticos. Es necesario conocer la jerarqua o prioridad entre
conectores lgicos, operadores relacionales y operadores aritmticos (ver la siguiente tabla):
Tabla General de Jerarquas de Operadores:
Operadores Descripcin Jerarqua
++, -- Unarios Mayor prioridad
*, /, % Multiplicacin, Divisin, Mdulo (resto)
+, - Adicin, Substraccin
>, <, >=, <= Operadores relacionales
==, != Operadores de igualdad
&& Y (AND)
|| O (OR)
! No (NOT) Menor prioridad
Para evitar confusiones es recomendable utilizar los parntesis.
Ejemplos:
x = ! ( 2 > 5 ) /* resultado: 1 (Verdadero) */
x = ( 5 < 2 && abs(-1) == 1 ) /* resultado: 0 (Falso) */
x = ( 4 > 2 || 2 != 2 ) /* resultado: 1 (Verdadero) */
x = ( edad >= 18 && nota >= 12 )
x = ( sexo = 'F' || edad < 18 )
x = ( ((n1 + n2 + n3)/3) >= 12 && sqrt(n4) >= 9 )
-------- o --------
16
B. Estructura Selectiva o de Decisin
La estructura Selectiva o de Decisin involucra una expresin booleana (lgica) que determina la
ejecucin de unas u otras instrucciones. La estructura selectiva en C est determinada por las
sentencias: if() y switch().

Sentencia if():
Sintaxis:
if ( <expresin booleana> )
<instruccin>;
O tambin:
if ( <expresin booleana> )
<instruccin1>;
else
<instruccin2>;
O tambin:
if ( <expresin booleana> )
{
<instruccin1>;
<instruccin2>;
}
else
{
<instruccin3>;
<instruccin4>;
}

En donde, <expresin booleana> es una expresin simple o compuesta que tiene un valor
booleano (Verdadero o Falso), ejemplo: edad >= 18.
<instruccin>, <instruccin1>, <instruccin2>, <instruccin3> e <instruccin4> son instrucciones
o bloques de instrucciones. Si son bloques (varias instrucciones) se encierran entre llaves ({ }).
La instruccin if evala la <expresin booleana> y si su valor es verdadero (1) se ejecuta la
siguiente instruccin o el bloque de instrucciones entre llaves ({ }); si su valor es falso (0) se ejecuta la
instruccin o instrucciones encerradas entre llaves ({ }) de la sentencia else (que es opcional).

Ejemplos:
a) Indique si es Hombre o Mujer:
if (sexo == 'M')
printf("Es Hombre\n");
else
printf("Es Mujer\n");
b) Indique si es mayor de edad:
if (edad >= 18)
printf("Es mayor de edad\n");
c) Indique si est aprobado o no:
if (nota >= 12)
printf("Est aprobado\n");
else
printf("No est aprobado\n");
d) Indique si gana entre Bs. 500000 y Bs. 800000:
if (sueldo >= 500000 && sueldo <= 800000)
printf ("Gana entre Bs 500000 y Bs 800000\n");
e) Indique si es Mujer con Promedio de 18 puntos.
if (sexo == 'F' && promedio == 18)
printf ("Es mujer con promedio de 18 puntos\n");
17
f) Indique si la nota est en el rango de 10 a 15.
if (nota >= 10 && nota <= 15)
printf ("la nota est en el rango de 10 a 15\n");
g) Indique si la nota NO est en el rango de 10 a 15.
if (nota < 10 || nota > 15)
printf ("la nota No est en el rango de 10 a 15\n");
-------- o --------
Ejercicio N 8:
Leer Nombre y Edad de una persona. Indique si es mayor de edad o no.
#include <stdio.h>
#include <conio.h>
main()
{
char nombre[20];
int edad;

clrscr(); /* Limpia la pantalla */
printf ("Introduzca el Nombre: "); scanf ("%s", nombre);
printf ("Introduzca la Edad: "); scanf ("%d", &edad);
if (edad >= 18)
printf ("%s es mayor de edad.\n", nombre);
else
printf ("%s No es mayor de edad.\n", nombre);
printf ("Presione Enter...");
getche(); /* para detener la ejecucin */
return;
}
Nota: Observe que se incluy un mensaje (Presione Enter...) y la instruccin getche() al final del
programa. Esto se hace para que el programa se detenga (hasta que el usuario pulse la tecla Enter) y
as dar tiempo para ver la salida en pantalla.
-------- o --------
Ejercicio N 9:
Leer Apellido y Nota de un alumno. Indique si su nota est entre 15 y 20.
#include <stdio.h>
#include <conio.h>
main()
{
char apellido[20];
int nota;

clrscr(); /* Limpia la pantalla */
gotoxy (10,2); printf ("Introduzca Apellido: "); scanf ("%s", apellido);
gotoxy (10,4); printf ("Introduzca Nota: "); scanf ("%d", &nota);
if (nota >= 15 && nota <= 20)
{
gotoxy (10,8);
printf ("%s tiene nota entre 15 y 20.", apellido);
}

gotoxy (10,24); printf ("Pulse la tecla Enter...");
getche(); /* para detener la ejecucin */
return;
}
Nota: Se incluy la funcin gotoxy() que ubica el cursor en la pantalla en las coordenadas dadas. El
primer valor define la columna (mximo 80) y el segundo valor la fila (mximo 25). Se utiliza antes de
una salida printf() o getche(), y/o de una lectura scanf().
La funcin gotoxy(), al igual que clrscr() forman parte de la biblioteca conio.h.
18
Ejercicio N 10:
Leer el sexo (un solo carcter F o M). Se le pide que escriba la palabra Femenino o Masculino en la
misma posicin donde se ley el carcter F o M respectivamente.
#include <stdio.h>
#include <conio.h>
main()
{
char sexo;

clrscr(); /* Limpia la pantalla */
gotoxy (10,2); printf ("Introduzca Sexo (F o M): ");
gotoxy (35,2); sexo = getche();
gotoxy (35,2);
if (sexo == 'F' || sexo == 'f')
printf ("Femenino");
if (sexo == 'M' || sexo == 'm')
printf ("Masculino");

gotoxy (10,20); printf ("Presione Enter...");
getche(); /* para detener la ejecucin */
return;
}
-------- o --------
Ejercicio N 11:
Leer dos nmeros reales diferentes. Indique el mayor de ellos.
#include <stdio.h>
#include <conio.h>
main()
{
float num1, num2;

textcolor (WHITE);
textbackground (BLUE);
clrscr(); /* Limpia la pantalla */
gotoxy(20,2); printf("Introduzca primer numero: "); scanf ("%f", &num1);
gotoxy(20,4); printf("Introduzca segundo numero: "); scanf ("%f", &num2);
gotoxy(20,6);
if (num1 > num2)
printf ("El mayor es: %8.2f \n", num1);
else
printf ("El mayor es: %8.2f \n", num2);
gotoxy(20,10); printf ("Presione Enter...");
getche(); /* para detener la ejecucin */
return;
}
-------- o --------
Nota: Se incluy las funciones textcolor() y textbackground(), los cuales definen el color de texto
y el color de fondo (en pantalla), respectivamente. Entre parntesis se escribe un valor entero (o una
constante predefinida) que representa el color definido.
Para textcolor() existen 16 colores definidos por un valor entero entre 0 y 15. Para
textbackground() solo se puede utilizar un entero en el rango de 0 a 7.
Tabla de Colores:
Valor Constante Valor Constante Valor Constante Valor Constante
0 BLACK 4 RED 8 DARKGRAY 12 LIGHTRED
1 BLUE 5 MAGENTA 9 LIGHTBLUE 13 LIGHTMAGENTA
2 GREEN 6 BROWN 10 LIGHTGREEN 14 YELLOW
3 CYAN 7 LIGHTGRAY 11 LIGHTCYAN 15 WHITE
19
Para que el texto aparezca intermitente se le suma el valor 128 (constante: BLINK) al valor entero
o constante definido en textcolor().
Ejemplo: textcolor (14 + BLINK); /* color de texto Amarillo intermitente */
Ejemplo: textbackground(GREEN); /* define el color de fondo verde */
Si se va a utilizar textcolor() y/o textbackground(), se debe incluir la biblioteca conio.h.
Se recomienda escribir clrscr(); despus de textcolor() o textbackground().

-------- o --------


if() anidados: Podemos utilizar la instruccin if dentro de otra instruccin if. Esto se llama If
anidados.
Sintaxis:
if ( <expresin booleana1> )
if ( <expresin booleana2> )
<instruccin1>;
else
<instruccin2>;
else
if ( <expresin booleana3> )
<instruccin3>;
else
<instruccin4>;
-------- o --------

Ejercicio N 12:
Leer tres nmeros diferentes. Indique el mayor de ellos.

#include <stdio.h>
#include <conio.h>

main()
{
float num1, num2, num3;

clrscr(); /* Limpia la pantalla */
printf ("Introduzca el primer numero: "); scanf ("%f", &num1);
printf ("Introduzca el segundo numero: "); scanf ("%f", &num2);
printf ("Introduzca el tercer numero: "); scanf ("%f", &num3);
if (num1 > num2)
if (num1 > num3)
printf ("El mayor es: %.1f\n", num1);
else
printf ("El mayor es: %.1f\n", num3);
else
if (num2 > num3)
printf ("El mayor es: %.1f\n", num2);
else
printf ("El mayor es: %.1f\n", num3);

printf ("Presione la tecla Enter..."); getche();
return;
}
-------- o --------



20
Ejercicio N 13:
Resolver el ejercicio anterior utilizando el operador && (AND).

#include <stdio.h>
#include <conio.h>

main()
{
float num1, num2, num3;

clrscr(); /* Limpia la pantalla */
printf ("Introduzca el primer numero: "); scanf ("%f", &num1);
printf ("Introduzca el segundo numero: "); scanf ("%f", &num2);
printf ("Introduzca el tercer numero: "); scanf ("%f", &num3);
if (num1 > num2 && num1 > num3)
printf ("El mayor es: %.1f\n", num1);
if (num2 > num1 && num2 > num3)
printf ("El mayor es: %.1f\n", num2);
if (num3 > num1 && num3 > num2)
printf ("El mayor es: %.1f\n", num3);

printf ("Presione la tecla Enter..."); getche();
return;
}
-------- o --------


Ejercicios propuestos:
P20.- Leer un nmero, imprimir el opuesto (es decir, cambiarle el signo).
P21.- Leer un nmero e indique si es positivo, negativo o cero.
P22.- Leer un nmero e indique si es par o impar.
P23.- Leer un nmero e indique si es mltiplo de 3 (divisible por 3).
P24.- Leer dos nmeros. Indique el mayor, el menor o si son iguales.
P25.- Leer tres nmeros diferentes. Imprimirlos en orden Creciente y luego en orden Decreciente.
P26.- Leer un nmero entero de tres cifras. Verifique que el nmero es de tres cifras, si es as indique si
es un palndrome o no (se lee igual de izquierda a derecha que a la inversa, ejemplo: 252) (ayuda:
calcular los tres dgitos del nmero ledo).
P27.- Leer la nota de tres asignaturas. Indique si Aprob una, dos o tres asignaturas.
P28.- Leer tres lados de un tringulo. Indique si es un tringulo Equiltero, Issceles o Escaleno.
P29.- Leer un determinado ao. Indique si es Bisiesto o no.
P30.- Leer Da, Mes y Ao, correspondientes a una fecha. Indique si la fecha introducida es correcta.
P31.- Leer Da, Mes y Ao, que corresponde a una fecha, indique Da, Mes y Ao, al da siguiente.
P32.- Leer Hora, Minutos y Segundos que marca un reloj. Indique la hora, minutos y segundos al pasar
cinco segundos.
P33.- Leer el precio de un artculo. Calcular su Precio final, sabiendo que se ofrece un descuento del 10%
si tiene precio menor a Bs. 50000, de lo contrario, un descuento del 20%.
P34.- Leer el Nombre, Sexo, Edad y Sueldo Base de un empleado. Calcular el Sueldo Final, sabiendo
que se aporta un Bono de Bs. 200000 a las mujeres y Bs. 100000 a los hombres; y se descuenta el 15%
del Sueldo Base a los mayores de edad y el 8% a los menores de edad.
P35.- Leer el monto (entero) menor a un milln. Indique el monto en letras. (Ejemplo: se lee 12345
imprimir: doce mil trescientos cuarenta y cinco).
P36.- Leer a, b y c, que corresponden a los coeficientes de una ecuacin de segundo grado
(ax
2
+bx+c=0). Imprimir la solucin o soluciones. Recuerde que b
2
-4ac debe ser mayor o igual que cero.
Para a=0 no es necesario calcular dos soluciones.
-------- o --------

21
Operador Ternario ?::
El operador ternario en C es una construccin if de una lnea la cual tiene tres trminos. Los
smbolos y : se usan como operadores ternarios.
Sintaxis:
<condicin> ? <instruccinV> : <instruccinF>;

Si la <condicin> es verdadera entonces se ejecuta la instruccin que est despus de ?
(<instruccinV>), sino se ejecuta la instruccin que est despus del : (<instruccinF>).


Ejemplo, usando la sentencia if:
if (num1 > num2)
printf ("El mayor es:%d", num1);
else
printf ("El mayor es:%d", num2);

Ejemplo equivalente al anterior, usando el operador ternario:
(num1>num2) ? printf ("mayor es:%d", num1) : printf ("mayor es:%d", num2);

-------- o --------




Sentencia switch():
Sintaxis:
switch ( <expresin> )
{
case <valor1> : <instruccin1>;
break;
case <valor2> : <instruccin2>;
break;
...
...
case <valorN> : <instruccinN>
break;
default : <instruccinX>;
}


En donde, <expresin> es un valor tipo entero (int) o carcter (char).
Adems, <expresin> puede ser el nombre de una variable, funcin o expresin.
<valor1> hasta <valorN> son los valores que se van a comparar con la <expresin>.
La sentencia switch() compara el valor de <expresin> con los valores de las sentencias
case. Si la <expresin> es igual a uno de estos valores ejecuta la o las instrucciones respectivas, a
continuacin de los dos puntos (:). Debe insertar la sentencia break como ltima instruccin de cada
case, sino se ejecutarn las instrucciones pertenecientes a los case siguientes.
Si la <expresin> no es igual a ninguno de los valores de la lista de case se ejecuta la
<instruccinX> correspondiente al default (que es opcional).
-------- o --------




22
Ejercicio N 14:
Leer un nmero entero entre 1 y 5. Indique (escriba) el valor ledo en letras.
#include <stdio.h>
#include <conio.h>
main()
{
int numero;

clrscr(); /* Limpia la pantalla */
printf ("Introduzca un numero entre 1 y 5: "); scanf ("%d", &numero);

switch (numero)
{
case 1 : printf ("Uno\n");
break;
case 2 : printf ("Dos\n");
break;
case 3 : printf ("Tres\n");
break;
case 4 : printf ("Cuatro\n");
break;
case 5 : printf ("Cinco\n");
break;
default: printf ("No es un numero entre 1 y 5\n");
}
printf ("Presione Enter..."); getche();
return;
}
-------- o --------
Ejercicio N 15:
Leer un Estado civil (S/C/D) (tipo char). Indique su nombre correspondiente: Soltero, Casado o
Divorciado.
#include <stdio.h>
#include <conio.h>
main()
{
char edo_civil;

clrscr(); /* Limpia la pantalla */
printf ("Introduzca el Estado civil (S/C/D): ");
edo_civil = getche();
printf("\n");

switch (edo_civil)
{
case 's' :
case 'S' : printf ("Es Soltero.\n");
break;
case 'c' :
case 'C' : printf ("Es Casado.\n");
break;
case 'd' :
case 'D' : printf ("Es Divorciado.\n");
break;
default : printf ("Debe introducir una letra: S, C o D.\n");
}
printf ("Presione Enter..."); getche();
return;
}
23
Ejercicio N 16:
Leer un nmero, un operador matemtico (+,-,*,/) (tipo char) y otro nmero. Realice el clculo de la
suma, resta, multiplicacin o divisin entre los dos nmeros, de acuerdo al operador ledo.

#include <stdio.h>
#include <conio.h>

main()
{
int num1, num2;
char operador;
float resultado;

clrscr(); /* Limpia la pantalla */
printf ("Introduzca el primer numero: ");
scanf ("%d", &num1);
printf ("Introduzca el operador (+,-,*,/): ");
operador = getche();
printf("\n");
printf ("Introduzca el segundo numero: ");
scanf ("%d", &num2);

switch (operador)
{
case '+' : resultado = num1 + num2;
printf ("La suma es: %.1f\n", resultado);
break;
case '-' : resultado = num1 - num2;
printf ("La resta es: %.1f\n", resultado);
break;
case '*' : resultado = num1 * num2;
printf ("El producto es: %.1f\n", resultado);
break;
case '/' : resultado = (float) num1 / num2;
printf ("El cociente es: %.1f\n", resultado);
break;
default : printf ("Operador incorrecto...\n");
}

printf ("Presione Enter..."); getche();
return;
}
-------- o --------


Ejercicios propuestos:
P37.- Leer un carcter alfabtico (tipo char). Indique si es una vocal, sino indique que no es una vocal.
P38.- Leer el precio de un artculo y la ubicacin (estante) (A, B, C o D). Indique el precio final, sabiendo
que a los artculos del estante A se les descuenta Bs. 5000; a los del estante B se les descuenta el 15%
del precio; los del estante C quedan a la mitad del precio; y a los del estante D se les descuenta la quinta
parte del precio.
P39.- Leer el tiempo (horas) que una persona naveg en Internet en un Cyber caf. Calcular el monto a
cancelar, sabiendo que: una hora se paga a Bs. 1200; si naveg entre 2 y 4 horas cancela Bs. 1000 la
hora; si naveg 5 horas solo cancela Bs. 4000; y si naveg ms de 5 horas cancela Bs. 800 la hora.
P40.- Leer un nmero, un operador aritmtico (+, -, *, /) y un segundo nmero. Calcular e imprimir el
resultado de esa operacin matemtica. (Utilice la sentencia Case).
-------- o --------

24
C. Estructura Repetitiva
La estructura repetitiva, se refiere a una instruccin o bloque de instrucciones que se repiten de
acuerdo a una condicin que los controla. La estructura repetitiva es tambin llamada: ciclo, iteracin,
bucle, lazo o loop.

Conceptos asociados:
Contador: Variable que incrementa su valor en una unidad. Se utiliza para contar sucesos.
Ejemplos: contador = contador + 1;
contF = contF + 1;
contF++;


Acumulador: Variable cuyo contenido se incrementa en un valor. Se utiliza para acumular o totalizar
valores.
Ejemplos: acumulador = acumulador + valor;
acumed = acumed + edad;
acumed += edad;

En C la estructura repetitiva est determinada por tres instrucciones repetitivas:
a. while
b. do .. while
c. for
-------- o --------


a. Estructura Repetitiva: while:
Esta instruccin repite un determinado nmero de instrucciones mientras la condicin sea
verdadera, es decir, mientras la expresin booleana que controla el ciclo tenga un valor verdadero (1).
Sintaxis:
while (<expresin Booleana>)
{
<instrucciones>;
}
En donde, <expresin Booleana> es una expresin simple o compuesta que tiene un valor
booleano verdadero o falso (1 o 0), ejemplo: edad >= 18.
<instrucciones> se refiere a una o ms instrucciones. Si el ciclo contiene una sola instruccin, se
puede omitir las llaves ({ }) que delimitan el ciclo.
Recuerde no colocar un punto y coma (;) despus de <expresin Booleana>, ya que esto
provocara un resultado inesperado o Loop indefinido.
A continuacin veremos dos tipos de construccin de ciclos con while: cuando se conoce el
nmero de veces que se repite el ciclo y cuando no se conoce el nmero de veces que se repetir.

Tipo A: Cuando se conoce el nmero de veces que se repite el ciclo while: Se controla por medio
de un contador.
Ejemplo:
cont = 0;
while (cont < 3)
{
cont = cont + 1;
<instrucciones>;
}
El ejemplo anterior repetir las <instrucciones> tres (3) veces.
-------- o --------
25
Ejercicio N 17:
Leer Nombre y Sexo de 5 personas. Calcular cuntas hembras hay.
#include <stdio.h>
#include <conio.h>
main()
{
char nombre[20], sexo;
int cont, contF;

textcolor (LIGHTGREEN);
textbackground (BLUE);
clrscr(); /* Limpia la pantalla */

contF = 0;
cont = 0;
while (cont < 5)
{
cont = cont + 1;
printf ("Introduzca Nombre: ");
scanf ("%s", nombre);
printf ("Introduzca Sexo (F/M): ");
sexo = getche();
printf("\n");

if (sexo == 'F' || sexo == 'f')
contF = contF + 1;
}
printf ("La cantidad de hembras es: %d\n", contF);
printf ("Presione Enter, para continuar..."); getche();
return;
}
-------- o --------
Ejercicio N 18:
Leer Nombre y Edad de 10 personas. Calcular: a) La suma de las edades; b) Edad mayor.
#include <stdio.h>
#include <conio.h>
main()
{
char nombre[20];
int edad;
int cont=0, acumed=0, mayor=0;

while (cont < 10)
{
cont = cont + 1;
clrscr(); /* Limpia la pantalla */
gotoxy (10,2); printf ("Introduzca Nombre: "); scanf ("%s", nombre);
gotoxy (10,4); printf ("Introduzca Edad: "); scanf("%d", &edad);
acumed = acumed + edad;
if (edad > mayor)
mayor = edad;
}
clrscr(); /* Limpia la pantalla */
gotoxy (10,2); printf ("Resultados: \n");
gotoxy (10,4); printf ("La suma de las edades es: %d\n", acumed);
gotoxy (10,6); printf ("La edad mayor es: %d\n", mayor);
gotoxy (10,8); printf ("Presione Enter, para continuar..."); getche();
return;
}
26
Nota: En el ejemplo anterior se ha inicializado las variables (tipo int) cont, acumed y mayor con cero
(0) en la instruccin de declaracin. Esto es vlido en C.
-------- o --------


Tipo B: Cuando NO se conoce el nmero de veces que se repite el ciclo while: Se controla por
medio de una lectura.
Ejemplo:
seguir = 'S';
while (seguir == 'S')
{
<instrucciones>;
printf ("Desea seguir S/N: ");
seguir = getche ();
}
El ejemplo anterior repetir la o las <instrucciones> mientras la variable seguir tenga el valor S.
-------- o --------


Ejercicio N 19:
Leer Nombre y Nota de N alumnos. Calcular la nota promedio.
#include <stdio.h>
#include <conio.h>

main()
{
char nombre[20];
int nota;
char seguir;
int contn, acumn;
float promn;

clrscr(); /* Limpia la pantalla */
acumn = 0; contn = 0;

seguir = 'S';
while (seguir == 'S' || seguir == 's')
{
printf ("Introduzca Nombre: "); scanf ("%s", nombre);
printf ("Introduzca Nota: "); scanf ("%d", &nota);

acumn = acumn + nota;
contn = contn + 1;

printf ("Desea seguir S/N: ");
seguir = getche();
printf("\n");
}
promn = (float) acumn / contn;
printf ("La nota promedio es: %.1f", promn); getche();
return;
}
-------- o --------




27
Ejercicios propuestos:
P41.- Leer Nombre y Nota de 15 alumnos. Imprima los nombres y notas de los aprobados.
P42.- Leer el sueldo de 8 empleados. Calcular el Sueldo promedio.
P43.- Leer Edad y sexo de N empleados. Calcular edad promedio de los varones y edad promedio de las
hembras.
P44.- Leer Edad de 7 personas. Calcular el porcentaje de mayores de edad y el porcentaje de menores.
P45.- Leer el nombre, edad, sueldo y sexo de 20 empleados. Calcular: a) Edad promedio; b) Cuntos
varones ganan entre Bs. 500000 y Bs. 900000; c) Suma de las edades de las hembras.
P46.- Leer Nota de 5 estudiantes. Calcular la nota mayor y la nota menor.
P47.- Escribir un programa de encuesta electoral para N personas. Leer el Apellido y si est inscrito para
votar (S/N). Si est inscrito, leer si va a Votar o no (S/N). Si va a votar leer candidato (A o B). Se le pide
calcular: a) Cuntos encuestados; b) Cantidad de inscritos y no inscritos. c) Porcentaje del candidato A,
del candidato B y de abstencin (inscritos que no votarn); d) Indique el candidato ganador (A o B) o si
hay un empate.
-------- o --------

b. Estructura Repetitiva: do .. while:
Esta instruccin repite un determinado nmero de instrucciones, mientras se cumpla una
condicin.
Sintaxis:
do
<instrucciones>;
} while (<expresin Booleana>);

En donde, <expresin Booleana> es una expresin simple o compuesta que tiene un valor
booleano verdadero o falso (1 0), ejemplo: cont < 5.
<instrucciones> se refiere a una o ms instrucciones.
Esta estructura repetitiva acta de la siguiente forma: se ejecuta la secuencia de <instrucciones>
que estn entre los smbolos llaves ({ }), y se evala la <expresin Booleana>; si su valor es verdadero
(1) entonces la ejecucin de la secuencia de <instrucciones> se repite; de lo contrario, si su valor es falso
(0), finaliza el ciclo.
Esta estructura repetitiva ejecuta las <instrucciones> del ciclo al menos una vez
A continuacin veremos dos tipos de construccin de ciclos con do..while: cuando se sabe el
nmero de veces que se repite el ciclo y cuando no se sabe el nmero de veces que se repetir.


Tipo A: Cuando se conoce el nmero de veces que se repite el ciclo do..while: Se controla por
medio de un contador.
Ejemplo:
cont = 0;
do
{
cont = cont + 1;
<instrucciones>;
} while (cont < 3);
El ejemplo anterior repetir las <instrucciones> tres (3) veces.
-------- o --------

Ejercicio N 20:
Leer Nombre y Nota de 8 alumnos. Calcular la cantidad de Aprobados y Reprobados, y el porcentaje de
aprobados y reprobados.
#include <stdio.h>
#include <conio.h>
28
const TOTAL = 8;
char nombre[20];
int nota, cont, contap=0;
float porcentap;

main()
{
clrscr(); /* Limpia la pantalla */
cont = 0;
do
{
cont = cont + 1;
printf ("Introduzca Nombre: "); scanf ("%s", nombre);
printf ("Introduzca Nota: "); scanf ("%d", &nota);
if (nota >= 12)
contap = contap + 1;
} while (cont < TOTAL);

clrscr(); /* Limpia la pantalla */
printf ("La cantidad de Aprobados es: %d \n", contap);
printf ("La cantidad de Reprobados es: %d \n", TOTAL - contap);

porcentap = (float) contap * 100 / TOTAL;
printf ("El porcentaje de Aprobados es: %6.2f \%. \n", porcentap);
printf ("El porcentaje de Reprobados es: %6.2f \%. \n", 100-porcentap);
printf ("Presione Enter, para salir..."); getche();
return;
}

Nota: Se ha utilizado la sentencia const para declarar la constante TOTAL con el valor 8.
-------- o --------



Tipo B: Cuando NO se conoce el nmero de veces que se repite el ciclo do..while: Se controla
por medio de una lectura.
Ejemplo:
do
{
<instrucciones>;
printf ("Desea seguir S/N: ");
seguir = getche ();
} while (seguir == 'S');
El ejemplo anterior repetir la o las <instrucciones> mientras la variable seguir tenga el valor S.
-------- o --------

Ejercicio N 21:
Leer Cdula, Sueldo y Sexo de N empleados. Indique quin tiene Sueldo Promedio ms alto, las
hembras o los varones; o si tienen promedios iguales.
#include <stdio.h>
#include <conio.h>

char cedula[10];
float sueldo, acumsdoF, acumsdoM, promsdoF, promsdoM;
char sexo, seguir;
int contF, contM;

29
main()
{
clrscr(); /* Limpia la pantalla */
acumsdoF = 0; acumsdoM = 0;
contF = 0; contM = 0;
do
{
printf ("Introduzca Cedula: "); scanf ("%s", cedula);
printf ("Introduzca Sueldo: "); scanf ("%f", &sueldo);
printf ("Introduzca Sexo (F/M): "); sexo = getche();
printf("\n");

if (sexo == 'F' || sexo == 'f')
{
acumsdoF = acumsdoF + sueldo;
contF++;
}
else
{
acumsdoM = acumsdoM + sueldo;
contM++;
}
printf ("Desea leer los datos de otro empleado S/N: ");
seguir = getche();
printf("\n");
} while (seguir == 'S' || seguir == 's');

if (contF > 0) /* verifica que no ocurra division por cero */
promsdoF = acumsdoF / contF;
else
promsdoF = 0;

if (contM > 0) /* verifica que no ocurra division por cero */
promsdoM = acumsdoM / contM;
else
promsdoM = 0;

printf ("El Sueldo promedio de las hembras es: %10.2f \n", promsdoF);
printf ("El Sueldo promedio de los varones es: %10.2f \n", promsdoM);

if ( promsdoF == promsdoM )
printf ("Las hembras y varones tienen igual Sueldo Promedio. \n");
else
if ( promsdoF > promsdoM )
printf ("Las hembras tienen mayor Sueldo Promedio. \n");
else
printf ("Los varones tienen mayor Sueldo Promedio. \n");
printf ("Presione Enter, para salir..."); getche();
return;
}
-------- o --------
Ejercicios propuestos:
P48.- Leer la nota de 15 alumnos. Calcular la cantidad de alumnos con nota entre 15 y 20, y qu
porcentaje de alumnos representa.
P49.- Leer Nombre, Edad y Sexo de 10 personas. Calcular: a) Cantidad de mayores de edad y de
menores; b) Edad mayor de los varones y edad menor de las hembras; c) Edad Promedio.
P50.- Leer Cdula y asignatura inscrita por una cantidad no determinada de alumnos. Calcular cuntos
alumnos inscribieron la asignatura Matemtica.
-------- o --------
30
c. Estructura Repetitiva: for:
Esta instruccin repite un determinado nmero de instrucciones, por medio de un ndice (variable)
que indica el nmero de veces que se repite el ciclo. Se debe especificar un valor inicial, una condicin y
el incremento (o decremento). Para esta estructura es necesario saber el nmero de veces que se repite
el ciclo.
Sintaxis:
for (<ndice> = <valor inicial>; <condicin>; <incremento>)
{
<instrucciones>;
}

En donde, <ndice> es la variable que se incrementa (o decrementa) para controlar el ciclo.
<valor inicial> es el valor inicial que tomar la variable <ndice>.
Si la <condicin> tiene un valor verdadero (1) el ciclo se repite, sino el ciclo termina.
<instrucciones> se refiere a una o ms instrucciones. Si el ciclo contiene una sola
instruccin, se puede omitir las llaves ({ }) que delimitan el ciclo.
Recuerde no colocar un punto y coma (;) despus de la sentencia for, ya que esto provocara un
resultado inesperado (ejecutara las instrucciones del ciclo una sola vez).
-------- o --------

Ejercicio N 22:
Leer Apellido y Nota de 8 alumnos. Imprimir el apellido del alumno con nota menor.

#include <stdio.h>
#include <conio.h>
#include <string.h>

main()
{
char apellido[20], apellidoaux[20];
int nota, i, menor;

clrscr(); /* Limpia la pantalla */
gotoxy (10,1); printf ("Introduzca Apellido: ");
gotoxy (40,1); printf ("Introduzca Nota: ");
menor = 21;
for (i = 1; i <= 8; i++)
{
gotoxy (10,i+1); scanf ("%s", apellido);
gotoxy (40,i+1); scanf ("%d", &nota);
if (nota < menor)
{
menor = nota;
strcpy (apellidoaux, apellido);
}
}
gotoxy (10,20);
printf ("El alumno %s tiene la nota menor %d \n", apellidoaux, menor);
gotoxy (10,22); printf ("Presione Enter, para salir..."); getche();
return;
}
-------- o --------

Nota: La funcin strcpy() pertenece a la biblioteca string.h, la cual permite copiar un string en otra
variable string (permite asignar un string a otro).
-------- o --------
31
Ejercicio N 23:
Leer Nombre, Sueldo y Sexo de 6 empleados. Calcular el sueldo promedio de los varones.

#include <stdio.h>
#include <conio.h>

main()
{
char nombre[20], sexo;
float sueldo, acumsdov, promsdov;
int i, contv;

clrscr(); /* Limpia la pantalla */
acumsdov = 0; contv = 0;
for (i = 1; i <= 6; i++)
{
printf ("Introduzca Nombre: "); scanf ("%s", nombre);
printf ("Introduzca Sueldo: "); scanf ("%f", &sueldo);
printf ("Introduzca Sexo F/M: "); sexo = getche();
printf ("\n");
if (sexo == 'M' || sexo == 'm')
{
acumsdov = acumsdov + sueldo;
contv = contv + 1;
}
}
if (contv == 0) /* para evitar la division por cero */
promsdov = 0;
else
promsdov = acumsdov / contv;
printf ("El sueldo promedio de los varones es: %10.2f \n", promsdov);
printf ("Presione Enter, para salir..."); getche();
return;
}
-------- o --------


Ejercicios de Series

Ejercicio N 24:
Imprimir los 10 primeros nmeros enteros impares positivos.
#include <stdio.h>
#include <conio.h>
main()
{
int i;

clrscr(); /* Limpia la pantalla */
for (i = 1; i <= 10; i++)
{
printf ("%d \n", i * 2 - 1);
}
getche();
return;
}
-------- o --------
Nota: El ejercicio anterior posee una expresin matemtica (un clculo) en la instruccin de salida
printf(), lo cual es vlido en C.
32
Un ciclo for es controlado por un ndice de tipo ordinal (ejemplo: tipo integer o Char). El
siguiente ejercicio es controlado por una variable de tipo char.

Ejercicio N 25:
Imprimir las letras maysculas del alfabeto (desde la A hasta la Z), separados por una coma ( , ).
#include <stdio.h>
#include <conio.h>
char x;
main()
{
clrscr(); /* Limpia la pantalla */
for (x = 'A'; x <= 'Z'; x++)
printf ("%c ,", x);
getche();
return;
}

Nota: Observe que el ejercicio anterior tiene una sola instruccin dentro del ciclo, y se omitieron las llaves
({ }) que delimitan el ciclo, lo cual tambin es vlido.
-------- o --------
Ejercicio N 26:
Imprimir los nmeros enteros pares, que hay entre 1 y 50 (en forma decreciente), separados por un
espacio en blanco (' ' ).
#include <stdio.h>
#include <conio.h>
int i;
main()
{
clrscr(); /* Limpia la pantalla */
for (i = 50; i >= 1; i--)
if ((i % 2) == 0) /*el operador % retorna el resto de la division */
printf ("%d ", i);
getche();
return;
}
-------- o --------

Ejercicio N 27:
Imprimir 10 nmeros de tres en tres, comenzando con el nmero 8 (en forma ascendente).
#include <stdio.h>
#include <conio.h>
main()
{
int num, i;

clrscr(); /* Limpia la pantalla */
num = 8;
for (i = 1; i <= 10; i++)
{
printf ("%d ", num);
num = num + 3;
}
getche();
return;
}
-------- o --------
Nota: Otra forma de resolver el ejercicio anterior es la siguiente:
33
#include <stdio.h>
#include <conio.h>
main()
{
int num, i;

clrscr(); /* Limpia la pantalla */
for (i=1, num=8; i<=10; i++, num=num+3)
printf ("%d ", num);
getche();
return;
}
Nota: Observe que se puede inicializar ms de una variable en la sentencia for. Adems, el incremento
o decremento no siempre es en una unidad.
-------- o --------
Ejercicio N 28:
Leer un nmero entero positivo. Calcular el Factorial (Ejemplo: 5! = 5 * 4 * 3 * 2 * 1 = 120).
#include <stdio.h>
#include <conio.h>
main()
{
int n, i, factorial;

clrscr(); /* Limpia la pantalla */
printf ("Introduzca un numero entero positivo: "); scanf ("%d", &n);
factorial = 1;
for (i = 1; i <= n; i++)
factorial = factorial * i;
printf ("El Factorial de %d es: %d", n, factorial);
getche();
return;
}
-------- o --------
Ejercicio N 29:
Imprimir los primeros 10 nmeros de la serie Fibonacci. Secuencia de enteros, donde cada elemento es
la suma de los dos elementos anteriores. Ejemplo: 0, 1, 1, 2, 3, 5, 8, 13, ...
#include <stdio.h>
#include <conio.h>
main()
{
int a, b, c, i;

clrscr(); /* Limpia la pantalla */
printf ("Primeros 10 numeros de la serie Fibonacci: \n");
a = 0;
b = 1;
printf ("%d ", a);
printf ("%d ", b);
for (i = 1; i <= 8; i++)
{
c = a + b;
printf ("%d ", c);
a = b;
b = c;
}
getche();
return;
}
34
Ejercicios propuestos:
P51.- Imprimir los nmeros enteros del 1 al 10.
P52.- Imprimir la siguiente serie matemtica: 12, 11, 10, 9, 8, 7.
P53.- Imprimir la serie: -2, -4, -6, -8, -10.
P54.- Imprimir la serie: -1, 2, -3, 4, -5, 6, -7, 8, -9, 10.
P55.- Imprimir la serie: 1, 10, 2, 9, 3, 8, 4, 7, 5, 6, 6, 5, 7, 4, 8, 3, 9, 2, 10, 1.
P56.- Leer dos nmeros enteros diferentes. Imprimir los nmeros enteros que hay entre los dos nmeros
ledos, en orden ascendente y luego descendente. Ejemplo: Se ley 2 y 5, imprimir 2,3,4,5 y 5,4,3,2.
P57.- Imprimir los nmeros enteros entre 1 y 100 que tienen su raz cuadrada entera (sin decimales).
P58.- Leer un nmero entero positivo e indique si es un nmero Primo.
P59.- Imprimir los nmeros Armstrong que hay entre 1 y 500. Los nmeros Armstrong son aquellos
donde la suma de sus dgitos individuales es el nmero original mismo. Ejemplo: 153; 1
3
+5
3
+3
3
=153.
-------- o --------



Ciclos Anidados (Doble ciclo, Triple ciclo)
Cuando un ciclo (instruccin de repeticin) se incluye completamente dentro de otro, se dice que
conforman ciclos anidados.
Se puede tener dos, tres o ms ciclos anidados. La construccin de dos ciclos anidados se
conoce como doble ciclo. Tres ciclos anidados se conoce como Triple ciclo.
En estructuras cclicas anidadas, un ciclo se ejecuta ms lento que otro interno a l; y un ciclo
se ejecuta ms rpido que otro externo a l.
Ejemplo: cont = 0;
while (cont < 3) /* ciclo externo, ms lento */
{
cont = cont + 1;
for (i=1; i<=5; i++) /* ciclo interno, ms rpido */
printf (("Hola \n");
}
En el ejemplo anterior la cadena Hola se imprimir 15 veces.

Ejemplo: for (i=1; i<=4; i++)
for (j=1; j<=3; j++)
printf ("%d", i);
El ejemplo anterior imprimir: 111222333444.

Ejemplo: cont = 0;
for (i=1; i<=4; i++)
for (j=1; j<=2; j++)
{
cont++;
printf ("%d", cont);
}
El ejemplo anterior imprimir: 12345678.

Ejemplo: for (i=1; i<=2; i++)
for (j=1; j<=3; j++)
for ('A'; k<='C'; k++)
printf ("%c", k);
El ejemplo anterior imprimir: ABCABCABCABCABCABC.
-------- o --------
Un programa de doble ciclo, generalmente, tiene clculos que involucran: contadores,
acumuladores, mayor y/o menor. Es importante ubicar correctamente la inicializacin de estas variables
(Ejemplo: contF = 0), y las salidas correspondientes.
35
La instruccin de inicializacin (ya sabemos) se ubica antes de un ciclo, pero De cul?
Supongamos un ejemplo de cinco (5) alumnos y cada alumno tiene tres (3) notas.
Si se realiza un clculo general o total (por ejemplo: Suma de las notas), la inicializacin se ubica
antes del ciclo externo. Esto genera una salida (respuesta) nica despus del ciclo externo.
Si el clculo es especfico (por ejemplo: Nota mayor de cada alumno), la inicializacin se ubica
antes del ciclo interno. La salida correspondiente se ubica despus del ciclo interno. Esta salida, en
nuestro ejemplo, se ejecutar cinco (5) veces
Ejemplo:
main()
{
<Inicializaciones generales>
Ciclo Externo
{
<Inicializaciones especficas>
Ciclo Interno
{
<clculos>
} /*fin del ciclo Interno*/
<Salidas Especficas>
} /*fin del ciclo Externo*/
<Salidas Generales>
}
-------- o --------

Ejercicio N 30:
Leer el nombre de cinco (5) alumnos, y por cada alumno leer tres (3) Notas (de exmenes). Calcular: a)
Nota mayor de cada alumno; a) Suma de todas las notas.

#include <stdio.h>
#include <conio.h>
main()
{
char nombre[20];
int nota, acumn, mayorn, i, j;

textcolor (LIGHTCYAN);
textbackground (BLUE);
clrscr(); /* Limpia la pantalla */
acumn = 0;
for (i = 1; i <= 5; i++)
{
printf ("Introduzca Nombre del alumno: "); scanf ("%s", nombre);
mayorn = 0;
for (j = 1; j <= 3; j++)
{
printf ("Introduzca Nota: "); scanf ("%d", &nota);
acumn = acumn + nota;
if (nota > mayorn)
mayorn = nota;
} /*fin del for j*/
printf ("La nota mayor del alumno %s es: %d \n", nombre, mayorn);
} /*fin del for i*/
printf ("La suma de todas las notas es: %d \n", acumn);
printf ("Presione Enter, para salir..."); getche();
return;
}
-------- o --------

36
Ejercicio N 31:
Leer el apellido y las N Ventas de tres (3) vendedores. Calcular: a) La venta promedio de cada vendedor;
y b) Cantidad de ventas menores a Bs.100000.

#include <stdio.h>
#include <conio.h>

main()
{
char apellido[20], seguir;
float venta, acumvta, promvta;
int i, contmenor, contvta;

textcolor (YELLOW);
textbackground (BLUE);
clrscr(); /* Limpia la pantalla */
contmenor = 0;
for (i = 1; i <= 3; i++)
{
printf ("Introduzca el Apellido del Vendedor: ");
scanf ("%s", apellido);
acumvta = 0; contvta = 0;
seguir = 'S';
while (seguir == 'S' || seguir == 's')
{
printf ("Introduzca Venta: "); scanf ("%f", &venta);
if (venta < 100000)
contmenor = contmenor + 1;
acumvta = acumvta + venta;
contvta = contvta + 1;
printf ("Desea leer otra venta de este vendedor [S/N] ?: ");
seguir = getche();
printf ("\n");
} /*fin del while*/
promvta = acumvta / contvta;
printf ("La venta promedio de %s es: %.2f \n", apellido, promvta);
} /*fin del for*/
printf ("La cantidad de ventas menores a Bs100000 es: %d \n", contmenor);
textcolor (LIGHTGREEN);
printf ("Presione Enter, para salir..."); getche();
return;
}
-------- o --------


Ejercicios propuestos:
P60.- Leer el precio de N artculos comprados y la cdula de N clientes de un establecimiento. Calcular:
a) Monto total y Monto a pagar con IVA (14%) por cada cliente. b) Cdula del cliente con el mayor Monto
a pagar con IVA. c) Cantidad de artculos vendidos.
P61.- Una empresa tiene cuatro sucursales. Cada sucursal tiene 5 empleados. Se pide: A) Calcular el
Sueldo final a pagar a cada empleado, sabiendo que se da un bono de Bs.50000 por hijo, y se descuenta
el 5% a los mayores de edad. b) Calcular el Sueldo final promedio por sucursal. c) Nombre de la Sucursal
que cancel ms dinero en sueldos. Por cada sucursal leer: Nombre; y por cada empleado leer: Apellido,
Edad, nmero de hijos y Sueldo base.

-------- o --------



37
Manejo de Datos Tipo char
El tipo char es utilizado para almacenar un valor entero en el rango 0 a 127, correspondiente a
un carcter del cdigo ASCII (American Standard Code for Information Interchange: Cdigo Americano
para el Intercambio de Informacin).
De forma similar el tipo unsigned char puede almacenar valores en el rango de 0 a 255,
valores correspondientes a los nmeros ordinales de los 256 caracteres ASCII.
Al definir una constante tipo char o al asignar un valor a una variable char, el valor debe
escribirse entre apstrofes.
Ejemplo:
const letrak = 'k';
char vocal;
main()
{
vocal = 'e';
printf ("%c %c", letrak, vocal);
}

Si se quiere asignar el carcter apstrofe a una constante o variable char, se debe escribir el
apstrofe precedido del smbolo \. ( Ejemplo: caracter = '\''; ).
Los valores (carcter) que puede contener una constante o variable char son los caracteres
alfabticos (A..Z, a..z), dgitos numricos (0..9) y los smbolos especiales (!, ?, *, ;, #, etc.).
Este conjunto de (256) caracteres estn definidos y tienen un orden, es decir, un valor numrico que los
representa en el cdigo ASCII.
Por ejemplo, el carcter 'A' tiene el valor 65 en la tabla ASCII; el carcter 'a' se representa con
el carcter ASCII 97. (ver Tabla ASCII al final de la gua).

Operadores:
Podemos utilizar los operadores relacionales ( >, <, >=, <=, ==, != ), para comparar datos de tipo
char. Un carcter es mayor que otro si su valor ASCII es mayor.

Ejemplo:
if ('A' > 'a')
printf ("el carcter A es mayor que a");
else
printf ("el carcter a es mayor que A");

El ejemplo anterior imprimir el carcter a es mayor que A.

C ofrece algunas funciones asociadas con los datos de tipo char en la biblioteca ctype.h.

Funciones asociadas con char:
Funcin Descripcin Operando Resultado
toupper(car)
Retorna la mayscula de la variable car char char
tolower(car)
Retorna la minscula de la variable car char char
isalpha(car)
Verifica si car es un carcter alfabtico (A-Z , a-z) char 0 no 0
isdigit(car)
Verifica si car es un dgito (0-9) char 0 no 0
islower(car)
Verifica si car es una letra minscula (a-z) char 0 no 0
isupper(car)
Verifica si car es una letra mayscula (A-Z) char 0 no 0



38
Ejemplo de funcin toupper :
letra = toupper('a'); /* se asigna 'A' a la variable letra */
printf ("%c", letra);
En el ejemplo anterior, la funcin toupper retorna la mayscula de a y la asigna a la variable letra.
Se imprimir el carcter: A.
Nota: La funcin toupper solo afecta a los caracteres en el rango a..z. Si el carcter no est en el
rango a..z, la funcin toupper retorna el mismo valor.
-------- o --------

Ejemplo de funcin tolower :
letra = tolower('F'); /* se asigna 'f' a la variable letra */
printf ("%c", letra);
En el ejemplo anterior, la funcin tolower retorna la minscula de 'F' y la asigna a la variable letra.
Se imprimir el carcter: f.
-------- o --------

Ejemplo de funcin isalpha :
caracter = 'h';
if (isalpha(caracter))
printf ("Es un caracter alfabetico");
else
printf ("No es un caracter alfabetico");
El ejemplo anterior imprimir: Es un caracter alfabetico.
-------- o --------

Ejemplo de funcin isdigit :
digito = '7';
if (isdigit(digito))
printf ("Es un digito");
else
printf ("No es un digito");
El ejemplo anterior imprimir: Es un digito.
-------- o --------

Ejemplo de funcin islower / isupper :
letra = 'G';
if (islower(letra))
printf ("Es una letra minuscula");
if (isupper(letra))
printf ("Es una letra mayuscula");
El ejemplo anterior imprimir: Es una letra mayuscula.
-------- o --------

Nota: Recuerde que puede leer una variable char con la funcin getche(), especificando la biblioteca
stdio.h. Adems, para mostrar el contenido de una variable char con la funcin printf() debe
colocar el especificador "%c".
-------- o --------




39
Ejercicio N 32:
Leer una letra (utilice getche). Si la letra es mayscula imprimirla en minscula; si es minscula imprimirla
en mayscula; si no es una letra, indquelo.

#include <stdio.h>
#include <conio.h>
#include <ctype.h>

main()
{
char letra;

clrscr(); /* Limpia la pantalla */
printf ("Introduzca una letra: ");
letra = getche();
printf ("\n");

if (isupper(letra)) /* si Letra esta entre: A y Z */
printf ("La letra %c en minuscula es: %c \n", letra, tolower(letra));
else
if (islower(letra)) /* si Letra esta entre: a y z */
printf ("La letra %c en mayuscula es: %c \n", letra, toupper(letra));
else
printf ("El caracter %c no es una letra \n", letra);

printf ("Presione Enter para Continuar..."); getche();
return;
}
-------- o --------

Ejercicio N 33:
Leer una letra (utilice getche). Si la letra es mayscula imprimirla en minscula; si es minscula imprimirla
en mayscula; si no es una letra, indquelo. No utilice las funciones: islower(), isupper(), tolower(),
toupper()

#include <stdio.h>
#include <conio.h>

main()
{
char letra;

clrscr(); /* Limpia la pantalla */
printf ("Introduzca una letra: ");
letra = getche();
printf ("\n");

if (letra >= 'A' && letra <= 'Z') /* si Letra esta entre: A y Z */
printf ("La letra %c en minuscula es: %c \n", letra, letra+32);
else
if (letra>= 'a' && letra <= 'z') /* si Letra esta entre: a y z */
printf ("La letra %c en mayuscula es: %c \n", letra, letra-32);
else
printf ("El caracter %c no es una letra \n", letra);

printf ("Presione Enter para Continuar..."); getche();
return;
}
-------- o --------

40
Ejercicio N 34:
Imprimir los caracteres de la tabla ASCII desde el valor 32 hasta el 254.

#include <stdio.h>
#include <conio.h>
main()
{
unsigned char x;

clrscr(); /* Limpia la pantalla */
for (x = 32; x <= 254; x++)
printf ("%c ", x);
getche();
return;
}
-------- o --------

Ejercicio N 35:
Validar la lectura de sexo (F/M), es decir, repetir la lectura si es necesario, hasta que se introduzca un
valor vlido (una F o una M).

#include <stdio.h>
#include <conio.h>
#include <ctype.h>
main()
{
char sexo;

clrscr(); /* Limpia la pantalla */
printf ("Introduzca Sexo (F/M): ");
do
{
sexo = toupper(getch()); /*Lee un caracter y convierte a mayuscula*/
} while (sexo != 'F' && sexo != 'M');
printf ("%c \n", sexo);

printf ("Presione una Tecla para Continuar..."); getche();
return;
}
-------- o --------
Nota: El ejercicio anterior (modificado adecuadamente) sirve para validar la lectura de determinados
caracteres, por ejemplo, validar la lectura de una S o N, validar la lectura de una vocal, etc.

Nota: En el ejercicio anterior se utiliz la funcin getch() la cual lee un carcter del teclado sin
mostrarlo por pantalla (sin eco), y sin necesidad de pulsar la tecla Enter.
-------- o --------


Manejo de Datos Tipo STRING
Una variable de tipo String, es una cadena o tira de caracteres. Los valores tipo cadena se
escriben entre comillas dobles. El nmero mximo de caracteres en una cadena es 255.
Ejemplo:
char cadena[20];
main()
{
printf ("Introduzca una cadena: "); scanf("%s", cadena);
printf ("%s \n", cadena);
}
41
En el ejemplo anterior, se declar una variable tipo cadena o string de 20 caracteres. Se envi
una cadena entre comillas dobles por pantalla, por medio de la funcin printf(). Se ley la variable
cadena por medio de scanf() utilizando el especificador de formato "%s".
En C podemos especificar entre corchetes [ ] el tamao de la variable string, es decir, la cantidad
mxima de caracteres permitida en esa variable. Si no se define el tamao (entre corchetes), la variable
ser tipo char y podr contener un slo carcter.
Para asignar una cadena a una variable string, no podemos utilizar el smbolo =. Debemos
utilizar la funcin strcpy().

Ejemplo:
char lenguaje[20]; nombre[10];

main()
{
strcpy (lenguaje, "Lenguaje C");
printf ("%s \n", lenguaje);

strcpy (nombre, "");
strcpy (nombre, "U.E. Lara");
printf ("%s \n", nombre);
}

Lenguaje C ofrece funciones contenidas en la biblioteca string.h asociados con string.

Funciones asociadas con string:
Funcin Descripcin
strcpy(st1,st2)
Copia el string st2 en el string st1
strcat(st1,st2) Agrega el string st2 al final del string st1
strlwr(str)
Convierte el string str en minscula
strupr(str)
Convierte el string str en mayscula
strrev(str)
Invierte la cadena str
strlen(str) Retorna un entero que es la longitud del string
strcmp(st1,st2)
Compara dos cadenas. Son iguales si strcmp retorna 0
strset(str,chr) Convierte cada caracter del string str al caracter chr
strnset(str,chr,n)
Convierte los primeros n caracteres del string str al caracter chr
strstr(st1,st2)
Verifica si la subcadena st2 est en el string st1
strchr(str,chr)
Verifica si el caracter chr est contenido en el string str


A.- strcpy(): Esta funcin copia o asigna una cadena a una variable string.
Sintaxis:
strcpy (<string1>, <string2>);
Donde <string1> es una variable de tipo string, que va a recibir la cadena <string2>.
Ejemplo:
char cadena[20];
strcpy (cadena, "Esta es Una Cadena");
printf ("cadena: %s \n", cadena);

Al ejecutarse las instrucciones, cadena contendr: Esta es Una Cadena.
-------- o --------
42
B.- strcat(): Esta funcin agrega una cadena al final de otro string.
Sintaxis:
strcat (<string1>, <string2>);
Donde <string1> es una variable de tipo string, al cual se le agregar al final (concatenar) la
cadena <string2>.
Ejemplo:
char cadena[20];
strcpy (cadena, "Programacion");
strcat (cadena, " en C");
printf ("cadena: %s \n", cadena);

Al ejecutarse las instrucciones, cadena contendr: Programacion en C.
-------- o --------
C.- strlwr(): Esta funcin convierte cada carcter alfabtico de un string a minscula.
Sintaxis:
strlwr (<string>);
Donde <string> es una variable de tipo string, cuyo contenido se convertir en minscula.
Ejemplo:
char cadena[20];
strcpy (cadena, "Lenguaje C");
strlwr (cadena);
printf ("cadena: %s \n", cadena);

Al ejecutarse las instrucciones, cadena contendr: lenguaje c.
-------- o --------
D.- strupr(): Esta funcin convierte cada carcter alfabtico de un string a mayscula.
Sintaxis:
strupr (<string>);
Donde <string> es una variable de tipo string, cuyo contenido se convertir en mayscula.
Ejemplo:
char cadena[20];
strcpy (cadena, "Lenguaje C");
strupr (cadena);
printf ("cadena: %s \n", cadena);

Al ejecutarse las instrucciones, cadena contendr: LENGUAJE C.
-------- o --------
E.- strrev(): Esta funcin invierte un string.
Sintaxis:
strrev (<string>);
Donde <string> es una variable de tipo string, cuyo contenido se invertir.
Ejemplo:
char cadena[20];
strcpy (cadena, "Programa");
strrev (cadena);
printf ("cadena: %s \n", cadena);

Al ejecutarse las instrucciones, cadena contendr: amargorP.
-------- o --------

43
F.- strlen(): Es una funcin que devuelve un entero que indica el nmero de caracteres de un string.
Sintaxis:
<variable> = strlen (<string>);
Donde <variable> es una variable de tipo entero; y <string> es la cadena o string a evaluar.
Ejemplo:
char cadena[20];
int longit;
strcpy (cadena, "Misin Sucre");
longit = strlen (cadena);
printf ("La longitud del string %s es: %d \n", cadena, longit);

Al ejecutarse las instrucciones, se mostrar: La longitud del string Misin Sucre es: 12.
-------- o --------
G.- strcmp(): Esta funcin compara dos strings. Si la funcin retorna un cero (0) las cadenas son
iguales; si retorna un entero mayor que cero la primera cadena es mayor (alfabticamente); si retorna un
entero menor que cero la segunda cadena es mayor.
Sintaxis:
strcmp (<string1>, <string2>);
Donde <string1> y <string2> son cadenas o variables string, que se van a comparar.
Ejemplo:
char cadena[10];
strcpy (cadena, "abcd");
if (strcmp (cadena, "abcD") == 0)
printf ("Las cadenas son iguales \n");
else
printf ("Las cadenas NO son iguales \n");

Al ejecutarse las instrucciones, se mostrar: Las cadenas NO son iguales.
-------- o --------
H.- strset(): Esta funcin sustituye cada carcter de un string por un carcter especificado.
Sintaxis:
strset (<string>, <chr>);
Donde <string> es la variable tipo string, cuyos caracteres se sustituirn por el carcter <chr>.
Ejemplo:
char cadena[20], letra;
strcpy (cadena, "Lenguaje C");
letra = 'v';
strset (cadena, letra);
printf ("cadena: %s \n", cadena);

Al ejecutarse las instrucciones, cadena contendr: vvvvvvvvvv.
-------- o --------
I.- strnset(): Esta funcin sustituye n caracteres de un string por un carcter especificado.
Sintaxis:
strnset (<string>, <chr>, <n>);
Donde <string> es la cadena, cuyos <n> caracteres se sustituirn por el carcter <chr>.
Ejemplo:
char cadena[20], letra;
strcpy (cadena, "Mi programa");
letra = 'x';
strnset (cadena, letra, 5);
printf ("cadena: %s \n", cadena);

Al ejecutarse las instrucciones, cadena contendr: xxxxxograma.
44
J.- strstr(): Esta funcin verifica si un substring est contenido en un string.
Sintaxis:
strstr (<string1>, <string2>);
Donde <string2> es la cadena a buscar en la cadena <string1>.
Ejemplo:
char cadena[20];
strcpy (cadena, "Sistemas");
if (strstr (cadena, "tema"))
printf ("Si est \n");
else
printf ("No est \n");

Al ejecutarse las instrucciones, se mostrar: Si est.
-------- o --------

K.- strchr(): Esta funcin verifica si un carcter tipo char est contenido en un string.
Sintaxis:
strchr (<string>, <chr>);
Donde <string> es la cadena donde se va a buscar el carcter <chr>.
Ejemplo:
char cadena[20], letra;
strcpy (cadena, "Sistemas");
letra = 'e';
if (strchr (cadena, letra))
printf ("Si contiene el carcter %c \n", letra);
else
printf ("No contiene el carcter %c \n", letra);

Al ejecutarse las instrucciones, se mostrar: Si contiene el carcter e.
-------- o --------


Ejercicio N 36:
Leer un Nombre (string). Convertirlo a Mayscula.
#include <stdio.h>
#include <conio.h>
#include <string.h>

main()
{
char nombre[20];

clrscr(); /* Limpia la pantalla */
printf ("Introduzca Nombre: "); scanf("%s", nombre);

strupr (nombre);

printf ("Nombre en mayuscula: %s \n", nombre);
printf ("Pulse una tecla para salir..."); getche();
return;
}
-------- o --------



45
Ejercicio N 37:
Validar la lectura de un Apellido (string de 10 caracteres). Aceptar solo caracteres alfabticos.

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>

char apellido[10];
char str=" "; /* declara str con un solo caracter inicializado en " " */
char caracter;

main()
{
clrscr(); /* Limpia la pantalla */
strcpy (apellido, "");
printf ("Introduzca Apellido: ");
do
{
caracter = getch(); /*Lee un caracter, sin mostrarlo y sin Enter */
if (isalpha (caracter))
{
strset (str, caracter); /* sustituye str por caracter */
strcat (apellido, str); /* agrega str al final de apellido */
printf ("%c", caracter);
}
if (caracter == '')
{
strset (str, caracter); /* sustituye str por caracter */
strcat (apellido, str); /* agrega str al final de apellido */
printf ("%c", caracter);
}
} while (caracter != '\r' && strlen(apellido) < 10); /* '/r' es Enter */
printf ("\n");
printf ("El Apellido es: %s \n", apellido);
printf ("Pulse una tecla para salir..."); getche();
return;
}

Nota: '/r' se refiere a la tecla Enter o Return.

Nota: La declaracin char *str=" "; define un string. El tamao del string est determinado por la
cantidad de caracteres con que se inicializa el string (en este caso contiene un espacio en blanco, por lo
tanto su tamao es 1).

-------- o --------

Ejercicio N 38:
Validar la lectura de un Nmero Entero (entre -1000 y 1000). Aceptar solo: dgitos, + y -.

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>

int numero;
char *str=" ";
char caracter;
char cadena[10], temp[10];

46
main()
{
clrscr(); /* Limpia la pantalla */
strcpy (cadena, "");
printf ("Introduzca un Entero entre -1000 y 1000: ");
do
{
caracter = getch(); /*Lee un caracter, sin mostrarlo y sin Enter */
if ((caracter == '+' || caracter == '-') && strlen(cadena) == 0)
{
strset (str, caracter); /* sustituye str por caracter */
strcat (cadena, str); /* agrega str al final de cadena */
printf ("%c", caracter);
}
if (isdigit (caracter))
{
strset (str, caracter); /* sustituye str por caracter */
strcat (temp, str); /* agrega str al final de temp */
numero = atoi(temp);
if (numero >= -1000 && numero <= 1000)
{
strset (str, caracter); /* sustituye str por caracter */
strcat (cadena, str); /* agrega str al final de cadena */
printf ("%c", caracter);
}
}
} while (caracter!='\r' || strlen(cadena)==0 || strcmp(cadena,"+")==0 \
|| strcmp(cadena,"-")==0);

printf ("\n");
numero = atoi(cadena);
printf ("El numero es: %d \n", numero);
printf ("Pulse una tecla para salir..."); getche();
return;
}


Ejercicios propuestos:
P62.- Leer una palabra. Indique cuntas vocales y cuntas consonantes tiene.
P63.- Leer una oracin (cadena de caracteres). Indique cuntas palabras tiene. (Las palabras se
separan con: espacio en blanco, coma y/o punto).
P64.- Leer nombre y apellido en una sola variable string (separados por un espacio en blanco). Colocar
en mayscula las iniciales del nombre y del apellido.
P65.- Lea una palabra. Indique si es un Palndrome (se lee igual de izquierda a derecha que a la inversa).
P66.- Leer un string. Invertirlo.
P67.- Validar la lectura de un nmero real. Aceptar solo dgitos, el punto, + y -.
P68.- Validar la lectura de un Apellido (string de 10 caracteres). Aceptar solo caracteres alfabticos
(incluyendo la tecla BackSpace).
P69.- Validar la lectura de un nmero entero. Aceptar solo dgitos, + y - (incluyendo la tecla
BackSpace).

-------- o --------





47
Tabla ASCII:
VALOR
ASCII

CARACTER
VALOR
ASCII

CARACTER
VALOR
ASCII

CARACTER
VALOR
ASCII

CARACTER
VALOR
ASCII

CARACTER
VALOR
ASCII

CARCTER
0 NULO 45 90 Z 135 180 225
1 46 . 91 [ 136 181 226
2 47 / 92 \ 137 182 227
3 48 0 93 ] 138 183 228
4 49 1 94 ^ 139 184 229
5 50 2 95 _ 140 185 230

6 51 3 96 ` 141 186 231
7 BEEP 52 4 97 a 142 187 232
8 53 5 98 b 143 188 233
9 TAB 54 6 99 c 144 189 234
10 LineFeed 55 7 100 d 145 190 235
11 Home 56 8 101 e 146 191 236
12 FormFeed 57 9 102 f 147 192 237
13 Return 58 : 103 g 148 193 238
14 59 ; 104 h 149 194 239
15 60 < 105 i 150 195 240
16 61 = 106 j 151 196 241
17 62 > 107 k 152 197 242
18 63 108 l 153 198 243
19 64 @ 109 m 154 199 244
20 65 A 110 n 155 200 245
21 66 B 111 o 156 201 246
22 67 C 112 p 157 202 247
23 68 D 113 q 158 203 248
24 69 E 114 r 159 204 249
25 70 F 115 s 160 205 250
26 71 G 116 t 161 206 251
27 72 H 117 u 162 207 252
28 cursor dere 73 I 118 v 163 208 253
29 cursor izq 74 J 119 w 164 209 254
30 cursor arrib 75 K 120 x 165 210 255 FF
31 cursor abaj 76 L 121 y 166 211
32 Espacio 77 M 122 z 167 212
33 ! 78 N 123 { 168 213
34 79 O 124 | 169 214
35 # 80 P 125 } 170 215
36 $ 81 Q 126 ~ 171 216
37 % 82 R 127 172 217
38 & 83 S 128 173 218
39 84 T 129 174 219
40 ( 85 U 130 175 220
41 ) 86 V 131 176 221
42 * 87 W 132 177 222
43 + 88 X 133 178 223
44 , 89 Y 134 179 224

Nota: Para escribir los caracteres imprimibles en el editor de Turbo C, mantenga presionada la tecla Alt
mientras pulsa los dgitos del valor ASCII.
-------- o --------

Profesor-Asesor: Vladimir Gude
Email: vladimirgude@yahoo.es
Misin Sucre - Yaracuy
Abril - 2007

You might also like