Ejercicios de informatica Lenguaje C

8
UTN-FRSN Ingeniería Electrónica Informática II Ing. Cristina Alarcón 2013 Serie 1 Parte 1: Temas: - Manejo del entorno - Aplicación de función de salida por video: printf() - Aplicación de función de entrada de datos por teclado: scanf() 1. Indicar cual es la salida de cada una de las siguientes sentencias, suponiendo que forman parte de un programa completo: a. printf("C es un lenguaje sencillo"); printf(" de propósitos generales.\n"); b. printf("el lenguaje C no es de alto nivel \n y no esta orientado a ninguna aplicación."); c. printf("deseo escribir\n un programa en C\n"); d. int num=2;printf("%d + %d : %d", num,num,num+num); e. int a; char c; a = 500; c = 'a'; printf(": %d: \n\n", 8347); printf(": %d: %d: %d: \n\n" ,548,72900,72900); printf(":%d:%d:\n\n",123,345.99); printf(":%i:%f:\n\n",123,446.88); printf(":%2d:%10.4f:%.4f:\n\n",123,455.5,455.5); printf(":%c:%d\n\n",c,c); printf("%10.4f\n",123.23); printf("10.4f\n",123.23); printf(":%d:%o:%x:\n\n",a,a,a); printf(": %f: %e: %g: \n\n" , 1234.67,1234.67,1234.67); 2. Escribir un programa que muestre tu apellido y nombres, uno por línea. 3. Escribir un programa en el cual se obtenga la siguiente salida por medio de tres sentencias: "la comida esta fría". 4. Realizar un programa el cual cree 3 variables; una de tipo char, otra de tipo float y la última de tipo double, que permita asignarles un valor desde teclado y luego las muestre por pantalla. 5. Desarrollar un programa que imprima los números del 1 al 4 en un mismo renglón utilizando \t y de tres diferentes maneras: a. Con un enunciado printf sin especificadores de conversión. b. Con un enunciado printf con cuatro especificadores de conversión. Serie 1 – Página 1 de 8

description

Se trata de una serie de ejercicios del lenguaje C

