Está en la página 1de 36

Unidad 03.

Ejercicios | 1
Unidad 03

Programación
U03. Fundamentos de un Lenguaje de Programación
Estructurado: C

Ejercicios de Práctica

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 2

Índice de ejercicios
1. Estructura Secuencial.

1.1. Imprime “Hola Buap”

1.2. Suma dos números enteros.

2. Estructura Condicional.

2.1. Evalúa si un número es par o no

2.2. Obtiene el mayor de dos números

2.3. Obtiene el mayor de tres números

2.4. Obtiene el mayor y el menor de tres números

2.5. Imprime un mensaje acorde a un valor entero

3. Estructura Iterativa.

3.1. Obtiene la sumatoria de un número

3.2. Obtiene el factorial de un número

3.3. Obtiene el promedio de los n números que el usuario ingresa por teclado

3.4. Genera e imprime los n términos de la sucesión de Fibonacci

3.5. Valida una fecha

4. Anidamiento.

4.1. Simula un reloj

4.2. Determina si un número es primo o no

4.3. Imprime los divisores de un número n

5. Arreglos

5.1. Guarda los datos ingresados por teclado en un arreglo y después los muestra

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 3

5.2. Llena un arreglo de manera que cada elemento es el doble del anterior

5.3. Calcula el promedio y obtiene los valores máximo y mínimo de un arreglo

6. Matrices

6.1. Guarda los datos ingresados por teclado y después los muestra con formato de matriz

6.2. Genera una matriz identidad y la muestra en la pantalla

6.3. Realiza la suma de dos matrices

6.4. Calcula el promedio, el máximo y el mínimo de los valores de una matriz

7. Cadenas de caracteres

7.1. Guarda una cadena de caracteres, la muestra en pantalla y cuenta sus caracteres

7.2. Cuenta las palabras dentro de una cadena de caracteres

7.3. Identifica si una palabra es palindromo

8. Estructuras

8.1. Genera una variable estructurada para guardar datos de contactos

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

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 4

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

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 5

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

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 6

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

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 7

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

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 8

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

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 9

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

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 10

2.5 Imprimir un mensaje acorde al valor de una calificación ingresada

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

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 11

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

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 12

Inicio
cont = cont + 1
sum = sum + cont
Fin
Imprimir “La sumatoria de” n “es” sum
Fin

3.2 Obtener e imprimir el factorial de un número ingresado por teclado.

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

Utilizando ciclo while:

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 13

Utilizando ciclo for:

3.3 Obtener e imprimir el promedio de los n números ingresados por teclado.

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

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 14

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

Con ciclo while:

Con ciclo for:

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 15

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

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 16

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

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 17

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

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 18

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

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 19

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.

Con ciclo while:

La función Sleep(1000), disponible en la biblioteca Windows.h, introduce una pausa de 1000


milisegundos en el programa, ésta se agregó para hacer que el programa funcione como si
fuera un reloj verdadero, de otra forma se ejecutaría demasiado rápido incluso para poder ver
claramente los valores mostrados en la pantalla.

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 20

Con ciclo for:

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.

4.2 Mostrar si un número n ingresado por teclado es primo o no.

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

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 21

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

Con ciclo while:

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 22

Con ciclo for:

5. Arreglos
5.1 Guardar los datos ingresados por teclado en un arreglo y después mostrarlos en la
pantalla

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 23

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

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 24

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.

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 25

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.

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 26

6.2 Generar una matriz identidad de 5x5 y mostrarla en la pantalla.

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.

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 27

6.3 Realizar la suma de dos matrices.

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.

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 28

6.4 Calcular el promedio, el máximo y el mínimo de todos valores de una matriz.

Tiene un funcionamiento igual que cuando se calculó promedio, máximo y mínimo del arreglo
de una sola dimensión.

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 29

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.

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 30

El último incremento en la variable palabras es necesario debido a que no se contabilizó la


última palabra puesto que al final de la frase ingresada no se ingresa un espacio, por lo que de
no hacer este incremento la cuenta sería errónea.

7.3 Identifica si la palabra escrita por el usuario es un palíndromo o no (Palíndromo es la


palabra que puede leerse igual de izquierda a derecha o de derecha a izquierda).

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 31

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.

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 32

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.

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 33

9. Uniones
9.1 Mostrar un ejemplo de cómo los miembros de una unión comparten memoria.

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 34

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.

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 35

Cuando se le asigna el valor de 1 a NUEVO, automáticamente el resto de los miembros de la


enumeración toman los valores siguientes: 2, 3, 4, 5.

Benemérita Universidad Autónoma de Puebla


Unidad 03. Ejercicios | 36

Responsable del curso

Julia Chávez Chávez

Es responsabilidad exclusiva de los autores el respeto de


los derechos de autor sobre los contenidos e imágenes en el
presente documento, en consecuencia, la BUAP no se hace
responsable por el uso no autorizado, errores, omisiones o
manipulaciones de los derechos de autor y estos serán
atribuidos directamente al Responsable de Contenidos,
así como los efectos legales y éticos correspondientes.

Benemérita Universidad Autónoma de Puebla

También podría gustarte