Sunteți pe pagina 1din 3

Taller de Lenguajes I Ingeniera en Computacin UNLP

1 2013 Primer Semestre



Prctica 1
Tipos de datos simples y estructuras de control Funciones Identificadores
1. Al compilar un programa en C, el compilador puede notificar errores y avisos (warnings). Qu
diferencia existe entre ellos? Puede un programa compilar con errores? y con warnings?
Compile el siguiente cdigo e identifique errores y warnings. Luego, corrjalos para que el cdigo
compile correctamente.
#include <stdio.h>
int main(){
double pi= 3.14;
int y= 5
printf("pi= %d\n", pi);
}
2. Investigue los diferentes tipos de datos del lenguaje C y luego responda:
a. Qu ocurre cuando asignamos un char a un int? y al revs? Ejecute el siguiente cdigo
y analice lo que imprime:
#include <stdio.h>
int main(){
char c= 'a';
int x= 64;
printf("char c= %c\n", x);
printf("int x= %d\n", c);
return 0;
}
b. Qu diferencia existe entre los tipos float y double? se puede asignar sin
inconvenientes?
c. Qu sucede cuando en una operacin intervienen operadores diferentes (por ejemplo: +, -,
*, /, %)?
d. Investigue el operador sizeof. Para qu sirve? Luego aplquelo y verifique el tamao de
los distintos tipos de datos en su mquina.
3. Escriba un programa que a partir de un nmero real ledo desde teclado, el cual representa una
distancia en kilmetros, imprima su equivalente en millas.
Nota: 1,61 Km 1 milla.
4. Escriba un programa que imprima en pantalla todos los nmeros enteros mltiplos de 5
comprendidos entre 1 y 50. Realice dos soluciones con las siguientes caractersticas:
a. Utilizando el operador % para determinar cundo un nmero es mltiplo de 5.
b. Utilizando un for donde la variable ndice se incremente en 5 unidades por cada iteracin.
5. Escriba un programa que lea nmeros enteros ingresados por teclado. La lectura finaliza cuando
la suma de los nmeros ingresados es mayor a 1000. Al finalizar, informe el promedio de todos los
nmeros pares y el mximo de los nmeros impares ledos.
Taller de Lenguajes I Ingeniera en Computacin UNLP
2 2013 Primer Semestre

6. Identifique y corrija los errores en cada uno de los siguientes cdigos (Nota: puede haber ms de
uno):
a. if (edad >= 40);
printf(Tiene %d aos o ms,&40);
else
printf(Tiene menos de %d aos,&40);
b. int total, x = 1;
while (x <= 10) {
total += x;
++x;
}
printf(Total = %f,total);
c. int x, y;
scanf(%d,x);
scanf(%d,y);
printf(x + y = %d ,x+y);
d. int valor;
scanf(%d,&valor);
switch (valor % 2) {
case 0: printf(El valor es par);
case 1: printf(El valor es impar);
}
7. Indique qu valores de la variable de control i se imprimen para cada uno de las siguientes
estructuras de control for. Ejecute cada cdigo y analice por qu ocurre cada caso:
a. for (i = 0; i <= 11; i++)
printf(%d\n,i);
b. for (i = 0; i <= 11; ++i)
printf(%d\n,i);
c. for (i = 2; i <= 11; i+=2)
printf(%d\n,i);
d. for (i = 1; i <= 11; i*=2)
printf(%d\n,i);
e. for (i = 11; i >= 1; i-=2)
printf(%d\n,i);
f. for (i = 11; i > 1; i=+1)
printf(%d\n,i);

8. Escriba un programa que lea 2 nmeros enteros y un carcter, el cual debe corresponderse con un
operador matemtico (+, -, /, *), y a partir de ellos imprima el resultado de realizar la operacin
pedida en pantalla. En caso de que el carcter no represente un operador vlido, imprima un
mensaje de error.
9. Escriba un programa que imprima la raz cuadrada, el cuadrado y el cubo de los nmeros enteros
comprendidos en el rango 1..10.
Nota: para calcular la raz cuadrada y la potencia de un nmero investigue las funciones sqrt()
y pow(), ambas de la librera <math.h>.
10. Escriba un programa que imprima 15 nmeros generados pseudo-aleatoriamente. La secuencia
generada es siempre la misma? Por qu? Qu se puede hacer para generar secuencias pseudo-
aleatorias diferentes?
Taller de Lenguajes I Ingeniera en Computacin UNLP
3 2013 Primer Semestre

Nota: para generar nmeros en forma pseudo-aleatoria investigue la funcin rand(), la cual se
encuentra definida en la biblioteca <stdlib.h>.
11. Para todo nmero natural n, se llama factorial de n al producto de todos los naturales desde 1
hasta n:

Escriba una funcin que reciba como parmetro un nmero entero y retorne como resultado el
factorial del mismo.
a. Resolvindolo de forma iterativa.
b. Resolvindolo de forma recursiva.
12. Un nmero primo es un nmero natural mayor que 1, que tiene dos divisores distintos
nicamente: l mismo y el 1.
a. Escriba una funcin que reciba como parmetro un nmero entero n y determine si el
mismo es primo o no.
b. Escriba un programa que lea nmeros enteros desde teclado hasta que la cantidad de
nmeros primos ledos sea 5.
13. Una escuela primaria desea evaluar si sus alumnos son capaces de resolver operaciones
matemticas de suma de nmeros enteros. Para ello se pide realizar un programa que muestre al
alumno 4 operaciones de suma y le pida que ingrese sus correspondientes resultados. Los
operandos de las operaciones a resolver deben ser generados aleatoriamente y deben estar en el
rango de 0 a 100. Cada operacin respondida de forma correcta suma 1 punto. Al finalizar
informar la nota obtenida por el alumno de acuerdo a la siguiente tabla:
Puntaje 4 3 2 1 0
Nota A B C D E
Nota: para generar nmeros en forma aleatoria investigue la funcin rand(), la cual se encuentra
definida en la biblioteca <stdlib.h>. Para asegurarse que el nmero generado por la funcin
rand() se encuentre en el rango de 0 a 100, puede utilizar el operador % con 101 como segundo
operando.
14. Investigue los identificadores posibles para variables y funciones, y luego responda:
a. Para qu sirve el identificador auto? y register? Pueden aplicarse a funciones?
b. Es lo mismo aplicar el identificador static a una variable local que a una global? Qu
ocurre cuando se califica static a una funcin?
15. Desarrolle una funcin llamada damePar(), la cual debe retornar un nmero entero. damePar()
devuelve 0 en el primer llamado, 2 en el segundo, 4 en el tercero, y as sucesivamente. Luego,
escriba un programa que lea un nmero entero positivo n desde teclado y utilizando damePar()
imprima los primeros n nmeros pares. No utilice variables globales.

S-ar putea să vă placă și