Sie sind auf Seite 1von 25

Ejemplo 1: Programa que calcula el factorial de 'n' nmeros introducidos desde teclado.

Primera versin:

#include <stdio.h> /* Factorial de un nmero - versin 1- */ long int factorial (int x) /*definicin de funcin*/ { int i; long int fac = 1; for (i=2; i<=x; i=i+1) fac=fac*i; return (fac); } main () /* funcin principal */ { int a; do { printf ("\n Introduce el numero "); scanf ("%d", &a); if (a>0) printf ("El factorial es %ld", factorial (a)); } while (a > 0); }

-1-

Segunda versin:

#include <stdio.h> void factorial (int x) /* definicin de funcin */ { int i; long int fac = 1; for (i=2; i<=x; i=i+1) fac=fac*i; printf ("El factorial de %d es %ld", x, fac); }

main () { int a; do {

/* funcin principal */

printf ("\n Introduce el nmero "); scanf ("%d", &a); if (a>0) factorial (a); } while (a > 0); }

-2-

Ejemplo 2: Programa que calcula el mximo de 3 nmeros enteros. Primera versin:

#include <stdio.h> /* Mximo de 3 nmeros */ int maximo (int x, int y) /* definicin de funcin */ { if (x > y) return x; else return y; } main () /* funcin principal */ { int a,b,c,res; printf ("Introduce los 3 nmeros "); scanf ("%d %d %d", &a, &b, &c); res = maximo (a,b); printf ("El mximo es %d", maximo(res,c)); }

-3-

Segunda versin:

#include <stdio.h> /* Maximo de 3 nmeros */ int maximo (int x, int y) { int max; if (x > y) max=x; else max=y; return (max); } /* definicin de funcin */

main () /* funcin principal */ { int a,b,c; printf ("Introduce los 3 nmeros "); scanf ("%d %d %d", &a, &b, &c); printf ("El mximo es %d ", maximo (maximo(a,b), c)); }

-4-

Ejemplo 3. Programa que convierte un carcter minscula a mayscula.

#include <stdio.h> char minus_mayus (char c2) /* definicin de funcin */ { char cf; if (c2 >= 'a' && c2 <= 'z') cf= 'A'+c2-'a'; else cf=c2; return (cf); } main () /* funcin principal */ { char c1; printf ("Introduce carcter "); scanf ("%c",&c1); printf ("El carcter mayscula es %c", minus_mayus (c1)); }

-5-

Ejemplo 4. Programa que calcula los mltiplos de 3,4,5,6 y 7 que hay entre 1 y 100.

#include <stdio.h> void multiplos (int a) /* definicin de funcin */ { int i; for (i=a*2; i<=100; i=i+a) printf (" %d", i); } main () /* funcin principal */ { int i=3; while (i <= 7) { printf ("\n Mltiplos del %d :", i); multiplos (i); i=i +1; } }

-6-

Ejemplo 5:

#include <stdio.h> void modificar (int a) /* definicin de funcin */ { a=a *3; printf ("\n Valor desde la funcin %d", a); } main () { int a=2; printf (" \nValor antes de llamar a la funcin %d", a); modificar (a); printf ("\n Valor despus de llamar a la funcin %d", a); } Salida del programa: Valor antes de llamar a la funcin 2 Valor desde la funcin 6 Valor despus de llamar a la funcin 2

-7-

Ejemplo 6:

#include <stdio.h> int func (int x) { int y; y=x*x; return (y); } /* definicin de funcin */

main () /* funcin principal */ { int a, i; for (i=1;i<=5;i=i+1) { a= func (i); printf ("%d ", a); } }

-8-

Ejemplo 7

#include <stdio.h> #include <math.h> int func (int x) { int i; i=pow (x,2); return (i); } main () { int a, i; for (i=1;i<=5;i=i+1) { a= i*i+func (i); printf ("%d ", a); } }
En el ejemplo 7, tanto la funcin 'main' como 'func' tienen declaradas dos variables locales con el mismo nombre 'i'. Ambas variables son independientes, y no interfieren entre s.

/* definicin de funcin */

/* funcin principal */

-9-

Ejemplo 8:

