Anda di halaman 1dari 11

ALGORITMOS

A1. Pedir un nmero al usuario.


A2. Mostrar un nmero al usuario.
A3. Pedir dos nmeros, calcular su suma y mostrar el resultado por pantalla
A3. Pedir una cantidad de pesetas y pasarla a euros, mostrando el resultado.
A4. Pedir una cantidad de euros y pasarla a pesetas, mostrando el resultado.
A5. Intercambiar el valor de dos variables.
A6. Pedir un nmero al usuario y comprobar si es par o impar.
A7. Pedir tres nmeros al usuario y decir cul es el mayor.
A8. Pedir tres nmeros al usuario y decir cul es el mayor, el mediano y el menor.
A9. Pedir siete nmeros al usuario.
A10. Pedir nmeros hasta que nos den un cero.
A11. Pedir nmeros al usuario hasta que nos hayan dado tres pares.
A12. Pedir nmeros hasta que el usuario diga que no quiere ms.
A13. Pedir un nmero y decir si es primo.
A14. Pedir nmeros comprendidos entre dos lmites hasta acertar uno dado.
A15. Calcular las monedas en pesetas que se deben devolver la hacer el pago de una compra.

SECUENCIALES Y ALTERNATIVAS
1.
2.

3.
4.
5.

6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.

18.

Leer el radio de un crculo y calcular y mostrar su longitud y su rea.


Escribir un programa que lea dos nmeros y los escriba en orden decreciente.
Ejemplo:
INTRODUCE DOS NUMEROS: 4 12
NUMEROS ORDENADOS: 12, 4
Leer dos nmeros por teclado e intercambiar sus valores.
Pedir un nmero por teclado y decir si es positivo o negativo.
Escribir un programa que lea un nmero entero, x, y calcule el valor de y, de acuerdo a la
siguiente funcin:
y = 6
si
5 < x < 1
y = x(x + 20) si
1 x 4
y = 2x
si
4 < x 10
y=0
en cualquier otro caso
Escribir un programa que lea dos nmeros enteros y detecte si el primero es divisible por
el segundo.
Escribir un programa que lea un nmero comprendido entre 10 y 1000 y deduzca si es un
mltiplo de 5.
Pedir dos nmeros por teclado y decir si son mltiplos o no.
Pedir al usuario un nmero entero y escribir su valor absoluto.
Dado un nmero de 3 cifras decir si es capica.
Escribir un programa que pida 4 nmeros y diga si estn ordenados en sentido creciente,
decreciente o no estn ordenados.
Dados tres nmeros a , b, c, decir cul es el mayor.
Dados tres nmeros, escribirlos en orden ascendente.
dem en orden descendente.
Dados tres nmeros por teclado decir cul es el mayor, el mediano y el menor.
Leer un nmero entero entre 0 y 10 y en funcin de l escribir la calificacin
correspondiente: suspenso, aprobado, notable, sobresaliente, matrcula de honor.
Una empresa se encarga de la produccin de tres tipos de piezas. El horario de
produccin de la empresa es de 8:00 a 13:00 y de 15:00 a 18:00. Dado un nmero x de
piezas P1, un nmero y de P2, z de P3 calcular cuntos das, semanas y para qu hora
estar el pedido sabiendo que los tiempos por pieza son: 3 h para P1, 4 h para P2 y 5 h
para P3.
Realizar un programa que lea tres nmeros a, b, c y que calcule las races de la ecuacin
ax 2 + bx + c = 0 .

19. Escribir un programa que pida un nmero entero y positivo de 4 cifras y devuelva como
resultado las cuatro cifras que componen el nmero y el nmero que se obtiene al invertir
el orden de sus cifras.
20. Disear un programa que lea el ordinal de un mes y deduzca el nmero de das que tiene
dicho mes (para un ao no bisiesto) sabiendo que: enero, marzo, mayo, julio, agosto,
octubre y diciembre tienen 31 das, febrero 28 y el resto de los meses 30.

