Вы находитесь на странице: 1из 5

Gua de ejercicios 1 Lenguaje de Programacin 2013-1

1) a) Escriba un programa que cree una variable de tipo carcter c, igual a 'A'. Ahora, sin modificar c ni crear otra variable , imprima en pantalla el carcter c y los siguientes 3 caracteres del abecedario. Imprima los valores numricos asociados a c y los siguientes 3 caracteres. b) Ahora realice lo mismo, pero para obtener el valor ASCII de c, utilice un entero i. 2) Dado los siguientes cdigos: cdigo 2.1 intmain() { inttamano_uchar=sizeof(unsignedchar); printf("Losunsignedcharocupan%dbytes\n",tamano_uchar); unsignedcharlapiz=30;//unlapizvale30pesos unsignedcharcantidad=10,total;//tenemos10lapices total=lapiz*cantidad;//daelvalordetodosloslapices printf("total1:%u\n",total); unsignedinttotal2=lapiz*cantidad; printf("total2:%u\n",total2); return0; } cdigo 2.2 intmain() { inttamano_usint=sizeof(unsignedshortint); printf("Losunsignedshortintocupan%dbytes\n",tamano_usint); unsignedshortintlapiz=30000;//unlapizvale30000pesos unsignedshortintcantidad=10000,total;//tenemos10000lapices total=lapiz*cantidad;//daelvalordetodosloslapices printf("total1:%u\n",total); unsignedinttotal2=lapiz*cantidad; printf("total2:%u\n",total2); return0; } Verifique qu imprimen para total1 y total2, por qu sucede esto?

PG/ RF/EP

28 de Marzo de 2013

3) Dado el siguiente cdigo: intmain() { inttamano_ulint=sizeof(unsignedlongint); printf("Losunsignedlongintocupan%dbytes\n",tamano_ulint); unsignedintlapiz=300000; unsignedintcantidad=1000000,total; total=lapiz*cantidad;//valordetodosloslapices printf("total1:%d\n",(int)total); unsignedlonginttotal2=lapiz*cantidad; printf("total2:%lu\n",total2); unsignedlonginttotal3=(unsignedlongint)lapiz*cantidad; printf("total3:%lu\n",total3); return0; } Verifique qu imprime el programa para total1, total2 y total3, por qu sucede esto?

4) Escriba un programa que lea desde teclado tres nmeros enteros e imprima correctamente su suma y promedio. 5) Escriba un programa que imprima en pantalla el rea de una circunferencia de radio 2000. Exprese el radio en notacin cientfica. Utilice pi igual a 3.14159. Qu tipo de variable utiliz? por qu? 6) El siguiente cdigo realiza conversin de tipos. Indique cul es implcita y cul explicita. qu imprime?
int main () { int i = 5, j = 6; double x = 2.718,

y = 3.141;

x = i; printf ("x = %lf\n", x); j = (int) y; printf ("j = %d\n", j);

return0;
}

7) Escriba un programa que contenga la siguiente lnea


printf ("%lf\n", ( (double) (int) 3.141 ) );

qu imprime? por qu?


PG/ RF/EP

28 de Marzo de 2013

SOLUCIONES: 1) a) Se crea la variable carcter c = 'A', luego se imprime sta y los siguientes valores sumndole 1, 2 y 3. Los resultados se entregan directamente a printf. Para imprimir el valor entero ASCII, se realiza lo mismo pero para en printf se especifica que se recibe un entero (%d). intmain() { charc='A'; printf("Caracterc:%c\n",c); printf("Siguientestrescaracteres:%c,%c,%c\n",c+1,c+2,c+3); printf("ValorASCIIdecaracterc:%d\n",c); printf("SiguientestresvaloresASCCI:%d,%d,%d\n",c+1,c+2,c+3); return0; } b) Slo se debe asignar el valor de c a i. El casting se realiza de forma implcita. intmain() { charc='A'; printf("Caracterc:%c\n",c); printf("Siguientestrescaracteres:%c,%c,%c\n",c+1,c+2,c+3); inti=c; printf("ValorASCIIdecaracterc:%d\n",i); printf("SiguientestresvaloresASCCI:%d,%d,%d\n",i+1,i+2,i+3); return0; } 2) 2.1 El resultado correcto debera ser 30*10 = 300. Al ejecutar el programa se obtiene: Los unsigned char ocupan 1 bytes total: 44 total2: 300 Este resultado es incorrecto para total ya que es un unsigned char y se produce rebalse (300 > 256). En el caso de total2 el resultado es correcto ya que la operacin aritmtica se realiza por defecto con int, para datos ms pequeos que int.

PG/ RF/EP

28 de Marzo de 2013

2.2 Sucede algo similar. El resultado correcto debera ser 3000*1000 = 300000000. Al ejecutar el programa se obtiene: Los unsigned long int ocupan 2 bytes total: 41278 total2: 300000000 Este resultado es incorrecto para total ya que es un unsigned short int y se produce rebalse (300000000 > 65535). En el caso de total2 el resultado es correcto ya que la operacin aritmtica se realiza por defecto con int, para datos ms pequeos que int.

3) El resultado correcto debera ser 300000*1000000 = 300000000000. Al ejecutar el programa se obtiene: Los unsigned long int ocupan 8 bytes total: -647710720 total2: 3647256576 total3: 300000000000 Este resultado es incorrecto para total ya que es un unsigned int y se produce rebalse (300000000000 > 4294967296). En el caso de total2 el resultado tambin es incorrecto ya que la operacin aritmtica se realiza para unsigned int y se produce rebalse del resultado (antes de almacenarlo en total2). En el caso de total3 el resultado es correcto ya que gracias al casting la operacin aritmtica se realiza para unsigned long int y no se produce rebalse del resultado.

4) La suma debe realizarse como flotante y almacenarse como flotante. intmain() { intnum1,num2,num3; printf("Ingresetresnumerosenteros:"); scanf("%d%d%d",&num1,&num2,&num3); printf("\nLosnumerosingresadosson:%d%d%d\n",num1,num2,num3); intsuma=num1+num2+num3; floatpromedio=suma/3.0; //otraformaes:floatpromedio=(float)suma/3; printf("\nLasumaes:%dyelpromedioda:%f\n",suma,promedio); return0; }

PG/ RF/EP

28 de Marzo de 2013

5) Se pueden definir todas las variables como flotantes. As toda la operacin ser con flotantes. La f en las constantes no es obligatoria, si no se incluye, se crearn constantes double y despus de convertirn a flotantes al momento de asignarlas.
int main () { float pi = 3.14159f, radio= 2.0E03f, area = 0.f; area = pi * radio * radio; printf ("El area del circulo es %f\n", area); return 0; }

Aunque no es necesario, tambin se podra implementar todo con double. Poner atencin al modificador de formato a utilizar en printf (lf en vez de f):
int main () { double pi = 3.14159, radio= 2.0E03, area = 0.; area = pi * radio * radio; printf ("El area del circulo es %lf\n", area); } return 0;

6) Las conversiones implcitas se realizan automticamente por el programa al hacer una asignacin de un tipo a otro o al promover datos en una expresin. Las conversiones explcitas son impuestas por el programador utilizando (tipo_a_convertir).
int main () { int i = 5, j = 6; double x = 2.718,

y = 3.141;

// Conversion implicita: x = i; printf ("x = %lf\n", x); // Conversion explicita: j = (int) y; printf ("j = %d\n", j); return 0; }

// Imprime 5.0

// Imprime 3

PG/ RF/EP

28 de Marzo de 2013

Вам также может понравиться