#include <stdio.h> int a= 3; int func (int x) { a=a+x; return (a); } main () { int cont; /* variable global */ /* definicin de funcin */

/* funcin principal */

for (cont=1;cont<=5;cont=cont+1) { a= func (cont); printf ("%d ", a); } }


La salida del programa 8 ser:

a= 3+1= 4 a= 4+2=6 a= 6+3=9 a= 9+4=13 a= 13+5= 18


-10-

Ejemplo 9:

#include <stdio.h> #define N 25 int vector [N]; void lectura () { int i; for (i=1; i<=N; i++) scanf ("%d", &vector[i]); } main () { lectura (); }

-11-

Ejemplo 10:

#include <stdio.h> #define N 25 #define M 50 void lectura (int A [], dim) { int i; for (i=0; i<dim; i++) scanf ("%d", &A[i]); } main () { int V1[N], V2[M]; lectura (V1, N); lectura (V2, M); }

-12-

5.6.- EJEMPLOS DE UTILIZACION DE FUNCIONES. Ejemplo 11:

#include <stdio.h> int a= 100, b=200; int func1 (int x) /* definicin de funcin */ { if (x < 100) return (a+x); else return b; } int func2 (int x) { int prod=1; prod=prod*x; return (prod); } main () /* funcin principal */ { int cont,c; for (cont=1;cont<=5;cont++) { c=func2 (cont); printf ("%d ", func1 (c)); } }
Ejemplo 12:
-13-

#include <stdio.h> int a= 100, b=200; int func1 (int x) /* definicin de funcin */ { int c; c=func2 (x); if (c < 100) return (a+c); else return b; } int func2 (int x) { int prod=1; prod=prod*x; return (prod); } main () /* funcin principal */ { int cont; for (cont=1;cont<=5;cont++) printf ("%d ", func1 (cont)); }

-14-

Ejemplo 13: Declaracin por adelantado.

#include <stdio.h> int a= 100, b=200; main () /* funcin principal */ { int cont; float func1 (); /*declaracin por adelantado de func1*/ for (cont=1;cont<=5;cont++) printf ("%f ", func1 (cont)); } float func1 (int x) /* definicin de funcin */ { char c; char func2 (); /*declaracin por adelantado de func2 */ c=func2 (x); if (c < 100) return c*0.01; else return c*0.1; } char func2 (int x) { return x; }
Ejemplo 14:
-15-

/* definicin de funcin */

#include <stdio.h> int a= 0, b=1; int func1 (int a) /* definicin de funcin */ { b= func2 (a+1) +1; return b; } int func2 (int a) { return (b+a); } /* definicin de funcin */

main () { int cont;

/* funcin principal */

for (cont=1;cont<=5;cont++) { b= b+ func1 (a+1) + 1; printf ("%d ",b); } }

-16-

Ejemplo 15:

#include <stdio.h> int a= 0, b=1; int func1 (int a) { int b; b= func2 (a+1) +1; return b; } int func2 (int a) { return (b+a); } main () { int cont; /* definicin de funcin */ /* definicin de funcin */

/* funcin principal */

for (cont=1;cont<=5;cont++) { b= b+ func1 (a+1) + 1; printf ("%d ",b); } }

-17-

5.7.- DISEO MODULAR CON FUNCIONES. Ejemplo 16: Disea un algoritmo que devuelva la suma de todos los nmeros primos que hay entre 1 y 100.

#include <stdio.h> int primo (int x) { int D; if (x==1) return 1; else { D=2; while (x % D != 0) D=D+1; if (D==x) return 1; else return 0; } } main () { int suma=0, i; for (i=1; i<=100; i++) if (primo(i)) suma=suma+1; printf ("El nmero de nmeros primos es %d", suma); }

-18-

Ejemplo 17: Hacer un programa en C que lea un array de nmeros enteros y posteriormente modifique el array sumndole una unidad a cada elemento.

#include <stdio.h> #define n 5 void leervector (int A []) {int i; for (i=0; i<n; i++) { printf ("\n Introduce un nmero: "); scanf ("%d", &A[i]); } } void modifvector (int B []) { int i; for (i=0; i<n; i++) B[i]++; } void escribevector (int C []) { int i; for (i=0; i<n; i++) printf ("\n%d", C[i]); } main () { int V[n]; leervector (V); modifvector (V); escribevector (V); }