21. Dado un mes y un ao decir el nmero de das que tiene ese mes, considerando la
posibilidad de que el ao fuese bisiesto. Un ao es bisiesto si es divisible por 4 pero no
por 100, o bien si es divisible por 400. Por ejemplo: 2000 es bisiesto por ser mltiplo de
400, 2100 no es bisiesto puesto que es mltiplo de 4 y de 100 pero no de 400.
22. Escribir un programa que pida por pantalla una fecha en tres nmeros que representan el
da, el mes, y el ao y escriba como salida la fecha del da siguiente. Ejemplo:
10 6 2001 La siguiente fecha es 11/6/2001
30 6 2001 La siguiente fecha es 1/7/2001
28 2 2001 La siguiente fecha es 1/3/2001
31 12 2001 La siguiente fecha es 1/1/2002
NOTA: Un ao es bisiesto si es divisible por 4 pero no por 100, o bien es divisible por 400.

23. Escribir un algoritmo que calcule los aos, das y horas que ha vivido una persona dados
el ao, mes, da y hora de nacimiento y actuales. (Se supone que todos los aos tienen
365 das).
24. Realizar un programa que dado un nmero entre 1000 y 10000 devuelva el primero
menor que l que termina en 999.
25. Escribir un programa que pida cuatro nmeros enteros y averige si alguno de ellos es
mayor que la suma de los otros tres. En caso de que alguno de los nmeros cumpla esa
condicin, el programa indicar cul es ese nmero y cul es la suma de los otros tres
nmeros.
ITERATIVAS
26. Escribir cuatro veces la palabra "Hola".
27. Escribir un programa que pida un nmero entero comprendido entre 1 y 9 y muestre por
pantalla su tabla de multiplicar.
6

28. Calcular

i .
i =1

29. Escribir 10 veces los nmeros del 1 al 10.


3

30. Calcular

(i + j ) .
i =0 j =3

31. Calcular:

