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.