-19-

Ejemplo 18: Tenemos un conjunto de 100 alumnos y para cada uno de ellos las calificaciones correspondientes a 7 asignaturas (numeradas del 1 al 7). Disear un algoritmo que imprima al final la nota media del curso de todos los alumnos.

#include <stdio.h> #define N_ALU 100 #define N_ASIG 7 void inicializa_vector (float A[]) {int i; for (i=0; i<N_ALU; i++) A[i]=0; } void escribe_valores (float A[]) {int i; for (i=0; i<N_ALU; i++) printf ("\nLa nota del alumno %d es %g", i,A[i]/N_ASIG); } main () {float notas[N_ALU], calificacion; int i,j; inicializa_vector (notas); for (i=0; i<N_ALU; i++) for (j=1; j<=N_ASIG; j++) { printf ("\n Introduce la nota del alumno %d ", i); scanf ("%f", &calificacion); notas[i]=notas[i]+calificacion; } escribe_valores (notas); }

-20-

Ejemplo 19: Hacer un programa en C que sume dos matrices de nmeros.

#include <stdio.h> #define n 3

void leermatriz (int matriz[][n]) /* lee matriz de 3*3 */ { int i,j; for (i=0; i<n; i++) for (j=0; j<n; j++) { printf ("\nDame el valor del elemento m (%d %d) ", i,j); scanf ("%d", &matriz[i][j]); } } void sumamatriz (int m1[][n],int m2[][n], int m3[][n]) { int i,j; for (i=0; i<n; i++) for (j=0; j<n; j++) m3[i][j]=m1[i][j]+m2[i][j]; }

-21-

void vermatriz (int m[][n]) { int i,j; for (i=0; i<n; i++) for (j=0; j<n; j++) printf ("\nEl elemento m(%d %d)es %d", i,j, m[i][j]); } main () { int matriz1[n][n], matriz2[n][n], matriz3[n][n]; printf ("\n Introduce valores de la primera matriz"); leermatriz (matriz1); printf ("\n Introduce valores de la segunda matriz"); leermatriz (matriz2); sumamatriz (matriz1, matriz2, matriz3); vermatriz (matriz3); }

-22-

Ejemplo 20: Dada la estructura de tipo 'cliente' definida en los ejemplos anteriores, hacer una funcin en C que ample el saldo de las cuentas en un 5% si el ltimo pago se ha realizado en los 6 primeros meses del ao.

#include <stdio.h> int actualizar (int mes, int saldo) { if (mes<=6) return (0.05*saldo); else return 0; } main () { int i; struct fecha {int mes; int dia; int anyo;}; struct cuenta { int num_cuenta; char tipo_cuenta; char nombre[80]; float saldo; struct fecha ult_pago; } cliente[100]; for (i=0; i<100; i++) cliente[i].saldo=cliente[i].saldo+ actualizar(cliente[i].ult_pago.mes, cliente[i].saldo); }

-23-

Ejemplo 21: Definir una estructura para caracterizar un punto mediante sus dos coordenadas en el plano (x e y) y otra para definir un rectngulo en funcin de dos puntos. Hacer posteriormente una funcin en C para determinar si dado un punto, ste se encuentra dentro del rectngulo.

#include <stdio.h> struct punto { int x; int y; }; struct rectangulo { struct punto pt1; struct punto pt2; }; struct punto makepoint (int x, int y) { struct punto puntaux; puntaux.x=x; puntaux.y=y; return puntaux; }

-24-

int puntrect (struct punto p1, struct rectangulo rect) { if ((p1.x >= rect.pt1.x) && (p1.x <= rect.pt2.x) && (p1.y >= rect.pt1.y) && (p1.y <= rect.pt2.y)) return 1; else return 0; } main () { struct punto puntx; struct rectangulo rect; rect.pt1=makepoint (3,4); rect.pt2=makepoint (6,10); puntx=makepoint (5,8); if (puntrect (puntx, rect)) printf ("\nEl punto est en el rectngulo "); else printf ("\nEl punto no est en el rectngulo "); }

-25-

Das könnte Ihnen auch gefallen