(
10

15

i3

j2

i =1 j =1 k =1

NOTA: Hacer los ejercicios 26, 27 y 28 tres veces: una utilizando la instruccin FOR, otra
utilizando WHILE y la ltima utilizando DO-WHILE.
32. Pedir un nmero por teclado cuyo valor est comprendido entre 0 y 10 (incluidos). Si el
nmero no es correcto seguir pidindolo hasta que lo sea.
33. Realizar un programa en C que solicite un nmero y compruebe si es par o impar.
La pantalla tendr el siguiente formato:
INTRODUCE UN NUMERO: ...
EL NUMERO QUE HAS INTRODUCIDO ES ....... (PAR o IMPAR)
QUIERES INTRODUCIR MAS NUMEROS? .... S o N
Volver a pedir nmeros hasta que se diga que no quiere introducir ms.

34. Dados dos nmeros enteros, escribir el programa que calcula el cociente y el resto sin
utilizar las operaciones de cociente y resto.
35. Escribir un programa que pida dos nmeros enteros x e y, y calcule x elevado a y.
36. Pedir un nmero por pantalla y calcular su factorial.
37. Hacer un programa que determine cuntas cifras posee un nmero entero positivo
introducido por teclado.
38. Realizar un programa en C que obtenga la suma de los nmeros pares comprendidos
entre 1 y 100 y la suma de los nmeros impares tambin comprendidos entre 1 y 100.
El resultado se obtendr por pantalla de la siguiente forma:
LA SUMA DE LOS NUMEROS PARES COMPRENDIDOS ENTRE 1 Y 100 ES ...
LA SUMA DE LOS NUMEROS IMPARES COMPRENDIDOS ENTRE 1 Y 100 ES ...

39. Haz un programa que haga igual que el programa anterior pero las sumas sern entre dos
nmeros que se introducirn por pantalla, de la siguiente forma:
INTRODUCE UN NUMERO: ...
INTRODUCE OTRO NUMERO:...
LA SUMA DE LOS NUMEROS PARES COMPRENDIDOS ENTRE ... Y ... ES ...
LA SUMA DE LOS NUMEROS IMPARES COMPRENDIDOS ENTRE ... Y ... ES ...
40. Hacer un programa que obtenga los divisores de un nmero introducido por pantalla.
41. Pedir una lista de nmeros por teclado (hasta que se introduzca el 0) y calcular la suma y
la media de todos ellos.
42. Comprobar cuntas veces se puede dividir un nmero entero dado entre 2.
43. Escribir un programa en lenguaje C que pida un nmero entero positivo (0) y calcule el
nmero que se obtiene al invertir el orden de las cifras. Adems debe calcular la suma de
todas las cifras.
Ejemplo:
Nmero inicial: 4381
Nmero invertido: 1834
Suma de sus cifras: 16
Algoritmo:
1. Pedir el numero num /* num vale 4381 */
2. Inicializar a 0 la variable que va a contener la suma de las cifras sum = 0
3. Inicializar a 0 la variable que va a contener el nmero invertido inver = 0
4. Coger la ltima cifra y guardarla cifra = num % 10; num = num / 10
/* cifra vale 1 y num vale 438 */
5. Sumar la variable cifra en la variable sum sum = sum + cifra

6. Poner la cifra en el nmero invertido inver inver = inver * 10 + cifra


7. Volver a repetir los pasos del 1 al 6 mientras num > 0
44. Escribir un programa que calcule el nmero entero y positivo n que cumple la condicin:
El nmero n es le mayor nmero que hace que 1 + 2 + ... + n < 10000
45. Escribir un programa que calcule los aos que tendr una persona en el ao 2050,
pidiendo el ao actual y la edad actual. Gestionar el programa para que pida edades
sucesivamente hasta que la edad tecleada sea 0.
46. Disear un programa que permita la entrada de 50 nmeros enteros y encuentre el
mximo y el mnimo. Ampliarlo para que encuentre tambin la media de dichos nmeros.

47. Hacer un programa que pida un nmero por pantalla y compruebe si es perfecto. Un
nmero es perfecto si es igual a la suma de sus divisores, incluyendo el 1 pero
excluyndose a l mismo. Ejemplo: 6 es perfecto porque 6 = 1+2+3
48. Pedir un nmero por pantalla y comprobar si es primo.
49. Pedir por pantalla un nmero N y dibujar:
*
**
***
**** As hasta N filas.
50. Pedir por pantalla un nmero N y dibujar:
Fila
Fila
Fila
Fila

1:
2:
3:
4:

1
1 2
1 2 3
1 2 3 4

As hasta la fila N.

51. Escribir los factoriales de los nmeros que se van introduciendo por pantalla.
Formato de pantalla:
De que nmero quieres calcular el factorial? N
N! = XXX
Deseas ms factoriales (s/n)?
52. Calcular la suma de los 10 primeros trminos de la siguiente serie:

1 2 + 2 2 2 + 3 2 3 + 4 2 4 + ... + n 2 n
53. Escribir un programa que calcule la nota media de los exmenes realizados por un
alumno. El nmero de exmenes y las notas obtenidas en cada uno de ellos se
introducirn a travs del teclado de acuerdo al siguiente formato de pantalla:
Cuantas notas deseas introducir? ...
1 nota: ...
2 nota: ...
...
Nota media resultante: ...
FUNCIONES
54. Realizar una funcin en C que simule la funcin matemtica:
x 2 + y 2
f(x, y) =
0

si x > 0 e y > 0
si x 0 e y 0

55. Escribir una funcin que dado un carcter nos devuelva un 1 si es blanco (espacio,
tabulador o Intro) y un 0 si no lo es.
56. Realizar una funcin que dado un nmero nos devuelva su factorial.
57. Realizar un programa que lee un nmero por teclado y escribe por pantalla todos los
factoriales desde 0 hasta ese nmero. Utilizar para ello la funcin del ejercicio anterior.
58. Realizar un programa que escriba los 4 primeros nmeros perfectos. Utilizar para ello una
funcin que, dado un nmero, compruebe si es perfecto devolviendo 1 en caso afirmativo
y 0 en caso contrario.

59. Realizar un programa que escriba todos los nmeros perfectos entre 1 y 10000. Utilizar
la misma funcin del ejercicio anterior.
60. Realizar un programa que vaya escribiendo todos los nmeros perfectos que encuentre
empezando desde 1. Cada vez que encuentre un nmero perfecto, se lo mostrar al
usuario y le preguntar si quiere conocer el siguiente. El usuario responder escribiendo
el carcter s o n. Utilizar la misma funcin de los ejercicios anteriores.
61. Escribir los 50 primeros nmeros primos. Utilizar para ello una funcin que, dado un
nmero, compruebe si es primo devolviendo 1 en caso afirmativo y 0 en caso contrario.
62. Pedir por pantalla un nmero N y escribir el tringulo de Tartaglia con N filas.
Ejemplo: N = 5
1
1
1
1
1

1
2 1
3 3 1
4 6 4 1

63. Hacer un programa C que solicite al usuario el primer elemento, la razn y el numero de
trminos de una progresin geomtrica y obtenga su suma. Utilizar una funcin que
calcule el trmino n-simo de la progresin.
64. Hacer un programa que solicite un nmero, N, al usuario y escriba los N primeros
trminos de la serie de Fibbonacci. Esta serie se construye de la siguiente forma:
Fibbonacci(0) = 0
Fibbonacci(1) = 1
Fibbonacci(x) = Fibbonacci(x-1) + Fibbonacci(x-2)
Utilizar una funcin que calcule el n-simo trmino de la serie.
65. Escribir un programa que pida un nmero entero n y averige si existe algn nmero m
que cumpla fact(m) = n. Si existe el mencionado nmero m, el programa debe devolver m
como resultado; si no existe, debe mostrar un mensaje por pantalla.
Ejemplo:
n = 10 No existe ningn nmero m que cumpla fact(m) = 10
n = 24 m = 4, ya que fact(4) = 24
66. Hacer un programa que solicite un nmero entero, N, y calcule el valor de la funcin:
log2 N + log3 N + ... + logN N
NOTA: considerar que loga b = c ac <= b y ac+1 > b
67. Se considera la serie definida por: a1=0, a2=1, ..., an=2 an-1+ 3 an-2 si n>=3
Se desea obtener el valor y posicin del primer elemento que sea mayor o igual que un
nmero introducido por el usuario.
68. Escribir un programa que pida un ngulo, x, en radianes y un nmero real, r, del intervalo
[0.000001, 0.1] y aproxime el coseno de x segn la frmula de Taylor con la precisin
determinada por r. La frmula de Taylor es la siguiente:

cos(x) = 1-

n
x 2 x 4 x 6 x8
x 2i
+

+
... = (1) i
2! 4! 6! 8!
(2i )!
i =0

Hay que ir aproximando el coseno de x hasta que el valor absoluto de la diferencia entre
el valor absoluto de una aproximacin y el valor absoluto de la aproximacin anterior sea
menor que r. Por ejemplo si ci es una aproximacin del coseno y ci-1 es la aproximacin
anterior, el proceso de calcular aproximaciones terminar si ci ci 1 es menor que r.

Hay que mostrar la ltima aproximacin calculada. NOTA: en el fichero math.h estn
definidas las funciones fabs y pow, que sirven para calcular: fabs(x) = x y pow(a,b) = ab
Utilizar la funcin que calcula el factorial de un nmero.
ARRAYS NUMRICOS
69. Dada una tabla con N elementos enteros, realizar un programa que desplace todos sus
elementos una posicin a la izquierda, poniendo el primero de ellos en la ltima posicin.
70. Idem. una posicin a la derecha, dejando el ltimo en primera posicin.
71. Dada una tabla de N elementos, realizar un programa que deje el menor en la primera
posicin.
72. Dada una tabla no ordenada de N elementos, realizar un programa que dado un nmero
calcule la primera posicin de dicho elemento dentro de la tabla. En caso de que no
aparezca se visualizar -1.
73. Idem. pero con la tabla ordenada.
74. Dada una tabla de N elementos calcular la cantidad de veces que aparece el 3.
75. Dada una tabla de N elementos calcular la cantidad mxima de elementos iguales
consecutivos, as como las posiciones de comienzo y final en las que se encuentran.
Ejemplo:
15 23 23 5 7 4 4 4 2 2
El mayor nmero de elementos consecutivos iguales es 3 y se encuentran de la posicin 5 a la 7.

76. Dada una tabla de N elementos, realizar un programa que visualice aquellos que son
primos. Utilizar una funcin que compruebe si un nmero es primo.
77. Idem. aquellos que son perfectos. Utilizar una funcin que compruebe si un nmero es
perfecto.
78. Realizar un programa que solicite nmeros y los vaya introduciendo en una tabla, de
dimensin N; suponemos que la entrada de nmeros finaliza cuando el usuario teclea 1 o
la tabla se llena. El programa debe contar la cantidad de nmeros introducidos
(excluyendo el 1) y modificar la posicin x de la tabla (indicada por el usuario),
introduciendo en ella el menor elemento encontrado en la tabla a partir de la posicin x
hasta el final.
79. Hacer un programa que ordene de mayor a menor los elementos de un vector de
dimensin N.
80. Dado un nmero entero de N dgitos, decir si es o no capica.
81. Dado un vector de longitud N, hacer un programa que divida cada uno de sus elementos
por el mayor de sus divisores (excluido l mismo). Utilizar una funcin que, dado un
nmero devuelva su mayor divisor.
82. El ayuntamiento de una ciudad quiere hacer un anlisis de los precios de los pisos. Para
ello utiliza la informacin que tienen las Agencias Inmobiliarias sobre los pisos en venta
de la ciudad, de manera que para cada piso se recogen los siguientes datos:
- precio del piso
- tamao del piso en m2
- zona de la ciudad en la que est ubicado el piso (se supone que la ciudad est dividida
en 10 zonas, numeradas del 0 al 9).
Se considera que, como mucho, se obtendr informacin sobre 100 pisos.
El fin de datos se realizar al introducir un precio de piso igual a 0 ptas.

Se pide:
a) Precio medio de los pisos de la ciudad.
b) El piso ms grande y el piso ms pequeo de la cuidad, as como sus respectivos
precios.
c) Precio medio de los pisos para cada una de las 10 zonas de la ciudad.
CARACTERES Y CADENAS DE CARACTERES

