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

Ejemplos de programas en lenguaje C

/*-------------------------*/
/* Ejemplo en C nº 6: */
/* c006.C */
/* */
/* Numeros enteros con y */
/* sin signo */
/* */
/* Curso de C, */
/* Nacho Cabanes */
/*-------------------------*/

#include <stdio.h>
main() /* Cuerpo del programa */
{
int primerNumero;
signed int segundoNumero;
unsigned int tercerNumero;
primerNumero = -1;
segundoNumero = -2;
tercerNumero = 3;
printf("El primer numero es %d, ", primerNumero);
printf("el segundo es %d, ", segundoNumero);
printf("el tercer numero es %d.", tercerNumero);
}

El resultado de este programa es el que podiamos esperar:

El primer numero es -1, el segundo es -2, el tercer numero es 3

Asi, un programa que leyera una letra tecleada por el usuario, fijara otra y mostrara ambas podria
ser:

/*---------------------------*/
/* Ejemplo en C nº 13: */
/* c013.c */
/* */
/* Tipo de datos char */

/* */
/* Curso de C, */
/* Nacho Cabanes */
/*---------------------------*/

#include <stdio.h>
main() {
char letra1, letra2;
printf("Teclea una letra ");
scanf("%c", &letra1);
letra2 = 'a';
printf("La letra que has tecleado es %c y la prefijada es %c",
letra1, letra2);
}

#include <stdio.h>
main()
{
int primerNumero;
int segundoNumero;
int suma;
primerNumero = 234;
segundoNumero = 567;
suma = primerNumero + segundoNumero;
printf("Su suma es %d", suma);
}

#include <stdio.h>

bool alto = true, bajo = false, blanco = true, negro = false;

int main (void) {


if (alto && bajo)
printf ("Uno cierto");
else
printf ("Uno falso");
if (alto && blanco)
printf ("Dos cierto");
else
printf ("Dos falso");
if (bajo && negro)
printf ("Tres cierto");
else
printf (“Tres falso");

getch();
}

Salida:

Uno falso
Dos cierto
Tres falso

Otros ejercicios

1) Suponiendo los siguientes valores iniciales para las variables:


x = 2; y = 6; z = 9; r = 100; s = 10; a = 15; b = 3;
¿Cuáles son los valores correctos en cada expresión?

a) x += 10;

12
10
11

b) s *= b;
9
13
30

c) r /= 0;

infinito
1
error

d) y += x + 10;

8
12
18

e) z -= a*b;

-36
-18
36

2) Usar expresiones equivalentes para las siguientes, usando operadores mixtos.

a) x = 10 + x - y;

x += 10-y
x -= y+10
x += 10+y

b) r = 100*r;

r *= 100*r
r *= 100
r += 100

c) y = y/(10+x);
y /= 10*x
y /= 10 + y/x
y /= 10+x

d) z = 3 * x + 6;

z += 6
z *= 3
no es posible

3) Evaluar las siguientes expresiones. Siendo:


x = 10; y = 20; z = 30;

a) z = x - y, t = z - y;

z=-10, t=-30
t=10
z=30, t=-30

b) (x < 10) && (y > 15)

true
false

c) (x <= z) || (z <= y)

true
false

d) !(x+y < z)

true
false

e) (x+y != z) && (1/(z-x-y) != 1)

true
false
error
Respuestas

1) Suponiendo los siguientes valores iniciales para las variables:


x = 2; y = 6; z = 9; r = 100; s = 10; a = 15; b = 3;
¿Cuáles son los valores correctos en cada expresión?

a) x += 10; (X)

Mal: Equivale a x = x + 10 = 2 + 10 = 12.

b) s *= b; (X)

Mal: Equivale a s = s * b = 10 * 3 = 30.

c) r /= 0; (X)

Mal: No es posible dividir por cero, se obtiene un error.

d) y += x + 10; (X)

Mal: Equivale a y = y + x + 10 = 6 + 2 + 10 = 18.

e) z -= a*b; (X)

Mal: Equivale a z = z - a*b = 9 - 15*3 = -36.

2) Usar expresiones equivalentes para las siguientes, usando operadores mixtos.

a) x = 10 + x - y; (X)

Mal: Hay que sumar 10 y restar y a x.

b) r = 100*r; (X)

Mal: Hay que multiplicar por 100.

c) y = y/(10+x); (X)

Mal: Hay que dividir y entre x+10.

d) z = 3 * x + 6; (X)

Mal: La variable z debe aparecer en ambos lados de la sentencia de asignación.

3) Evaluar las siguientes expresiones. Siendo:


x = 10; y = 20; z = 30;
a) z = x - y, t = z - y; (X)

Mal: Las expresiones de coma se evalúan de izquierda a derecha, y los resultados de cada
una se deben tener en cuenta para las siguientes.

b) (x < 10) && (y > 15) (X)

Mal: x no es menor de 10, luego x<10 es false, no necesitamos proseguir, ya que en una
expresión AND, si uno de los operandos es false, el resultado es false.

c) (x <= z) || (z <= y) (X)

Mal: x es menor que z, luego x<=z es true, no necesitamos proseguir, ya que en una
expresión OR, si uno de los operandos es true, el resultado es true.

d) !(x+y < z) (X)

Mal: x+y es igual a z, luego x+y<z es false, y la negación, por lo tanto, true.

e) (x+y != z) && (1/(z-x-y) != 1) (X)

Mal: x+y es igual a z, luego x+y != z es false, el compilador no evalúa el resto de la


expresión, ya que el resultado de una expresión AND es false si uno de los operandos es
false. Esto evita que se evalúe el segundo operador, lo que provocaría una excepción al
intentar dividir por cero.

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