Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejercicios | 1
Unidad 03
Programación
U03. Fundamentos de un Lenguaje de Programación
Estructurado: C
Ejercicios de Práctica
Índice de ejercicios
1. Estructura Secuencial.
2. Estructura Condicional.
3. Estructura Iterativa.
3.3. Obtiene el promedio de los n números que el usuario ingresa por teclado
4. Anidamiento.
5. Arreglos
5.1. Guarda los datos ingresados por teclado en un arreglo y después los muestra
5.2. Llena un arreglo de manera que cada elemento es el doble del anterior
6. Matrices
6.1. Guarda los datos ingresados por teclado y después los muestra con formato de matriz
7. Cadenas de caracteres
7.1. Guarda una cadena de caracteres, la muestra en pantalla y cuenta sus caracteres
8. Estructuras
8.2. Genera un arreglo de estructuras para guardar datos de varios contactos de forma más
ordenada
9. Uniones
9.1. Muestra un ejemplo de cómo los miembros de una unión comparten memoria
10. Enumeraciones
10.1. Muestra un ejemplo del uso de los valores de una enumeración como
constantes
1. Estructura Secuencial
1.1 Imprimir en la pantalla el mensaje “Hola Buap”.
El programa creado ejecuta las líneas de código y, si no hay nada que se lo impida, se
cerrará inmediatamente. Para poder ver el resultado de la ejecución de las líneas en la
pantalla es necesario utilizar alguna función que impida el cierre inmediato del programa.
La función getchar() disponible en la biblioteca stdio.h y la función system(“pause”)
disponible en la biblioteca stdlib.h evitan el cierre inmediato del programa, permitiendo
ver el resultado del mismo, el programa se cerrará cuando se presione una tecla o cuando
se presione la tecla “Intro”, según la función utilizada.
1.2 Obtener e imprimir la suma de dos números que ingresa el usuario desde el teclado.
Inicio
Declarar enteros a, b, suma
Imprimir “Ingrese dos números”
Leer a, b
Suma = a + b
Imprimir “La suma de los números es “ suma
Fin
2. Estructura Condicional
2.1 Evaluar si un número ingresado por el teclado es par o impar.
Inicio
Declarar entero n
Imprimir “Ingrese un número para determinar si es par”
Leer n
Si n % 2 = 0
Imprimir “El número es par”
Sino
Imprimir “El número es impar”
Fin
2.2 Determinar e imprimir cuál es el mayor de dos números ingresados por teclado.
Inicio
Declarar enteros a, b
Imprimir “Ingrese dos números”
Leer a, b
Si a > b
Imprimir “El mayor es” a
Sino Si a < b
Imprimir “El mayor es” b
Sino
Imprimir “Los números son iguales”
Fin
2.3 Determinar e imprimir cuál es el mayor de tres números ingresados por teclado.
Inicio
Declarar enteros a, b, c
Imprimir “Ingrese dos números”
Leer a, b, c
Si a > b y a > c
Imprimir “El mayor es ” a
Sino Si b > a y b > c
Imprimir “El mayor es “ b
Sino
Imprimir “El mayor es ” c
Fin
2.4 Determinar e imprimir cuál es el mayor y el menor de tres números ingresados por teclado,
asumiendo que los números son diferentes.
Inicio
Declarar enteros a, b, c
Imprimir "Ingrese tres números enteros diferentes"
Leer a, b, c
Si a > b
Inicio
Si b > c
Imprimir a " es el mayor y " c "el menor"
Sino
Inicio
Si a > c
Imprimir a "mayor y" b "el menor"
Sino
Imprimir c "mayor y " b "el menor"
Fin
Fin
Sino
Inicio
Si b > c
Inicio
Si a > c
Imprimir b "es el mayor y " c "el menor"
Sino
Imprimir b "es el mayor y " a "el menor"
Fin
Sino
Imprimir c "es el mayor y" a "el menor"
Fin
Fin
Inicio
Declarar entero calif
Imprimir “Ingrese su calificación”
Leer calif
Si calif = 10
Imprimir “¡Excelente!”
Sino Si calif = 9
Imprimir “¡Muy bien!”
Sino Si calif = 8
Imprimir “¡Bien!”
Sino Si calif = 7
Imprimir “Regular”
Sino Si calif = 6
Imprimir “¡Por poquito!”
Sino
Imprimir “Nos vemos en recurso”
Fin
3. Estructura Iterativa
3.1 Obtener e imprimir la sumatoria de un número ingresado por teclado.
Inicio
Declarar enteros n, sum = 0, cont = 0
Imprimir “Ingrese un número”
Leer n
Mientras cont < n
Inicio
cont = cont + 1
sum = sum + cont
Fin
Imprimir “La sumatoria de” n “es” sum
Fin
Inicio
Declarar enteros n, fact = 1, cont = 0
Imprimir “Ingrese un número”
Leer n
Mientras cont < n
Inicio
cont = cont + 1
fact = fact * cont
Fin
Imprimir “El factorial de” n “ es” fact
Fin
Inicio
Declarar enteros n, cont = 0
reales prom = 0, x
Imprimir "¿Cuantos números desea ingresar para calcular su promedio?"
Leer n
Mientras cont < n
Inicio
Imprimir "Ingrese numero: "
Leer x
cont = cont + 1
prom = prom + x
Fin
Si n ≠ 0
prom = prom / n
Imprimir “El promedio de los” n “números es” prom
Fin
3.4 Obtener e imprimir el promedio de los números ingresados por teclado. En primera
instancia no se conoce cuántos números serán ingresados. Cuando se ingrese un 0 se mostrará
el resultado del promedio en la pantalla.
Inicio
Declarar entero cont = 0
reales prom = 0, x
Imprimir "Ingrese los números a los que desea calcular el promedio o 0 para terminar"
Leer n
Hacer
Inicio
Imprimir "Ingrese número” cont + 1
Leer x
cont = cont + 1
prom = prom + x
Fin
Mientras x ≠ 0
cont = cont - 1
Si cont > 0
prom = prom / cont
Imprimir “El promedio de los” cont “números es” prom
Fin
La orden de formato %.2f indica que se mostrarán sólo dos decimales del valor de la
variable prom.
3.5 Mostrar los n términos de la sucesión de Fibonacci, donde n será dado por el usuario por el
teclado.
Inicio
Declarar enteros n, cont = 0, actual = 1, anterior = 1
Imprimir "Ingrese cuántos números de la sucesión de Fibonacci desea ver"
Leer n
Mientras cont < n
Inicio
Imprimir anterior
actual = actual + anterior
anterior = actual - anterior
cont = cont + 1
Fin
Fin
3.6 Validar los datos ingresados por el teclado de manera que conformen una fecha válida. Se
considera que febrero siempre tiene 28 días.
Inicio
Declarar enteros d, m, a
Hacer
Inicio
Imprimir “Ingrese la fecha en formato numérico con día, mes y año”
Leer d, m, a
Fin
Mientras d < 1 ó d > 31 ó m < 1 ó m > 12 ó a < 0 ó (m = 2 y d > 28) ó
(d < 30 y (m = 4 ó m = 6 ó m = 9 ó m = 11)
Imprimir “Fecha válida”
Fin
4. Anidamiento
4.1 Imprimir en pantalla los valores que simulen el funcionamiento de un reloj, con horas,
minutos y segundos.
Inicio
Declarar enteros h, m, s
Mientras h < 24
Inicio
Mientras m < 60
Inicio
Mientras s < 60
Inicio
Imprimir h”:”m”:”s
s=s+1
Fin
s=0
m=m+1
Fin
m=0
h=h+1
Si h = 24***
h=0
Fin
Fin
La condición de Si fue necesaria para hacer que no se terminara el ciclo. En este caso particular
en el que se representa el tiempo puede no tener un fin el algoritmo.
El ciclo for por sí solo ya inicializa su variable contadora al inicio y realiza el incremento de ésta
al final de cada vuelta. Para hacer que el ciclo de las horas sea infinito, se debe modificar la
condición para que cuando h tenga un valor de 24 aún entre al ciclo y, con ayuda del if, se
cambia su valor a 0.
Inicio
Declarar enteros n, numdiv = 2
Imprimir "Ingrese un número para determinar si es primo o no"
Leer n
Mientras n ≠ 0 y n % numdiv ≠ 0
Inicio
numdiv = numdiv + 1
Fin
Si n = numdiv
Imprimir n “es número primo"
Sino
Imprimir n “no es un número primo"
Fin
4.3 Mostrar en pantalla todos los divisores de un número n ingresado por teclado.
Inicio
Declarar enteros n, cont = 1
Imprimir “Ingrese un número para conocer sus divisores”
Leer n
Mientras cont <= n
Inicio
Si n % cont = 0
Imprimir cont “ es divisor de “ n
cont = cont + 1
Fin
Fin
5. Arreglos
5.1 Guardar los datos ingresados por teclado en un arreglo y después mostrarlos en la
pantalla
Este programa utiliza un valor constante almacenado en TAM, en cualquier lugar del programa
donde esté TAM es como si ahí estuviera el valor de 5. Dentro del primer ciclo for se muestra el
valor de i + 1 para que el usuario sepa cuál número va a ingresar cada vez y no pierda la cuenta.
5.2 Llenar un arreglo de manera que cada elemento sea el doble del anterior
Como el valor del primer elemento del arreglo se guarda desde el teclado, el ciclo sólo deberá
llenar el resto de los elementos del arreglo, esto quiere decir que el ciclo tendrá que dar una
vuelta menos que el total de elementos del arreglo, en este caso 9. Esto se ve reflejado en la
condición i < TAM – 1 del primer ciclo for. El segundo ciclo únicamente muestra los valores del
arreglo en la pantalla.
5.3 Calcular el promedio y obtener los valores máximo y mínimo de los datos guardados
previamente desde el teclado en un arreglo
El primer ciclo va almacenando los valores que se van ingresando desde el teclado en cada
elemento del arreglo. En este mismo ciclo se va realizando la suma acumulada de todos los
elementos para después dividirlos entre el total de elementos y así obtener el promedio. En el
segundo ciclo se compara el valor de la variable max, donde se asume está el valor máximo del
arreglo, con el valor de cada elemento del arreglo; si hay algún valor mayor que max éste se le
asigna a la variable, de manera que max siempre tenga el valor mayor de entre todos. Lo
mismo ocurre con la variable min para obtener el menor valor del arreglo.
6. Matrices
6.1 Guardar los datos ingresados por teclado en una matriz de 3x4 y después mostrarlos en la
pantalla con formato de matriz
Se utilizan ciclos anidados para recorrer la matriz fila por fila. La variable fil es el índice que
indica la fila, la variable col es el índice que indica la columna, de manera que cada elemento
estará en la posición (fil, col), o bien, [fil][col]. Mientras que fil se mantiene en un solo valor, col
va incrementándose desde 0 para recorrer toda la fila, cuando fil se incrementa, col vuelve a
tomar el valor de 0 y sigue incrementándose para poder recorrer la siguiente fila. El salto de
línea que está al final del ciclo for controlado por col y aún dentro del ciclo for controlado por
fil es necesario para que se muestre renglón por renglón en la pantalla y se muestre en forma
de matriz.
La matriz identidad es aquella que tiene unos en la diagonal principal y ceros en el resto de la
matriz. La diagonal principal será aquella que tenga el mismo valor de fila y de columna. Por
eso cuando i (el índice de la fila) es igual a j (el índice de la columna) se guarda en esa posición
un 1, en cualquier otro caso se guardará un 0.
En los primeros dos ciclos anidados se capturan los datos de dos matrices, mat1 y mat2; en el
último par de ciclos anidados matriz es cuando se realiza la suma de éstas y se guarda en la
matriz res. En éste mismo ciclo se imprime el resultado en la pantalla.
Tiene un funcionamiento igual que cuando se calculó promedio, máximo y mínimo del arreglo
de una sola dimensión.
7. Cadenas de caracteres
7.1 Guardar una cadena de caracteres escrita por el usuario, después mostrarla en pantalla y
contar cuántos caracteres tiene.
7.2 Guarda una cadena de caracteres y cuenta cuántas palabras tiene, suponiendo que hay
sólo un espacio entre cada palabra.
Se compara el primer carácter de la palabra con el último, luego el segundo con el penúltimo
y así sucesivamente, en el momento en que se encuentran caracteres diferentes se detiene el
ciclo con el break, ya no es necesario seguir revisando puesto que es evidente que la palabra
no es palíndroma.
8. Estructuras
8.1 Generar una variable estructurada para guardar datos de contactos.
La variable amigo tiene los miembros nombre, tel y cumple, el miembro cumple tiene a su vez
los miembros dia, mes y anio.
8.1 Generar un arreglo de estructuras para guardar datos de varios contactos de forma más
ordenada.
9. Uniones
9.1 Mostrar un ejemplo de cómo los miembros de una unión comparten memoria.
El ejemplo también muestra cómo los 3 miembros inician en la misma dirección de memoria.
10. Enumeraciones
10.1 Mostrar un ejemplo del uso de los valores de una enumeración como constantes.