Dado un carcter decir si corresponde o no a una vocal.


Dado un carcter decir si corresponde a una mayscula.
Dado un carcter decir si es una letra.
Leer un carcter y, tras comprobar que corresponde a una mayscula, escribirlo en
minscula.
87. Escribir un programa que lea un carcter y detecte si es:
83.
84.
85.
86.

letra minscula
letra mayscula o minscula
vocal minscula
vocal
88. Leer una cadena de caracteres e indicar de cuntas palabras est compuesta. Se supone
que al menos hay una palabra y que est separada de la siguiente por un carcter blanco o
un tabulador.
89. Hacer el programa que imprime la siguiente salida:
NOTA: No se trata de hacer 26 instrucciones printf(...), sino de utilizar las conversiones
de tipos (int)variable y (char)variable que posee C.
ZYXVUTSRQPONMLKJIHGFEDCBA
YXVUTSRQPONMLKJIHGFEDCBA
XVUTSRQPONMLKJIHGFEDCBA
...
EDCBA
DCBA
CBA
BA
A

90. Dada una frase introducida por teclado (mximo 100 caracteres) escribir un programa que
cuente:
- El nmero de caracteres de la frase
- El nmero de apariciones de cada vocal mayscula y minscula
- El nmero de espacios en blanco
- El nmero de comas
- El nmero total de vocales.
91. Dada un frase introducida por teclado (mximo 100 caracteres), escribir un programa que
cuente el nmero de apariciones de la slaba la.
92. Dada una frase introducida por teclado (mximo 100 caracteres), escribir un programa
que cuente el nmero de apariciones de una subcadena de dos letras introducida por
teclado.
Ejemplo:
Introduce una secuencia de dos caracteres: si