Transcript of Ejercicios de informatica Lenguaje C

  • UTN-FRSN Ingeniera Electrnica Informtica IIIng. Cristina Alarcn 2013

    Serie 1

    Parte 1: Temas:

    - Manejo del entorno - Aplicacin de funcin de salida por video: printf() - Aplicacin de funcin de entrada de datos por teclado: scanf()

    1. Indicar cual es la salida de cada una de las siguientes sentencias, suponiendo que forman parte de un programa completo:

    a. printf("C es un lenguaje sencillo"); printf(" de propsitos generales.\n");

    b. printf("el lenguaje C no es de alto nivel \n y no esta orientadoa ninguna aplicacin.");

    c. printf("deseo escribir\n un programa en C\n");

    d. int num=2;printf("%d + %d : %d", num,num,num+num);

    e. int a;char c; a = 500;c = 'a';printf(": %d: \n\n", 8347);printf(": %d: %d: %d: \n\n" ,548,72900,72900);printf(":%d:%d:\n\n",123,345.99);printf(":%i:%f:\n\n",123,446.88);printf(":%2d:%10.4f:%.4f:\n\n",123,455.5,455.5);printf(":%c:%d\n\n",c,c);printf("%10.4f\n",123.23);printf("10.4f\n",123.23);printf(":%d:%o:%x:\n\n",a,a,a);printf(": %f: %e: %g: \n\n" , 1234.67,1234.67,1234.67);

    2. Escribir un programa que muestre tu apellido y nombres, uno por lnea.

    3. Escribir un programa en el cual se obtenga la siguiente salida por medio de tres sentencias: "la comida esta fra".

    4. Realizar un programa el cual cree 3 variables; una de tipo char, otra de tipo float y la ltima de tipo double, que permita asignarles un valor desde teclado y luego las muestre por pantalla.

    5. Desarrollar un programa que imprima los nmeros del 1 al 4 en un mismo rengln utilizando \t y de tres diferentes maneras:

    a. Con un enunciado printf sin especificadores de conversin.b. Con un enunciado printf con cuatro especificadores de conversin.

    Serie 1 Pgina 1 de 8

  • UTN-FRSN Ingeniera Electrnica Informtica IIIng. Cristina Alarcn 2013

    c. Con cuatro enunciados printf.

    6. Desarrollar un programa en C por medio del cual se ingresen el valor de una variable de tipofloat, otra de tipo int, y la ltima de tipo char, luego las imprima con sus cdigos de formatos correctos y tambin con los cdigos intercambiados abarcando las nueve posibilidades.

    7. Desarrollar un programa en el cual tres nmeros enteros ingresados por teclado sean mostrados en forma tabulada en un mismo rengln.

    8. Desarrollar un programa igual al ejercicio anterior pero variando que los nmeros son tipo float y la salida es uno por rengln

    Parte 2: Temas:

    - Aplicacin de funcin de entrada de datos por teclado: getchar() - Aplicacin de funcin de salida de datos por pantalla: putchar()

    9. Desarrollar un programa que lea un texto de caracteres ingresados por teclado e imprima el mismo en la pantalla.

    10. Desarrollar un programa que al ingresar un texto de caracteres determine e informe la cantidad de los mismos que lo forman.

    11. Desarrollar un programa que al ingresar un texto de caracteres cuente e informe la cantidad de lneas que lo forman.

    12. Desarrollar un programa que al ingresar un texto de caracteres cuente la cantidad de palabrasque lo forman.

    13. Escribir un programa que cuente e informe la cantidad de espacios en blanco, tabuladores, y caracteres nueva lnea que posee un texto de caracteres. En la determinacin de los espacios en blanco utilizar la funcin de biblioteca acorde.

    14. Escribir un programa que imprima por pantalla las palabras que lea, una por rengln.

    15. Escribir un programa que copie en pantalla el texto ingresado, cambiando las maysculas por las minsculas y viceversa. Utilice las funciones de biblioteca pertinentes.

    16. Escribir un programa que reemplace los tabuladores (\t) que figuran en el texto de entrada por el nmero apropiado de espacios en blanco y muestre el texto modificado.

    17. Escribir un programa que compruebe los errores sintcticos rudimentarios de un programa en C, tales como parntesis, corchetes y llaves desemparejados, e informe a los mismos con carteles aclaratorios.

    18. Escribir un programa que ingrese un texto de caracteres y luego elimine del mismo todos losdgitos decimales que en l se encuentran, para reemplazarlos por sus nombres respectivos.

    Serie 1 Pgina 2 de 8

  • UTN-FRSN Ingeniera Electrnica Informtica IIIng. Cristina Alarcn 2013

    Parte 3: Temas:

    - Estructuras de control de programas: while(), do-while(), for(), switch(), if()-else.

    19. Escribir un programa que determine si el primero de una lista de tres nmeros dados es menor que los otros dos.

    20. Escribir un programa que determine si una lista de cuatro valores numricos dada esta ordenada de menor a mayor.

    21. Escribir un programa que ingresndole tres valores numricos distintos, no necesariamente ordenados, muestre aquel que no sea ni el mayor ni el menor.

    22. Escribir un programa que halle la suma de los n primeros nmeros naturales, con n variable pero conocido de antemano en cada caso.

    23. Se ingresa por teclado una sucesin no vaca y finita de nmeros positivos, nulos o negativos. Por medio de un programa determinar la cantidad de nmeros positivos que se presentan antes del primer nmero negativo de la sucesin y obtener la suma de los mismos.

    24. Escribir un programa que halle el mnimo valor de una sucesin numrica dada ingresada por teclado y la posicin que ocupa dentro de la misma. Se desconoce la cantidad de nmeros dela sucesin, aunque se sabe que ella es no vaca y finita. Los datos son todos distintos y ningunoes 999.

    25. Escribir un programa que determine el primer trmino que supera el valor n (n>1 variable y conocido) en la sucesin de Fibonacci. (siendo los dos primeros trminos de la serie 0 y 1 respectivamente, a partir del tercero, cada trmino se obtiene sumando los dos trminos que lo preceden).

    26. Escribir un programa que dada una lista de n nmeros (n >2, variable pero conocido en cadacaso), determine si el primer nmero es menor que todos los dems.

    27. Escribir un programa que dada una sucesin numrica compuesta por 300 nmeros enteros, positivos, negativos y nulos, calcule:

    a) promedio de los valores positivos b) promedio de los valores negativos c) cantidad de valores nulos.

    28. Disear un programa que genere e imprima todas las combinaciones posibles de tres dados.

    29. Realizar un programa que imprima todos los nmeros primos comprendidos entre el 2 y un valor lmite que se ingresar al ejecutar el programa.

    Parte 4: Temas:

    - Funciones no parametrizadas. - Pasaje de parmetro por valor. - Pasaje de parmetro por referencia.

    Serie 1 Pgina 3 de 8

  • UTN-FRSN Ingeniera Electrnica Informtica IIIng. Cristina Alarcn 2013

    30. Escribir un programa que calcule los factoriales de los primeros n primeros nmeros naturales usando una funcin llamada FACTORIAL.

    31. Teniendo como datos una base x y un exponente y, ambos enteros, calcular por medio de una funcin llamada POTE el valor de xy.

    32. Supongamos que a, b, y c representan la longitud de los lados de un tringulo. Se debe confeccionar una funcin llamada VERIFICA, la cual analizar si las longitudes corresponden alos lados de un tringulo rectngulo.

    33. Dados 2 nmeros enteros a y b, determinar: a) Si a < b, la suma de todos los nmeros enteros comprendidos entre a y b.b) Si a > b, el producto de todos los enteros primos comprendidos entre b y ac) Si a = b, la suma de a y b.

    34. Cada uno de los tems anteriores calcularlo por medio de una funcin llamada CALCULO que recibir del main() a a y a b como parmetros, y devolver al main() lo calculado.

    35. Dados 2 ngulos de un tringulo en grados, minutos y segundos, calcular el valor del tercer ngulo. Para ello confeccionar una funcin llamada ANGULO, que convierta grados, minutos y segundos a segundos, y calcule el valor del tercero. Los ngulos que son datos sern parmetro valor y el ngulo calculado ser parmetro variable.

    36. Dado un texto que finaliza con un carcter &, escribir el mismo pero convirtiendo todo a maysculas. Hacer una funcin CONV_MIN_MAY(x) para convertir minscula a mayscula.

    37. Dado un texto en minsculas, que siempre finaliza con el carcter &, escribir el texto pero respetando que cada oracin comienza con maysculas. Usar la funcin CONV_MIN_MAY(x) del ejercicio anterior. Las oraciones estn separadas por un punto.

    38. Realizar una funcin que reciba como datos los coeficientes a, b y c de una ecuacin cuadrtica y la resuelva. El main() imprimir la ecuacin con sus races correspondientes. La funcin llamada CUADRA realizar el clculo y deber contemplar todos los casos posibles de las races de una ecuacin de segundo grado.

    39. Tabular los valores de un polinomio de grado n, ingresado por teclado, del tipo P(x)=x+x2+x3+....+xn, con x = [-15, 15] con incrementos de 0,7. Para ello la funcin llamada POLI evaluar el polinomio en un punto x dado y delver su resultado con la funcin main().

    40. Realizar una funcin llamada FECHA que reciba como datos da, mes y ao, luego devuelvaa la funcin principal main() si la fecha es vlida. Contemplar que el ao puede ser bisiesto.

    41. Disear un programa que contenga una funcin de prototipo: int COMPRUEBA(int, int), la cual recibe como parmetros las coordenadas (x,y) de un punto cualquiera en el plano. Esta debe determinar si dicho punto pertenece a la circunferencia x2 + y2=100.

    42. Disear un programa que contenga una funcin de prototipo: void MAYOR_SIGUIENTE (float *, float *, float *), la cual devuelve al main() el mayor valor y el siguiente de un conjunto de valores numricos todos distintos de cero.

    Serie 1 Pgina 4 de 8

  • UTN-FRSN Ingeniera Electrnica Informtica IIIng. Cristina Alarcn 2013

    43. Disear un programa que halle las races enteras 2, 3, 4, 5, 6, 7 de aquellos enteros pertenecientes al intervalo [1, 1000] desarrollando la funcin cuyo prototipo se detalla a continuacin: int CALCULA_RAIZ(int base, int exponente).

    44. Disear un programa que calcule el rea limitada por la curva de ecuacin y=x2 y el eje de las abcisas, entre dos valores a y b conocidos previamente. Hacerlo a travs de la funcin: float AREA(float a, float b).

    45. Disear un programa que al ingresar pares de nmeros enteros tantas veces como considere necesario, determine si el primer nmero del par es divisible por el segundo. Desarrollar la funcin MODULO, la cual calcula el mdulo o resto de la divisin entre dos enteros: void MODULO(int dividendo, int divisor, int *resto).

    Parte 5: Temas:

    - Recursividad

    46. Por medio de una funcin recursiva calcular la multiplicacin de dos nmeros naturales. Mostrar su resultado.

    47. Dados dos nmeros naturales n1 y n2 por medio de una funcin recursiva calcular la suma de los nmeros comprendida entre ellos, incluidos los mismos. Mostrar el resultado obtenido.

    48. Dado un nmero natural n calcular la sumatoria de los primeros n nmeros naturales a travs de una funcin recursiva. Mostrar el resultado obtenido.

    49. Dados dos nmeros naturales: base y exponente calcular por medio de una funcin recursivael valor de la base elevado a exponente y mostrar el resultado.

    50. Teniendo como datos dos nmeros naturales calcular el producto de los nmeros comprendidos entre ellos, incluidos los mismos. Hacerlo por medio de una funcin recursiva. Mostrar el resultado.

    51. Sabiendo que en la serie numrica de Fibonacci el primer trmino vale 1, el segundo vale 1 y los siguientes son la suma de los dos anteriores, calcular el valor de un trmino cualquiera. Hacerlo por medio de una funcin recursiva, y mostrar el resultado obtenido.

    52. Dados dos nmeros naturales a y b, siendo b distinto de cero, calcular la divisin entera entre a y b. Hacerlo por medio de una funcin recursiva. Mostrar el resultado obtenido.

    Parte 6: Temas:

    - Macros o funciones en lnea

    53. Realizar un programa en lenguaje C que implemente una macro llamada TRUNCA(x), la misma trunca la parte decimal de x. El argumento x puede ser entero o real.

    Serie 1 Pgina 5 de 8

  • UTN-FRSN Ingeniera Electrnica Informtica IIIng. Cristina Alarcn 2013

    54. Implementar y utilizar la macro REDONDEA(x), la cual redondea el valor de x de acuerdo al siguiente criterio: 1) Si x=0 TRUNCA (x+0.5) El argumento x puede ser entero o real.

    55. Realizar la macro PARTE_ENTERA(x), donde x es un nmero real, definiendo la parte entera de x como el menor nmero entero ms prximo al mismo.

    56. Desarrollar una macro FAREN_A_CELSIUS(x) que convierta grados celsius a grados Fahrenheit. La frmula de conversin es: C = 5/9 (F 32).

    57. Programe una macro llamada ES_DIGITO(x) que determine si un carcter es uno de los dgitos de 09.

    58. Escribir una macro ES_VOCAL(x) que determine si un carcter es una vocal.

    59. Escribir una funcin en lnea llamada ES_PAR(x), la que define si el entero x es par, y en tal caso que devuelva un verdadero.

    60. La macro PORCIENTO(x,y), calcula el porcentaje que representa x del total y. Implementar y utilizar dicha macro.

    61. Realizar una macro llamada CUBO(x), la cual calcula el valor de x elevado al cubo, siendo x un valor entero. Implementar y utilizar dicha macro en un programa.

    Parte 7: Temas:

    - Arreglos numricos

    62. Hacer un programa que llene automticamente un vector de n elementos, (n

  • UTN-FRSN Ingeniera Electrnica Informtica IIIng. Cristina Alarcn 2013

    67. Hacer un programa que permita ingresar por teclado los 20 elementos de un vector numricoC, luego que lo ordene en forma ascendente y lo imprima por pantalla.

    68. Realizar un programa que permita leer por teclado los 15 elementos numricos enteros de unvector A. Luego permita ingresar un nmero c y busque si dicho numero c se encuentra en el vector A. Hacer la bsqueda en forma secuencial, elemento a elemento.

    69. Modificar el ejercicio anterior para ordenar los elementos del arreglo. A continuacin, realizar una bsqueda dicotmica o binaria del nmero c en el arreglo A.

    70. Realizar un programa que permita leer desde teclado los valores de una tabla numrica llamada A de 10 filas y 5 columnas. Realizar la lectura de dichos elementos por fila. Luego imprimir la tabla por columnas.

    Parte 8: Temas:

    - Cadenas de caracteres - Punteros - Funciones creadas por el usuario - Creacin de proyectos

    71. Disear una funcin que cuente y devuelva la cantidad de caracteres de una cadena llamada *cad. El prototipo de la funcin es: int cuentacar(char *cad). El equivalente de la biblioteca estndar es la funcin strlen, que no puede ser usada para resolver este ejercicio.

    72. Disear una funcin cuyo prototipo sea: void copia(char *cad1, char *cad2),donde cad1 y cad2 son cadenas de caracteres. La funcin copia() copiar el contenido cad2 en cad1. El equivalente de la biblioteca estndar es la funcin strcpy, que no puede ser usada para resolver este ejercicio.

    73. Disear una funcin cuyo prototipo sea: int busca(char *cad1, char c). La funcin devolver la posicin de la primera ocurrencia del carcter c en la cadena *cad1, de no encontrarse en la misma devolver un falso. El equivalente de la biblioteca estndar es la funcin strchr, que no puede ser usada para resolver este ejercicio.

    74. Disear una funcin cuyo prototipo sea: int alfabtica(char *cad, char *cad2). Alfabtica devolver como resultado al lugar donde fue llamada:

    -1 si cad1 est primero en el orden alfabtico que cad2 0 si cad1=cad2 1 si cad1 est despus en el orden alfabtico que cad2.El equivalente de la biblioteca estndar es la funcin strcmp, que no puede ser usada para resolver

    este ejercicio.

    75. Disear una funcin cuyo prototipo sea: char *une( char *cad1, char *cad2).La funcin devolver una cadena formada por cad1 y a continuacin cad2. El equivalente de la biblioteca estndar es la funcin strcat, que no puede ser usada para resolver este ejercicio.

    Serie 1 Pgina 7 de 8

  • UTN-FRSN Ingeniera Electrnica Informtica IIIng. Cristina Alarcn 2013

    76. Disear una funcin cuyo prototipo sea: char *invierte(char *cad1). Esta funcin devuelve la cadena cad1 invertida. El equivalente de la biblioteca estndar es la funcin strrev, que no puede ser usada para resolver este ejercicio.

    77. Disear una funcin cuyo prototipo sea: char *medio(char *cad1, int pos1, int pos2). La funcin devolver una subcadena de la cadena cad1. Dicha subcadena comenzar con el elemento que se encuentra en la posicin pos1 de cad1 y terminar con el elemento que se encuentra en la posicin pos2 de cad1.

    78. Disear una funcin cuyo prototipo sea: char *izquierda(char *cad1, int pos1). La funcin devolver una subcadena de la cadena cad1. Dicha subcadena comenzar con el primer elemento de cad1 y terminar con elemento que se encuentra en la posicin pos1 de cad1.

    79. Disear una funcin cuyo prototipo sea: char *derecha(char *cad1, int pos1). La funcin devolver una subcadena de la cadena cad1. Dicha subcadena comenzar con el elemento de cad1 que se encuentra en la posicin pos1 y terminar con el ltimo elemento de cad1.

    80. Disear una funcin cuyo prototipo sea: char *mayor(char *cad1, char *cad2). La funcin mayor devuelve la cadena de mayor longitud entre cad1 y cad2.

    81. Disear una funcin cuyo prototipo sea: char *cadena_aleat(int n). Esta funcin devuelve una cadena de n caracteres al azar. Mejorar la funcin de manera de permitir seleccionar si los caracteres con slo maysculas, solo minsculas o ambas.

    82. Los prototipos de las funciones deben integrar el archivo de cabecera "cadenas.h". Las definiciones de las funciones deber formar parte del archivo cadenas.c. Repetir los ejercicios 71a 81 en forma de proyecto.

    Serie 1 Pgina 8 de 8

    Serie 1