Sol_Ejerc1 - Universidad de La Serena

Anuncio
Programación Estructurada
Ejercicios
Dr. Eric Jeltsch F.
1.- Leer dos números enteros y escribir el mayor de los dos o un mensaje si son iguales.
2.- Leer un carácter y dos números enteros. Si el carácter leído es un operador
aritmético calcular la operación correspondiente, si es cualquier otro mostrar error.
Hacer el programa utilizando if-else.
3.- Hacer el mismo programa usando la instrucción switch().
4.- Leer un número entero y visualizar su tabla de multiplicar.
5.- Generar enteros de 3 en 3 comenzando por el 2 hasta el valor máximo menor que 30.
Calcular la suma de los enteros generados que sean divisibles por 5.
6.- Media de una serie de números que finaliza al introducir el 999. El 999 no debe ser
tenido en cuenta para la media.
7.- Leer un número entero positivo y averiguar si es perfecto. Un nº es perfecto cuando
es igual a la suma de sus divisores excepto el mismo.
8.- Leer dos números enteros a y b mayores o iguales que cero y calcular su producto
mediante sumas sucesivas. (Use, a modo de ejemplo, los tres esquemas repetitivos
existentes en C.
9.- Leer un número entero y averiguar si es o no múltiplo de 9. Un número es múltiplo
de 9 si la suma de sus cifras es 9 o múltiplo de 9.
Sol:
1.- Solución: .
/*Leer dos números enteros y escribir el mayor de ambos o un mensaje
si son iguales.*/
#include <stdio.h>
void main()
{
int a,b;
printf("Dame dos numeros... ");
scanf("%d%d",&a,&b);
if (a>b)
printf("El mayor numero es... %d",a);
else
if (b>a)
printf("El numero mayor es.... %d",b);
else
printf("Los numeros son iguales");
}
3.- Solución:
/* Leer un carácter y dos números enteros. Si el carácter leído es un
operador aritmético calcular la operación correspondiente, si es
cualquier otro mostrar error. Hacer el programa utilizando la
instrucción switch() */
#include <stdio.h>
void main()
{
______________________________________________________________________
Escuela Ingeniería en Computación, Universidad de La Serena.
Programación Estructurada
Ejercicios
Dr. Eric Jeltsch F.
char c;
int a,b;
printf("dame un caracter\n");
c=getchar();
fflush (stdin);
printf("dame dos numeros\n");
scanf("%d %d",&a,&b);
switch (c)
{
case '+':
printf("resultado %d",a+b);
break;
case '-':
printf("resultado %d",a-b);
break;
case '*':
printf("resultado %d",a*b);
break;
case '/':
printf("resultado %d",a/b);
break;
default:
printf("error");
}
}
4.- Solución:
/* Leer un número entero y visualizar su tabla de multiplicar. */
#include <stdio.h>
void main()
{
int a,b;
printf ("Introduce el número:");
scanf("%d",&a);
b=1;
while (b<=10)
{
printf("%d * %d = %d\n",a,b,a*b);
b++;
}
}
6.- Solución:
/* Media de una serie de números que finaliza al introducir el 999. El
999 no debe ser tenido en cuenta para la media. */
#include <stdio.h>
void main()
{
int n,c=0,s=0;
// Típico esquema mientras.
// Se lee el primer elemento de la secuencia fuera del bucle
printf("Dame el primer nº:");
scanf("%d",&n);
while(n!=999)
{
s+=n; // Se trata el elemento leído
c++;
printf("Dame el siguiente nº:"); // Se obtiene el siguiente elemento
scanf("%d",&n);
}
______________________________________________________________________
Escuela Ingeniería en Computación, Universidad de La Serena.
Programación Estructurada
Ejercicios
Dr. Eric Jeltsch F.
if (c) // Sólo se podrá dividir si en la secuencia hay algún nº
printf("\nLa media de los números es %.2f\n",(float)s/c);
else
printf("\nNo se ha leído ningún número.\n");
}
7.- Solución:
/* Leer un entero positivo y averiguar si es perfecto. Un nº es
perfecto cuando es igual a la suma de sus divisores excepto el mismo
*/
#include <stdio.h>
void main()
{
int i,numero,suma=0;
do{
printf("Dame un numero:");
scanf("%d",&numero);
} while (numero<=0);
for (i=1;i<=(numero/2);i++)
if ((numero%i)==0)
suma+=i;
if (numero==suma)
printf("El numero es perfecto.");
else
printf("El numero NO es perfecto.");
}
8.- Solución:
/* Leer dos números enteros a y b mayores o iguales que cero y
calcular su producto mediante sumas sucesivas. (Se usan, a modo de
ejemplo, los tres esquemas repetitivos existentes en C.*/
#include <stdio.h>
void main()
{
int a,b,c,i,producto=0;
do{
printf("Dame un a:");
scanf("%d",&a);
} while (a<0);
do{
printf("Dame b:");
scanf("%d",&b);
} while (b<0);
// Suponemos que a es mayor que b en caso contrario
intercambio
if (a<b)
{
c=a;
a=b;
b=c;
}
printf("a=%d b=%d\n",a,b);
for (i=0;i<b;i++)
producto+=a;
printf("El producto con for es: %d\n",producto);
producto=0;
i=0;
while (i<b)
{
se
hace
un
______________________________________________________________________
Escuela Ingeniería en Computación, Universidad de La Serena.
Programación Estructurada
Ejercicios
Dr. Eric Jeltsch F.
producto+=a;
i++;
}
printf("El producto con while es: %d\n",producto);
producto=0;
i=0;
do /* con este bucle al multiplicar por cero */
{ /* me daria "a" */
producto+=a;
i++;
} while (i<b);
printf("El producto con do-while es: %d",producto);
}
9.- Solución:
/* Leer un numero entero y averiguar si es o no múltiplo de 9. Un nº
es múltiplo de 9 si la suma de sus cifras es 9 o múltiplo de 9. Ej.:
99 es múltiplo pues 9+9=18, que a su vez 1+8=9 */
#include <stdio.h>
void main()
{
int numero,sumacifras,s;
printf("Dame un numero: ");
scanf("%d",&numero);
s=numero;
while (numero>9)
{
sumacifras=(numero%10); //Inicializamos sumacifras con el primer resto.
while ((numero/=10)!=0) //Mientras la parte entera de la división sea
distinta
de 0
sumacifras+=(numero%10); //Seguimos sumando los restos
numero=sumacifras; //Asignamos la suma de las cifras al número
}
if (numero==9) //Al salir si el número es igual a 9 es múltiplo
printf("El numero %d, es multiplo de 9.",s);
else
printf("El numero %d, NO es multiplo de 9.",s);
}
______________________________________________________________________
Escuela Ingeniería en Computación, Universidad de La Serena.
Descargar