93.
94.

95.
96.
97.

Introduce una frase: le he dicho a Asier que no puede vivir siempre asi.
Numero de veces que aparece la cadena: 3
Escribir un programa C que invierta el orden de los caracteres de una cadena de N
caracteres de longitud.
Dada una cadena de caracteres, formada por letras minsculas sin espacios entre ellas,
realizar un programa que nos diga si es palndromo o no. Palndromo es toda cadena que
se lee igual de izquierda a derecha que de derecha a izquierda. Ejemplo:
dabalearrozalazorraelabad
Hacer el mismo ejercicio suponiendo que todas las letras de la cadena son minsculas
pero que puede contener espacios en blanco. Ejemplo: dabale arroz a la zorra el abad
Hacer el mismo ejercicio suponiendo que la cadena contiene letras minsculas y
minsculas y espacios en blanco. Ejemplo: Dabale arroz a la zorra el abad
Realizar un programa que pida una cadena, cad1, formada exclusivamente por letras y
blancos (250 caracteres como mximo) y visualice las iniciales de cada palabra de dicha
cadena, sabiendo que las palabras pueden estar separadas por uno o ms blancos. A
continuacin generar la cadena, cad2, que resulta de eliminar en cad1 todos los blancos y
convertir todas sus letras en minsculas. Por ltimo indicar cul es la letra que ms veces
aparece en cad2.

