Practica2-sem3-soluciones

Anuncio
CI-2125, Computación I
Practica 2. Semana 3: Instrucciones primitivas: asignación, entrada y salida (scanf, printf). Operadores.
Expresiones aritméticas y lógicas.
1. Cual de los siguientes identificadores o nombres de variables, en el Lenguaje C, son validos?
Identificadores
Solución
n
correcto
MiProblema
correcto
Mi Juego
incorrecto, no se debe dejar espacios
m&m
incorrecto
85Nombre
incorrecto
Registro
correcto
AAAAAAAA
correcto
92
incorrecto
*143edad
incorrecto
2. Escriba las siguientes expresiones aritméticas como expresiones válidas del lenguaje C:
a. x + 1
b.
d
--------------y
c+e
c.
xy
--------1 – 4x
Resp:
a. x/y+1
b. d/(c+e)
c. x*y/(1-4*x)
d. (x+y)/(x-y)
d. x + y
-------x–y
3. Indique las fórmulas matemáticas a las que corresponden las siguientes expresiones en C
a. sqrt(a+b/c)
b. sqrt((a+b)/c)
c. a *x *x + b * x + c
d. w * t * log(1.0 + s/n)
4. Indique lo que imprime, cada una de las siguientes instrucciones. Suponga que x = 2 y y = 3
a. printf(“%d”, x);
Resp: 2
b. printf(“%d”, x+x);
Resp: 4
c. printf(“x = “);
Resp: x =
d. printf(“x = %d”,x);
Resp: x = 2
e. printf(“%d = %d”, x+y, y+x);
Resp: 5 = 5
f. /* printf(“x + y = %d”,x+y); */
Resp: Nada, sin el comentario seria x + y = 5
g. printf(“\n”);
Resp: Nada, pero baja una linea
5. Evalúe cada una de las siguientes expresiones en C
a. 3*(9 % 2) - 5
Resp: -2
b. 1 – 2 – 3 – 4 – 5
Resp: -13
c. ((9/3) + (9/4) + (9/5)) % 4
Resp: 2
6. Dada la expresión ax3 + 7, diga cuál de las siguientes, son expresiones equivalentes en el lenguaje C,
de acuerdo a las reglas de precedencia
a. y = a * x * x * x + 7
Resp: SI
b. y = a * x * x * (x + 7)
Resp: NO
c. y = (a * x) * x *(x + 7) Resp: NO
d. y = (a * x) * x * x + 7
Resp: SI
e. y = a * x * x * x + 7
Resp: SI
f. y = a * (x * x * x) + 7
Resp: SI
g. y = a * x * (x * x + 7)
Resp: NO
7. Diga el orden del cálculo de los operadores de las siguientes expresiones en C, indique el valor de x en
cada caso.
a. x = 7 + 3 * 6 / 2 – 1;
Resp: *, /, +, -, x = 15
b. x = 2 % 2 + 2 * 2 – 2 / 2;
Resp: %, *, /, +, -, x = 3
c. x = (3 * 9 * (3 + (9 * 3 / (3)))); Resp: 9*3 = 27, 27/3 = 9, 3 + 9 = 12, 3 * 9 = 27, 27 * 12 = 324
8. Escriba un programa en C que imprima en dos líneas distintas las frases
Bienvenido a la programación en C
Pronto comenzaremos a programar
Codificación:
#include <stdio.h>
void main()
{
printf(“Bienvenido a la programación en C \n”);
printf(“Pronto comenzaremos a programar \n”);
}
9. Escriba un programa en C que solicite al usuario el largo y ancho de una habitación y a continuación
visualice su superficie con cuatro decimales.
#include <stdio.h>
void main()
{
float largo, ancho;
printf("Introduzca la longitud de la habitacion: \n");
scanf("%f",&largo);
printf("Introduzca el ancho de la habitacion: \n");
scanf("%f",&ancho);
printf("su supercies es %10.4f \n", long*ancho);
}
10. Escriba un programa en C que solicite al usuario el radio de una circunferencia (número real), y calcule
e imprima el área, el perímetro de la circunferencia, y el volumen de la esfera asociada.
#include <stdio.h>
#define PI 3.14159
void main()
{
float radio, area, volumen;
printf("Introduzca el radio: \n");
scanf("%f",&radio);
printf("Perímetro= %f\n",2.0*PI*radio );
area = PI*radio*radio;
printf("Área = %f\n",area);
volumen=4/3*PI*radio*radio*radio;
printf("Volumen = %f\n",volumen);
}
11. Escriba un programa que imprima los números del 1 al 4, en un mismo renglón. Utilizando los
siguientes métodos.
a. Instrucción printf sin especificadores de conversión.
Resp: printf(“1 2 3 4\n”);
b. Instrucción printf con cuatro especificadores de conversión.
Resp: printf(“%d %d %d %d\n”,1, 2, 3, 4);
c. Cuatro instrucciones printf.
Resp: printf(“1”); printf(“2”); printf(“3”); printf(“4\n”);
12. Sean a, b y c, expresiones booleanas, cuyos valores son: a = true, b = false, c = true. Evalúe cada una
de las expresiones:
a. a && (b || c)
Resp: true
b. (a && b) || (a && c)
Resp: true
c. !a || !c
Resp: false
d. a && (!b || !c)
Resp: true
13. Escriba un programa en C, que desglose cierta cantidad de segundos introducida por teclado en su
equivalente en semanas, días, horas, minutos y segundos.
Análisis:
El programa que se codifica lee el número de segundos y realiza las conversiones, teniendo en cuenta
que un día tiene 24 horas, una hora 60 minutos y un minuto 60 segundos.
Codificación :
#include <stdio.h>
void main()
{
int totalseg; /* entrada */
int semanas, dias, horas, minutos, segundos; /* salida */
/* PRE: totalseg >=0 */
int acum;
printf("Introduzca segundos: \n");
scanf("%d",&acum);
segundos = acum%60;
acum = acum / 60;
minutos = acum % 60;
acum = acum / 60;
horas = acum % 24;
acum = acum / 24;
dias = acum % 7;
semanas = acum / 7;
/* POST: totalseg=(((((7*semanas) + dias)*24) + horas) 60 ) + minutos ) 60 + segundos*/
/* o POST: totalseg=604800*semanas + dias* 86400 + horas*3600 + minutos*60 segundos ) y
0<= segundos, minutos < 60 y 0 <= dias < 7 y 0<= horas < 24 */
printf("numero de segundos %d\n",segundos );
printf("numero de minutos %d\n",minutos );
printf("numero de horas %d\n", horas );
printf("numero de dias %d\n",dias );
printf("numero de semanas %d\n",semanas );
}
Descargar