TABLAS BIDIMENSIONALES
98. Leer dos tablas de dimensin MxN y calcular sus suma en otra tabla.
99. Leer dos matrices y calcular su producto si es posible.
100.Dada una tabla de MxN elementos, realizar un programa que obtenga su imagen
1 2 3 4 4 3 2 1

especular. Ejemplo: 5 6 7 8 8 7 6 5
9 10 11 12 12 11 10 9

101.Dada un matriz de 20 filas y 25 columnas, realizar un programa que obtenga otra matriz
de las mismas dimensiones donde cada nueva fila se obtendr dividiendo la fila inicial
por el elemento menor de dicha fila.
102.Dada una matriz de dimensin MxN, hacer el programa que calcula la suma de cada una
de sus columnas y de cada una de sus filas. Los resultados de las sumas de las filas se
guardarn en un vector de nombre suma_filas y los de las columnas en otro llamado
suma_columnas.
103.Una agencia inmobiliaria desea hacer un estudio de los tipos de pisos que han sido
solicitados por las personas que se han dirigido a la agencia.
La agencia tiene guardada la informacin del tipo de piso solicitado y del mes de la
solicitud (el ao no interesa).
Los tipos de piso corresponden a:
0 Muy grande.
1 Grande.
2 Mediano.
3 Pequeo.
4 Muy pequeo.
El mes de la solicitud es un nmero entre 0 y 11.

Se pide realizar un programa para:


a) Recoger los datos, teniendo en cuenta que no sabemos el nmero de datos que se
disponen, ni estn ordenados por ninguno de los dos conceptos.
b) Mes en el que ms pisos de tipo Muy grande se han solicitado.
Ejemplo: El mes de Enero se han solicitado 23 de pisos de tipo Muy grande.
c) Tipo/s de piso que no se han solicitado nunca (se indicar con letras: Pequeo,
grande...).
Si no hay ninguno que cumpla esta condicin se obtendr el siguiente mensaje:
Todos los tipos de piso se han concedido alguna vez.

104.Escribir un programa que dado un entero comprendido entre 0 y 3999, lo traduzca a su


equivalente en nmeros romanos.

Anda mungkin juga menyukai