Programas en C
Programas en C
Programas en C
#include stdio.h
main(){
float metros,resul,pulg;
int resul2,pulg2;
clrscr();
getch();
}
void main(){
int prim,seg,resul;
char oper;
clrscr();
if(oper=='+')
resul=prim+seg;
if(oper=='-')
resul=prim-seg;
if(oper=='*')
resul=prim*seg;
if(oper=='/')
resul=prim/seg;
main(){
float uno,dos,tres;
clrscr();
else
printf("\nEl triangulo es isoceles");
getch();
}
main(){
int alumnos,edad,counter=1;
float promedio,sumaedad=0;
clrscr();
while(1){
sumaedad=sumaedad+edad;
if(counter==alumnos){
break;
}
counter++;
}
promedio=sumaedad/counter;
printf("\nLa edad promedio de %d alumno(s) es %.1f
a,counter,promedio);
getch();
}
#include stdio.h
void main(void){
int notas,reprobados;
clrscr();
printf("\nNumero de notas a leer: ");
scanf("%d",& notas);
reprobados=numreprob(notas);
printf("\nExiste un total de %d alumnos reprobados",reprobados);
getch();
}
int c=1,calif,rep=0;
while(c<=not){
if(calif<7){
rep++;}
c++;
}
return(rep);
}
Función que lee las matriculas (números enteros) y las calificaciones (tipo char) de los
alumnos de un grupo y las almacene en dos arreglos unidimensionales. La función
deberá leer los datos hasta que se de una matricula cero la cual indica el fin de captura.
La función regresa el numero de alumnos por el mecanismo de return. Después debe de
imprimir el contenido de los arreglos.
#include stdio.h
void main(void){
int max=30,matr[29],numalumn;
char calif[29];
clrscr();
numalumn=leedato(matr,calif,max);
printf("\nEl numero de alumnos capturados es %d",numalumn);
despliega(matr,calif,numalumn);
}
int leedato(int *mats,char *califs,int maximo){
int n=0;
while(1){
if(n>=maximo){
printf("\nEl arreglo se encuentra lleno");
getch();
break;
}
printf("\n\nMatricula del alumno %d: ",n+1);
scanf("%d",mats);
if(*mats==0){
break;
}
printf("\nCalificacion del alumno %d: ",n+1);
scanf("%d",califs);
mats++;
califs++;
n++;
}
return n;
}
int i=1;
while(1){
if(i>numcap){
break;
}
printf("\nLa calificacion del alumno %d es %d",*mats,*califs);
i++;
mats++;
califs++;
}
getch();
}
void main(void){
int rango1,rango2,incremento;
char tipo;
clrscr();
tipo=tipoConv();
leeDatos(&rango1,&rango2,&incremento);
if(tipo=='C'){
despliegaCF(&rango1,&rango2,&incremento);
}
else{
despliegaFC(&rango1,&rango2,&incremento);
}
}
char tipoConv(void){
char caract;
return caract;
}
int suma=*ran1,incremento=*inc,rango2=*ran2;
float conversion;
while(suma<=rango2){
conversion=(((suma)*9)/5)+32;
printf("\n%d ?C ----------------------------- %.1f ?
F",suma,conversion);
suma=suma+incremento;
}
getch();
}
int suma=*ran1,incremento=*inc,rango2=*ran2;
int conversion;
while(suma<=rango2){
conversion=((suma-32)*5)/9;
printf("\n%d ?F ----------------------------- %d ?
C",suma,conversion);
suma=suma+incremento;
}
getch();
}
Ejemplos de cadenas. Funcion que realiza la misma operación que la funcion toi, que
convierte una cadena en un entero. La funcion regresa el entero representado por la
cadena s si se pudo convertir, en caso contrario regresa 0. Si la funcion encuentra
caracteres espacio o tabulacion los salta. Si al empezar la secuencia de datos, la se
interrumpe, el programa termina.
#include stdio.h
#include ctype.h
void main(void){
int n;
char cad[50];
clrscr();
while(1){
if(*s==' ' || *s=='\t'){
s++;
}
else break;
}
if(*s=='+'){
s++;
}
else if(*s=='-'){
signo=-1;
s++;
}
while(1){
if(*s=='\0' || !isdigit(*s)){
break;
}
num=10*num+(*s-'0');
s++;
}
return signo*num;
}
Ejemplos de cadenas. Funcion que realiza la misma operación que la funcion trlen.
Calcula la longitud de la cadena S. Regresa el n? de caracteres en S sin contar el
caracter de fin de cadena.
#include stdio.h
#include ctype.h
void main(void){
int n;
char cad[50];
clrscr();
int c=0;
while(1){
if(*s=='\0'){
break;
}
c++;
s++;
}
return c;
}
Funcion que lee una serie de n?s de la linea de comandos y ejecuta la instruccon
proporcionada después del ?o n? de la serie. Si la instruccion GUARDA, los n?s son
guardados en un arreglo de tipo entero. Si la instrucción LISTA, los numeros son
desplegados como cadenas.
#include stdio.h
#include ctype.h
#include string.h
#include stdlib.h
if(strcmp(ps[np-1],"GUARDA")==0){
for(i=0,j=1;j<(np-1);i++,j++){
arreglo[i]=atoi(ps[j]);
printf("\n%d",arreglo[i]);
}
}
if(strcmp(ps[np-1],"LISTA")==0){
for(i=1;i<(np-1);i++){
puts(ps[i]);
}
}
Volver
op1=atof(sarg[1]);
op2=atof(sarg[3]);
if(strcmp(sarg[2],"+")==0)
resul=op1+op2;
else if(sarg[2][0]=='-')
resul=op1-op2;
else if(strcmp(sarg[2],"*")==0)
resul=op1*op2;
else if(sarg[2][0]=='/')
resul=op1/op2;
else{
printf("\nOperador invalido: '%s'",sarg[2]);
return;
}
printf("\n\nEl resultado es %.1f",resul);
getch();
}
Volver
#include string.h
#include stdio.h
#include ctype.h
void main(void){
char txt[30][50],opcion;
int llenas=0,max=30,actual;
while(1){
clrscr();
printf(" EDITOR DE TEXTO");
printf("\n SELECCIONA LA PRIMERA LETRA DE LA OPCION
DESEADA");
printf("\n\nAgregar Salir Lista Reemplaza Inserta
Opcion: ");
opcion=toupper(getch());
if(opcion=='S')
break;
if(opcion=='A')
agrega_linea(txt,&llenas,max,&actual);
if(opcion=='L')
lista(txt,&llenas);
if(opcion=='R')
reemplaza_linea(txt,llenas,&actual);
if(opcion=='I')
inserta(txt,&llenas,actual,max);
}
}
/
**********************************************************************
****/
void agrega_linea(char t[][50],int *ll,int max,int *act){
if(*ll==max){
printf("\n\nMemoria insuficiente...");
return;
}
printf("\n\n>");
fflush(stdin);
gets(t[*ll]);
*ll=*ll+1;
*act=*ll;
}
/
**********************************************************************
****/
int i=0;
printf("\n\n");
while(i<*ll){
puts(t[i]);
i++;
}
getch();
}
/
**********************************************************************
****/
/
**********************************************************************
****/
if(ll==0){
printf("\n\nNo existe informacion a reemplazar");
getch();
return;
}
modif_actual(act,ll);
if(*act==-1){
printf("\n\nLa linea seleccionada no existe...");
getch();
}
else{
/
**********************************************************************
***/
if(act==-1){
printf("\n\nLa linea seleccionada no existe...");
getch();
}
else{
j=*ll-1;
while(j>=act-1){
strcpy(t[j+1],t[j]);
j--;
}
printf("\n\nInserta la nueva linea: ");
fflush(stdin);
gets(t[act-1]);
(*ll)++;
}
}
Volver
#include stdio.h
#include conio.h
#include ctype.h
#include string.h
#include stdlib.h
struct DIREC{
char nombre[35];
char tele[20];
} ;
void main(){
char opcion;
FILE *archivo;
archivo=fopen("TELE.DAT","rb+"); /* usar opciwb+" para crear el
archivo .DAT y despu 鳠 cambiar a "rb+" */
while(1){
clrscr();
textattr(6+5*5);
clrscr();
textcolor(YELLOW);
cprintf(" DIRECTORIO TELEFONICO");
printf("\n\n");
cprintf(" N");
printf("uevo");
textcolor(YELLOW);
cprintf(" L");
printf("ista");
textcolor(YELLOW);
cprintf(" B");
printf("aja");
textcolor(YELLOW);
cprintf(" C");
printf("onsulta");
textcolor(YELLOW);
cprintf(" O");
printf("rdena");
textcolor(YELLOW);
cprintf(" S");
printf("alir");
gotoxy(1,25);
printf(" *** PRESIONE LA LETRA RESALTADA PARA ESCOGER LA
OPCION ***");
gotoxy(1,4);
opcion=toupper(getch());
if(opcion=='S')
break;
switch(opcion){
case 'N':{
lee(archivo);
break;
}
case 'L':{
imprime(archivo);
break;
}
case 'B':{
pack(archivo);
break;
}
case 'C':{
consulta2(archivo);
break;
}
case 'O':{
ordena(archivo);
break;
}
}
}
clrscr();
fclose(archivo);
normvideo();
clrscr();
}
/
*********************************************************************/
if((c%2)!=0){
textattr(6+5*5);
/* textcolor(LIGHTGRAY);*/
printf("\n");
cprintf("%d.- %-30s %16s",c,reactivo.nombre,reactivo.tele);
normvideo();
}
else{
textattr(6+5*4);
/* textcolor(WHITE);*/
printf("\n");
cprintf("%d.- %-30s
%16s",c,reactivo.nombre,reactivo.tele);
normvideo();
}
if(y==23){
getch();
y=0;
}
y++;
c++;
}
getch();
}
/
*********************************************************************/
fflush(stdin);
printf("Nombre : ");strupr(gets(reactivo.nombre));
if(strlen(reactivo.nombre)<30){
if(busca_Clave2(a,reactivo.nombre)==0){
printf("Tel?fono : ");gets(reactivo.tele);
fseek(a,0,SEEK_END);
fwrite(&reactivo,sizeof(struct DIREC),1,a);
}
else{
printf("\n\nYa existen esos datos!!!");
getch();
}
}
else{
printf("\n\nM?ximo 25 letras por nombre...");
printf("\n\n???El programa puede da?arse si repite
este error!!!");
getch();
}
}
/
*********************************************************************/
p=busca_Clave2(a,nombre);
if(p!=0){
fseek(a,(p-1)*sizeof(struct DIREC),SEEK_SET);
fread(&r,sizeof(struct DIREC),1,a);
printf("\n\n\n");
textcolor(LIGHTGRAY);
cprintf("NOMBRE
TELEFONO");
normvideo();
printf("\n%-20s %30s",r.nombre,r.tele);
getch();
}
else{
printf("\n\nLa informaci?n solicitada no existe ...");
getch();
}
}
/
*********************************************************************/
s=0;
i=0;
while(1){
if(s>=j)
break;
r=temp[s];
fseek(a,i*sizeof(struct DIREC),SEEK_SET);
fwrite(&r,sizeof(struct DIREC),1,a);
s++;
i++;
}
printf("\n\nSus archivos han sido ordenados
alfab?ticamente...");
getch();
/
*********************************************************************/
if(p!=0){
while(1){
fseek(a,i*sizeof(struct DIREC),SEEK_SET);
if(fread(&r,sizeof(struct DIREC),1,a)==0)
break;
if(strcmp(r.nombre,clave)!=0){
fseek(a,i*sizeof(struct DIREC),SEEK_SET);
fwrite(&r,sizeof(struct DIREC),1,t);
}
i++;
}
fclose(t);
fclose(a);
remove("TELE.DAT");
rename("TMP.DAT","TELE.DAT");
t=fopen("TELE.DAT","rb+");
printf("\n\nLa informaci?n solicitada ha sido dada de baja...");
getch();
return(t);
}
else{
printf("\n\nNo existe el nombre...");
getch();
}
return 0;
}
/
*********************************************************************/
Volver
Programas en c
Empezando a programar
#include <stdio.h>
void main ()
{
int base,altura,area,perimetre;
area=(base*altura)/2;
perimetre=(2*base)+(2*altura);
/*
Aunque no es hasta el tema 6 que se ven conceptos relacionados con los
tipos de datos elementales cabe notar que este programa tiene una
pequeña carencia. Por ser area de tipo int la linea
'area=(base*altura)/2; 'nos da el cociente de la divisi¢n sin
decimales. Por lo que no es del todo exacto.*/
void main ()
{
int base,altura,perimetre;
float area;
}
Pedir una cantidad de segundos y mostrar por pantalla a cuántas horas,
minutos y segundos corresponden.
#include<stdio.h>
void main()
{
int seg,h,m,s;
printf( "Entra el numero de segundos: " );
scanf("%d",&seg);
h=seg/3600;
m=(seg%3600)/60;
s=(seg%3600)%60;
printf( "\n%dhora(s) %d minuto(s) %d segundo(s)\n", h, m, s );
}
(a) y = -2 + --x;
(b) y += 2;
(c) y = (y == x);
(d) y = y++ - x;
#include <stdio.h>
void main()
{
int x=7,y;
/*Inicio*/
/*x= 7*/
y=-2 + --x;
/*x= 6*/
printf("\n(a) x=%d y=%d \n",x,y); /* y=4 */
y+=2;
/*x= 6*/
printf("\n(b) x=%d y=%d \n",x,y); /* y=6 */
y=(y==x);
/*x= 6*/
printf("\n(c) x=%d y=%d \n",x,y); /* y=1 */
y=y++ -x;
/*x= 6*/
printf("\n(d) x=%d y=%d \n",x,y); /* y=-4 */
}
Evaluar las siguientes expresiones:
(a) 5 / 2 + 20 % 6
(b) 4 * 6 / 2 - 15 / 2
(c) 5 * 15 / 2 / (4 - 2)
(d) 8 == 16 || 7 != 4 && 4 < 1
(e) (4 * 3 < 6 || 3 > 5 - 2) && 3 + 2 < 12
void main()
{
int a,b,c,d,e;
a=5/2+20%6;
b=4*6/2-15/2;
c=5*15/2/(4-2);
d=8==16||7!=4&&4<1;
e=(4*3<6||3>5-2)&&3+2<12;
Constantes condicionales
#include <stdio.h>
void main()
{
int a,b,c,max,min;
#include <stdio.h>
void main()
{
int a,b,c,max,min;
(a) a = 0, b = 0, c = 5, d = 3
(b) a = 2, b = 1, c = 5, d = 3
(c) a = 2, b = 1, c = 2, d = 2
(d) a = 2, b = 1, c = 0, d = 0
#include<stdio.h>
void main()
{
int a,b,c,d;
#include<stdio.h>
void main()
{
int a,b,c,d;
/* a) Inicialmente a=0,b=0,c=5,d=3
Al final los valores son:a=0,b=11,c=8,d=3
b) Inicialmente a=2,b=1,c=5,d=3
Al final los valores son:a=5,b=0,c=5,d=3
c) Inicialmente a=2,b=1,c=2,d=2
Al final los valores son:a=2,b=6,c=2,d=2
d) Inicialmente a=2,b=1,c=0,d=0
Al final los valores son: a=2,b=3,c=1,d=0;
*/
void main ()
{
int a;
if (a%10==0)
printf( "\nEl numero %d es multiplo de 2 y 5\n", a );
else if(a%2==0)
printf( "\nEl numero %d es multiplo de 2 pero no de 5\n", a );
else if(a%5==0)
printf( "\nEl numero %d es multiplo de 5 pero no de 2\n", a );
else
printf( "\nEl numero %d no es multiplo ni de 2 ni de 5\n", a );
}
A=y_2-y_1 y B=y_1*(x_2-x_1)-x_1*(y_2-y_1)
#include<stdio.h>
void main()
{
int x1,x2,y1,y2,A,B,C;
A=y2-y1;
B=y1*(x2-x1)-x1*(y2-y1);
C=-A*x1-B*y1;
printf( "La ecuacion de la recta es:(%d)*x+(%d)*y+(%d)=0", A, B,
C );
}
Constantes iterativas
#include <stdio.h>
void main()
{
int cont,num,suma;
cont=0;
suma=0;
num=35;
while(cont!=20)
{
if(num%35==0)
{
suma+=num; /*suma=suma+num;*/
cont++;
}
num++;
}
printf( "\nLa suma es %d\n", suma );
}
#define const1 5
#define const2 7
#include <stdio.h>
void main()
{
int i, suma=0,num=1;
for(i=0;i<20;)
{
if( (num%const1==0) || !(num%const2) )
{
i++; /*recuerdese que una condicion es cierta*/
suma+=num; /*si su valor es no cero y falsa si es cero*/
}
num++;
}
printf( "La suma es %d\n", suma );
}
#define const1 5
#define const2 7
#include <stdio.h>
void main ()
{
int num=1,suma=0,i=0;
do
{
if( (num%const1==0) || (num%const2==0) )
{
i++;
suma+=num;
}
num++;
} while(i<20);
#include<stdio.h>
void main()
{
int v,exp,i,pot=1;
printf("Introducir el valor y el exponente:\n");
scanf("%d%d",&v,&exp);
for(i=0;i<exp;i++)
pot=pot*v;
printf( "El resultado es:%d\n", pot );
}
#define FALSE 0
#define TRUE !FALSE
#include <stdio.h>
#include <math.h>
void main()
{
int base, exp, limit, cont=0,boolea=FALSE;
double pot=1;
while(cont<limit)
{
pot*=base;
cont++;
}
if(boolea)
pot=1.0/pot;
/*Estructura while*/
#include <stdio.h>
void main()
{
int max,min,num,inum;
while(inum!=-1)
{
printf( "\nIntroduzca el siguiente numero (-1 para acabar):" );
scanf( "%d", &inum );
if(inum!=-1)
{
max=(inum>=max)?inum:max;
min=(inum<=min)?inum:min;
}
}
printf( "El maximo es: %d\n", max );
printf( "El minimo es: %d\n", min );
}
#include <stdio.h>
void main()
{
int num,max, min;
max=min=num;
for( ;num!=-1; )
{
printf( "Introduzca el siguiente:\n" );
scanf( "%d", &num );
if(num>max)
max=num;
else if(num<min)
min=num;
}
#include<stdio.h>
void main()
{
int i,num;
#include <stdio.h>
void main()
{
int num,a,b,c,cont;
do
{
c=a+b;
printf( "\tElemento[%d]:%d\n", cont, c );
a=b;
b=c;
cont++;
} while((a+b)<num);
}
#include<stdio.h>
void main()
{
int i,num,base,res[100];
#include<stdio.h>
void main()
{
int num, base, cifra, tmp=1;
/*Control de errores*/
if ( base>10 || base<2 )
{
printf( "Base erronea\n" );
exit(-1); /*provoca la interrupcion del programa*/
}
while(tmp>=1)
{
cifra=num/tmp;
printf( "%d", cifra );
num%=tmp;
tmp/=base;
}
printf( "\n" );
}
#include <stdio.h>
void main()
{
int num,cont,aux;
#include <stdio.h>
int es_primo(int x)
/*Funcion que retorna 1 si es primo y 0 si no lo es*/
{
int divisor=2;
else
divisor++;
}
return(1);
}
void main()
{
int a;
/*Pide el numero*/
printf("\nIntroduzca un numero:\n");
scanf("%d%*c",&a);
else if(a==1)
printf("\n1 no es primo\n");
else
if (es_primo(a))
printf("\n%d es primo.\n", a);
else
printf("\n%d no es primo.\n", a);
}
#include<stdio.h>
void main()
{
int num,i;
double res=1;
#include <stdio.h>
void main()
{
int x,p,q;
long int suma;
#include<stdio.h>
void main()
{
int F0=1,F1=1,i,suma=0;
INVERTIR DÍGITOS
#include <stdio.h>
void main()
{
int n;
/*Pide el numero*/
printf("\nIntroduzca un numero:\n");
scanf("%d%*c",&n);
while(n>0)
{
printf("%d", n%10);
n/=10;
}
}
}
#include <stdio.h>
if (num==0)/*Caso especial*/
return(0);
else
{
while(num>0)
{
inv=(inv*10) + (num%10);
num/=10;
}
return(inv);
}
}
void main()
{
int n;
/*Pide el numero*/
printf("\nIntroduzca un numero:\n");
scanf("%d%*c",&n);
else
printf("\nNumero invertido: %d\n",invierte_digitos(n));
}
FACTORIZACIÓN
#include <stdio.h>
void main()
{
int a, i=2;
/*Pide el numero*/
printf("\nIntroduzca un numero:\n");
scanf("%d%*c",&a);
else
{
while(a!=1)
{
if ((a%i)==0)
/*Si i es divisor de a, lo muestra por
pantalla*/
{
printf("%d ", i);
a/=i;
i=2;
}
else
i++;
}
}
}
Td elementales
#include <stdio.h>
void main()
{
char lletra,c;
int cont;
while(c!='.')
{
scanf( "%c", &c );
if(c==lletra)
cont++;
}
printf( "\n Ha aparecido %d veces \n", cont );
}
/*Identificacion de caracteres*/
#include<stdio.h>
void main()
{
char c;
#include <stdio.h>
void main()
{
char c;
long int numero;
/*control de errores*/
if( (int) c < (int) '0' || (int) c > (int) '9' || c=='\n' )
{
if(c=='\n')
printf( "\nNingun numero introducido\n" );
else
{
printf( "\nCaracter no valido\n" );
exit(-1); /*abortar programa*/
}
}
numero=((int) c) - ((int) '0');
scanf( "%c", &c );
/*c=(char)getchar();*/
while(c!='\n')
{
if( (int) c < (int) '0' || (int) c > (int) '9')
{
printf( "\nCaracter no valido\n" );
exit(-1);
}
numero*=10;
numero+=((int) c) - ((int) '0');
scanf( "%c", &c );
/*c=(char) getchar();*/
}
#include <stdio.h>
void main()
{
char c;
long int numero;
while(c!='\n')
{
if( (int) c < (int) '0' || (int) c > (int) '9')
{
printf( "\nCaracter no valido\n" );
exit(-1);
}
numero*=10;
numero+=((int) c) - ((int) '0');
scanf( "%c", &c );
/*c=(char) getchar();*/
}
(a) i = i % 5;
(b) f = (f - g) / 2;
(c) j = j * (i - 3);
(d) f = f % g;
(e) i = i / (j - 2);
#include <stdio.h>
void main ()
{
int i=5,j=7;
float f=5.5,g=-3.25;
/*apartado a*/
i=i%5;
printf( "\nEl resultado del apartado (a) es:\n\t%d\n", i );
/*apartado b*/
f=(f-g)/2;
printf( "El resultado del apartado (b) es:\n\t%e\n", f );
/*apartado c*/
i=5;
j=j+(i-3);
printf( "El resultado del apartado (c) es:\n\t%d\n", j );
/*apartado d*/
f=5.5;
/*f=f%g;*/ /*El operador % solo tiene sentido con variables int*/
/*Al intentar ejecutar esta linea el compilador dara
error*/
printf( "El resultado del apartado (d) es:\n\tERROR\n" );
/*apartado e*/
j=7;
i=i/(j-2);
printf( "El resultado del apartado (e) es:\n\t%d\n", i );
}
Ax^2 + Bx + C = 0.
#include <stdio.h>
#include <math.h>
void main()
{
double x,y,A,B,C,N;
C=4*A*C;
N=B*B-C;
A=2*A;
if(N<0)
printf( "Las raices son complejas\n" );
else
{
x=(-B+sqrt(N))/(A);
y=(-B-sqrt(N))/(A);
printf( "Las raices son:\n %lf \n %lf\n", x, y );
}
}
#include <stdio.h>
#include <math.h>
void main()
{
float a,b,c,discr;
double x,y;
discr=b*b-4*a*c;
if(discr>=0)
{
x=(-b+sqrt(discr))/(2*a);
printf( "\nLa primera solucion es %e\n", x );
x=(-b-sqrt(discr))/(2*a);
printf( "\nLa segunda solucion es %e\n", x );
exit(-1);
}
else
{
x=-b/(2*a); y=sqrt(discr)/(2*a);
printf( "\nLa primera solucion es %e+(%e)*i\n", x, y );
y=-y;
printf( "\nLa segunda solucion es %e+(%e)*i\n", x, y );
}
}
#include<stdio.h>
#define PI 3.1415926534
void main()
{
float r,p;
#include <stdio.h>
#define LIMITE 5000
void main()
{
int i,fin;
double suma,eps,fact;
fin=0;
suma=1; /* 1/0! */
fact=1.0;
i=1;
printf( "Introduzca la epsilon:" );
scanf( "%lf", &eps );
/*sumatorio(1,limite,1/i!)*/
while(fin!=1)
{
fact=fact*i;
suma+=(1.0/fact);
i++;
fin=(((1.0/fact)<eps) || (i>=LIMITE));
}
printf( "La aproximacion de e es %.25lf\n", suma );
}
void main()
{
int dividendo, divisor, numdec;
/*Pide el dividendo*/
printf("\nIntroduzca el dividendo:\n");
scanf("%d%*c",÷ndo);
/*Pide el divisor*/
printf("\nIntroduzca el divisor:\n");
scanf("%d%*c",&divisor);
else
division(dividendo, divisor, numdec);
Td estructurados
void main()
{
int vector[10];
int x=1;
for(x=1;x<=10;x++)
vector[x]=23;
}
/*Donde esta el error*/
void main()
{
int vector[10];
int x=1;
for(x=1;x<=10;x++)
vector[x]=23;
}
/*
El error esta en la condicion del for (x<=10) ya que si el vector que
hemos inicializado tenia 10 posiciones(de la 0 a la 9) el 10 seria la
posicion 11 y no entra dentro del rango de nuestro vector.*/
#include <stdio.h>
#define N 10
void main()
{
int i, vector[N], tmp;
void main()
{
int i=0,contllet=0,contpar=0;
char frase[MAX];
printf( "Introduce la frase terminada en punto(.):\n" );
scanf( "%c", &frase[i] );
while( frase[i]!='.' )
{
i++;
scanf( "%c",&frase[i] );
/*Control de errores*/
if ( i==99 && frase[i]!='.')
{
printf( "\nFrase demasiado larga. Error.\n" );
exit(-1);
}
}
i=0;
while(frase[i]!='.')
{
if(frase[i]!=' ')
{
contllet++;
i++;
if(contllet>4&&(frase[i]==' '||frase[i]=='.'))
{
contpar++;
contllet=0;
}
}
else
{
contllet=0;
i++;
}
}
printf( "La frase contiene %d palabras de mas de 4 caracteres.\n",
contpar );
}
Escribir un programa que lea del teclado dos números enteros de hasta
20 dígitos y los sume. Usar vectores para almacenar los dígitos de
cada número.
#include <stdio.h>
#define N 20
void main()
{
int v1[N],v2[N],S[N+1];
int i=0,len1=0,len2=0,lens,max,min,carry=0;
i=0;
printf( "\nIntroduzca los digitos del primer vector.\nPara
finalizar pulse '10'.\n" );
do
{
scanf( "%d%*c", &v1[N-1-i] );
/*Control de errores*/
if (v1[N-1-i]>10 || v1[N-1-i]<0)
{
printf( "\nError. %d no es un digito\n", v1[N-1-i] );
exit(-1);
}
i++; len1++; /*Al incrementar la i la condicion
es*/
}while( i<=N-1 && v1[N-i]!=10); /*respecto a v1[N-i]*/
if(i!=N)
len1--;
/*si no se ha llenado el vector el ultimo incremento de len1 se
debe al numero 10 que marca el final y hemos de compensar ese
incremento*/
i=0;
printf( "\nIntroduzca los digitos del segundo vector.\nPara
finalizar pulse '10'.\n" );
do
{
scanf( "%d%*c", &v2[N-1-i] );
/*Control de errores*/
if (v2[N-1-i]>10 || v2[N-1-i]<0)
{
printf( "\nError. %d no es un digito\n", v2[N-1-i] );
exit(-1);
}
i++; len2++;
}while( i<=N-1 && v2[N-i]!=10 );
if(i!=N)
len2--;
if(S[i]>9)
{
S[i]-=10;
carry=1;
}
}
if (max==min) /*len1=len2*/
{
if (carry)
{
S[max]=1;
lens=len1+1;
}
else
lens=len1;
}
else
{
for(i=min;i<max;i++)
{
if(max==len1)
S[i]=v1[N-len1+i]+carry;
else
S[i]=v2[N-len2+i]+carry;
carry=0;
if(S[i]>9)
{
carry=1;
S[i]-=10;
}
}
if(carry)
{
S[max]=1;
lens=max+1;
}
else
lens=max;
}
#include<stdio.h>
#define MAXLONG 30
void main()
{
int i,j;
char palabra[MAXLONG];
printf( "Introduce la palabra(acabada en'.'):" );
j=-1;
do
{
j++;
scanf( "%c", &palabra[j] );
} while (palabra[j]!='.');
i=0;
j--;
while((palabra[i]==palabra[j])&&(i<j))
{
i++;
j--;
}
if(i>=j)
printf( "\nLa palabra es palindroma\n" );
else
printf("\nLa palabra no es palindroma\n");
}
#include <stdio.h>
#define N 20
void main()
{
int v1[N],v2[N],S[N],max;
int i,j,N1,moda;
#include <stdio.h>
void main()
{
char c;
int i=0,j;
short int vin[MAXDIM];
int moda=MAXINT, veces=0, modatmp, vecestmp;
/*Lectura de la secuencia*/
printf("\nIntroduzca el siguiente:\n");
}
} while( i<MAXDIM-1 && c!='s' && c!='S' );
void main()
{
int matriz[10][3];
int x,y;
for(x=0;x<3;x++)
for(y=0;y<10;y++)
matriz[x][y]=0;
}
void main()
{
int matriz[10][3];
int x,y;
for(x=0;x<3;x++)
for(y=0;y<10;y++)
matriz[x][y]=0;
}
#include <stdio.h>
#define MAX 20
void main()
{
int matriz[MAX][MAX];
int i,j,nfil,ncol;
/*Control de errores*/
if( nfil>MAX-1 || ncol>MAX-1 || nfil<0 || ncol<0 )
{
printf("\nDimension erronea\n");
exit(-1);
}
#include<stdio.h>
#define DIM 20
void main()
{
/*No declarar una tercera matriz es una forma de ahorrar memoria*/
int a[DIM][DIM],b[DIM][DIM];
int i,j,nfil,ncol;
for(i=0;i<nfil;i++)
for(j=0;j<ncol;j++)
{
printf( "Introducir el elemento(%d,%d):\n", i+1, j+1 );
scanf( "%d", &a[i][j] );
}
printf( "La matriz b es:\n" );
for(i=0;i<nfil;i++)
for(j=0;j<ncol;j++)
{
printf( "Introducir el elemento(%d,%d):\n", i+1, j+1 );
scanf( "%d", &b[i][j] );
}
for(i=0;i<nfil;i++)
for(j=0;j<ncol;j++)
a[i][j]=a[i][j]+b[i][j];
#include <stdio.h>
#define MAXDIM 10
void main()
{
int nfil,ncol,i,j;
int mat[MAXDIM][MAXDIM],mins[MAXDIM],maxs[MAXDIM];
#include<stdio.h>
#define FALSE 0
#define TRUE !FALSE
#define DIM 15
void main()
{
int mat[DIM][DIM];
int i,j,nfil,ncol,boolea=TRUE;
printf( "\nIntroduce el numero de filas(<15):\n" );
scanf( "%d", &nfil );
printf( "\nIntroduce el numero de columnas(<15):\n" );
scanf( "%d", &ncol );
printf( "\n\n" );
for(i=0;i<nfil;i++)
{
printf( "[" );
for(j=0;j<ncol;j++)
printf( "%5d", mat[i][j] );
printf( " ]\n" );
}
if(nfil!=ncol)
{
printf( "\nMatriz no simetrica, no es cuadrada.\n" );
exit(-1);
}
for(i=0;i<nfil;i++)
for(j=0;j<ncol;j++)
{
if( mat[i][j] != mat[j][i])
boolea=FALSE;
}
if(boolea)
printf( "\nLa Matriz es simetrica\n" );
else
printf( "\nLa Matriz no es simetrica\n" );
}
Escribir un programa que multiplique dos matrices.
#include <stdio.h>
#define N 10
typedef int matriu [N][N];
}
}
if(colA==filB)
{
multiplicar_matrius(A, B, C, filA, colA, colB);
escriure_resultat(C, filA, colB);
}
else printf("\nERROR EN LAS DIMENSIONES DE LAS MATRICES\n");
}
#define MAXDIM 15
#include <stdio.h>
void main ()
{
int i,j,k,nfa,nca,nfb,ncb,nfc,ncc;
int a[MAXDIM][MAXDIM],b[MAXDIM][MAXDIM],c[MAXDIM][MAXDIM];
/*Lectura de matrices*/
printf( "\nIntroduzca la matriz A:\n" );
printf( "Numero de filas:\n" );
scanf( "%d", &nfa );
printf( "\nNumero de columnas:\n" );
scanf( "%d", &nca );
for(i=0;i<nfa;i++)
for(j=0;j<nca;j++)
{
printf( "\nElemento A[%d][%d]:", i, j );
scanf( "%d", &a[i][j] );
}
for(i=0;i<nfb;i++)
for(j=0;j<ncb;j++)
{
printf( "\nElemento B[%d][%d]:", i, j );
scanf( "%d", &b[i][j] );
}
/*Algoritmo de multiplicacion*/
nfc=nfa;
ncc=ncb;
for(i=0;i<nfc;i++)
for(j=0;j<ncc;j++)
{
c[i][j]=0;
for(k=0;k<nca;k++)
c[i][j]+=a[i][k]*b[k][j];
}
Escribir un programa que lea una frase del teclado y cuente los
espacios en blanco.
#include<stdio.h>
void main()
{
int i=0,cont=0;
char frase[MAX];
printf( "Escribir la frase acabada en punto(.):\n" );
scanf( "%c", &frase[i] );
while(frase[i]!='.')
{
i++;
scanf( "%c", &frase[i] );
}
i=0;
while(i<MAX && frase[i]!='.')
{
if(frase[i]==' ')
cont++;
i++;
}
printf( "La frase contiene %d blancos", cont );
}
#include <stdio.h>
#include <string.h>
void main()
{
char C1[10],C2[10];
int i,j,k,c;
#include <stdio.h>
#include <string.h>
void main()
{
char chain[MAX],chaininv[MAX];
int i=0,num,len;
if(chain[i]!='.'&& i==MAX-1)
{
printf( "\nCadena demasiado larga.\n" );
exit(-1);
}
chain[i+1]='\0';
/* Inversion de la cadena */
for(i=0;i<num;i++)
chaininv[num-1-i]=chain[i];
chaininv[num]='\0';
#include <stdio.h>
#define MAX 20
void main()
{
char C1[MAX],C2[MAX];
int i;
i=0;
while ((C1[i]==C2[i]) && (C1[i]!='\0') && (C2[i]!='\0'))
i++;
if((C1[i]=='\0') && (C2[i]=='\0'))
printf( "Son iguales\n" );
else
printf( "Son diferentes" );
}
CRIBA DE ERATÓSTENES
Diseñar un programa que escriba los números primos que hay hasta un
número
natural pedido n. Utilizar la criba de Eratóstenes.
void main()
{
int i, n, vector[MAXNUM];
ELEMENTO PERDIDO
void main()
{
int i, n, vector[MAXNUM], suma=0;
GENERAR MATRICES
1 2 3 4 5 6 7 8 9
32 33 34 35 36 37 38 39 10
31 56 57 58 59 60 61 40 11
30 55 72 73 74 75 62 41 12
29 54 71 80 81 76 63 42 13
28 53 70 79 78 77 64 43 14
27 52 69 68 67 66 65 44 15
26 51 50 49 48 47 46 45 16
25 24 23 22 21 20 19 18 17
1 2 3 4 5 6 7 8 9
2 2 3 4 5 6 7 8 9
3 3 3 4 5 6 7 8 9
4 4 4 4 5 6 7 8 9
5 5 5 5 5 6 7 8 9
6 6 6 6 6 6 7 8 9
7 7 7 7 7 7 7 8 9
8 8 8 8 8 8 8 8 9
9 9 9 9 9 9 9 9 9
1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9 8
3 4 5 6 7 8 9 8 7
4 5 6 7 8 9 8 7 6
5 6 7 8 9 8 7 6 5
6 7 8 9 8 7 6 5 4
7 8 9 8 7 6 5 4 3
8 9 8 7 6 5 4 3 2
9 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 9
2 1 2 3 4 5 6 7 8
3 2 1 2 3 4 5 6 7
4 3 2 1 2 3 4 5 6
5 4 3 2 1 2 3 4 5
6 5 4 3 2 1 2 3 4
7 6 5 4 3 2 1 2 3
8 7 6 5 4 3 2 1 2
9 8 7 6 5 4 3 2 1
while(n>1)
{
/*Se genera una vuelta de la espiral*/
num=genera_cuadrado(m,cont,n,num);
cont++;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
/*La casilla esta en la diagonal o en el lado
vertical*/
if(i>=j)
m[i][j]=i+1;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
/*La casilla esta encima o en la antidiagonal*/
if((i+j)<n)
m[i][j]=i+j+1;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%d\t", m[i][j]);
printf("\n\n");
}
}
void main()
{
char opcion='\0';
int n, matriz[MAXFIL][MAXCOL];
do{
/*Pide la dimension*/
printf("\nIntroduzca la dimension de la matriz:\n");
scanf("%d%*c",&n);
else if(n>MAXCOL)
printf("\nDimension demasiado grande\n");
else
{
/*Muestra menu y pide la opcion*/
printf("\nElija opcion generadora:\n");
printf("\n1. Espiral");
printf("\n2. Angulo recto");
printf("\n3. Diagonal");
printf("\n4. Antidiagonal");
printf("\n5. Finalizar programa\n\n");
scanf("%c%*c",&opcion);
switch (opcion)
{
case '1':/*Espiral*/
printf("\nEspiral\n");
espiral(matriz,n);
lista_matriz(matriz, n);
break;
case '2':/*Angulo_recto*/
printf("\nAngulo recto\n");
angulo_recto(matriz, n);
lista_matriz(matriz, n);
break;
case '3':/*Diagonal*/
printf("\nDiagonal\n");
diag(matriz, n);
lista_matriz(matriz, n);
break;
case '4':/*Antidiagonal*/
printf("\nAntidiagonal\n");
adiag(matriz, n);
lista_matriz(matriz, n);
break;
case '5':
printf("\nFin del programa\n");
break;
default:
printf("\nOpcion incorrecta\n");
}
}
}while(opcion!='5');
}
INTERCAMBIO DE SEGMENTOS
Vector: 0 1 2 3 4 5 6 7 8 9 10
Márgenes del segmento: 3 7
Resultado: 0 1 2 7 6 5 4 3 8 9 10
Y el del programa:
Vector: 0 1 2 3 4 5 6 7 8 9 10
Márgenes del primer segmento: 2 4
Márgenes del segundo segmento: 6 9
Resultado: 0 1 6 7 8 9 5 2 3 4 10
while(a<b)
{
/*Se intercambian desde fuera hacia adentro*/
aux=v[a];
v[a]=v[b];
v[b]=aux;
a++;
b--;
}
}
void main()
{
int i, i1, i2, j1, j2, n, vector[MAXNUM];
/*control de errores*/
if( i1<0 || i2>n-1 )
{
printf( "El segmento 1 excede las dimensiones del
vector\n" );
exit(-1);
}
/*control de errores*/
MATRIZ DE CAMINOS
Diseñar un programa que cree una matriz m*n, de tal manera que en cada
casilla se halle el número de caminos posibles que hay para llegar
desde
la casilla (1,1), hasta la casilla (j,k), donde j y k son mayores que
0.
for(i=0;i<dim1;i++)
{
for(j=0;j<dim2;j++)
printf("%d\t", m[i][j]);
printf("\n\n");
}
}
void main()
{
int m, n, i, j, matriz[MAXFIL][MAXCOL];
else if((m>MAXFIL)||(n>MAXCOL))
printf("\nDimensiones demasiado grandes\n");
else
{
/*Inicializa la matriz(fila 0 y col 0 solo tienen
unos)*/
for(i=0;i<m;i++)
matriz[i][0]=1;
for(j=1;j<n;j++)
matriz[0][j]=1;
MEZCLA
void main()
{
int i, j=0, k=0, m, n, v1[MAXNUM], v2[MAXNUM], v3[MAXNUM];
i=0;
while((i<m)&&(j<n))
{
/*Si se hallan en ambos varias veces, se introducen
varias veces*/
if(v1[i]==v2[j])
{
v3[k]=v1[i];
i++;
j++;
k++;
}
else
{
v3[k]=v1[i];
k++;
i++;
}
}
while(j<n)
{
v3[k]=v2[j];
k++;
j++;
}
void main()
{
int i, lon, contpos=0, contneg=0, vector[MAXNUM];
else
{
printf( "Introduzca los elementos del vector\n" );
/*Lee el vector*/
for(i=0;i<lon;i++)
scanf("%d%*c",&vector[i]);
else if(vector[i]>0)
contpos++;
}
Escribir un programa que, dadas dos fechas, indique cuál de las dos
es anterior a la otra. Para ello, el programa deberá definir una
estructura para el tipo de datos fecha (día, mes y año).
#include<stdio.h>
typedef struct
{
int dia;
int mes;
int a;
} Tfecha;
void main()
{
Tfecha f1,f2,f;
if(f1.a>f2.a)
f=f2;
else
f=f1;
if(f1.a==f2.a)
{
if(f1.mes>f2.mes)
f=f2;
else
f=f1;
if(f1.mes==f2.mes)
{
if(f1.dia>f2.dia)
f=f2;
else
f=f1;
}
}
printf( "La fecha mas antigua es: %d-%d-%d", f.dia, f.mes, f.a );
}
#include <stdio.h>
#define N 10
typedef struct
{
int coeficiente[N];
int grado[N]; /*Notese que no es necesaria la declaracion*/
/*de un vector. Es suficiente un unico
entero*/
} Tpolinomio;
void main()
{
Tpolinomio x,y,z;
int i,j,k,p,q,r;
if(p>q)
k=p;
else
k=q;
r=k;
i=q;
j=p;
while(z.grado[r]>=0)
{
if(x.grado[i]==y.grado[j])
{
z.coeficiente[r]=x.coeficiente[i]+x.coeficiente[j];
i--;
j--;
}
else if(x.grado[i]>y.grado[j])
{
z.coeficiente[r]=x.coeficiente[i];
i--;
}
else if(y.grado[j]>x.grado[i])
{
z.coeficiente[r]=y.coeficiente[j];
j--;
}
r--;
}
/*Realizado R.Vila*/
/*Suma de polinomios utilizando structs.*/
/*El orden logico de un programa es fundamental. La comprension puede
resultar una tarea dificil si no se tiene presente. A¤adir comentarios
en el codigo que expliquen la funcion de cada fragmento del programa
facilita
la lectura del mismo por parte de terceras personas, ya sean otros
programadores que realicen el mantenimiento del programa, ya sea el
corrector
de nuestro examen de I.O.
Tengase tambien presente que no se debe reservar mas memoria de la
estrictamente necesaria por lo que no es recomendable declarar un
numero
excesivo de variables.*/
typedef struct
{
int coef[N];
int grado;
} poly;
void main()
{
poly p1,p2,ps;
int i,min;
/*Lectura de datos*/
if(p1.grado>N-1 || p1.grado<0)
{
printf( "\nGrado del polinomio erroneo.\n");
exit(-1);
}
for(i=0;i<p1.grado+1;i++)
{
printf( "\nCoeficiente de x^%d:\t", i );
scanf( "%d", &p1.coef[i] );
}
if(p2.grado>N-1 || p2.grado<0)
{
printf( "\nGrado del polinomio erroneo.\n");
exit(-1);
}
for(i=0;i<p2.grado+1;i++)
{
printf( "\nCoeficiente de x^%d:\t", i );
scanf( "%d", &p2.coef[i] );
}
/*Suma de polinomios*/
if(min==p1.grado)
ps.grado=p2.grado;
else
ps.grado=p1.grado;
for(i=0;i<min+1;i++)
ps.coef[i]=p1.coef[i]+p2.coef[i]; /*sumo los coef de los dos
poly*/
for(i=min+1;i<ps.grado+1;i++) /*completo, si es necesario,
el*/
{ /*poly suma con los
coeficientes*/
if(min==p1.grado) /*del poly de grado mayor*/
ps.coef[i]=p2.coef[i];
else
ps.coef[i]=p1.coef[i];
}
Escribir un programa que, dadas dos fechas, indique cuál de las dos
es anterior a la otra. Para ello, el programa deberá definir una
estructura para el tipo de datos fecha (día, mes y año).
#include<stdio.h>
typedef struct
{
int dia;
int mes;
int a;
} Tfecha;
void main()
{
Tfecha f1,f2,f;
if(f1.a>f2.a)
f=f2;
else
f=f1;
if(f1.a==f2.a)
{
if(f1.mes>f2.mes)
f=f2;
else
f=f1;
if(f1.mes==f2.mes)
{
if(f1.dia>f2.dia)
f=f2;
else
f=f1;
}
}
printf( "La fecha mas antigua es: %d-%d-%d", f.dia, f.mes, f.a );
}
typedef struct
{
Tstring pais;
int temp\_max;
int temp\_min;
} Ttemp;
#include <stdio.h>
#include <string.h>
#define N 10
typedef struct
{
Tstring pais;
int temp_max, temp_min;
} Ttemppais;
void main()
{
Ttemp x;
int i,k;
float minmedia,min;
typedef struct
{
long int num;
char letra;
} Tnif;
typedef struct
{
Tnif nif;
Tstring nombre;
Tstring direc;
long int telf;
} Tempresa;
#include<stdio.h>
#define N 20
#define DIM 50
#define FALSE 0
#define TRUE !FALSE
typedef struct
{
long int num;
char letra;
} Tnif;
typedef struct
{
Tnif nif;
Tstring nombre,direc;
long int telf;
} Tempresa;
void main()
{
int i,j,contemp=0,pos,boolea=FALSE;
char c;
long int nif;
Tempresa bus[N];
/*Lectura de datos*/
i=0;
do
{
printf( "\nDesea introducir los datos de una nueva empresa?
(s/n): " );
scanf( "%c%*c", &c );
if(c=='s'||c=='S')
{
printf( "\nNombre: " );
scanf( "%s%*c", bus[i].nombre );
printf( "\nTelefono:
scanf( "%ld%*c", &bus[i].telf "\nNIF (numero):",
&bus[i].nif.num (letra): "%c%*c", &bus[i].nif.letra
contemp++; i++;
}
else
c='n' /*Precaucion ante usuarios impredecibles* while( i><N
&& c!='n' );
/*Busqueda de empresas*/
do
{
printf( "\nDesea buscar una empresa: (s/n)
scanf( "%c%*c", &c
if(c=='s' || c=='S') "\nIntrduzca el NIF (numero): "%ld%*c",
&nif
for(i=0;i><contemp;i++)
{
if(nif==bus[i].nif.num)
{
pos=i;
boolea=TRUE;
}
}
/*Escritura de datos*/
if(boolea==TRUE)
{
printf( "\nLa empresa solicitada es:\n\t" );
printf( "Nombre: %s\n\t", bus[pos].nombre );
if(contemp==0)
printf( "\nNo quedan mas empresas registradas.\n" );
}
/*Observaciones:
inicializaremos las variables implicadas con valores arbitrarios.
Para conseguir que la variable v sea de 16 bits hemos definido el tipo
T escogiendo unsigned short int. Esto puede variar de un compilador a
otro y
tambien en funcion de la arquitectura interna del computadoro del
sistema
operativo. Si al ejecutar el programa no visualizas v como variable de
16
bits deberas modificar la instruccion typedef.*/
#include <stdio.h>
void apartadoa( T v)
{
T m;
int i, nbits;
/*Construcción de la máscara*/
ma = (char) 0;
ma = ~ma;
ma = ma >> 1;
c = c & ma;
return;
}
void apartadoc( T v)
{
T m;
int nbits, i;
void apartadod( T v )
{
T m;
int nbits;
int bit1, bit6;
void apartadoe( T v )
{
T m;
int i, nbits;
int bit[50];
void main()
{
const T v=0xa27d; /*v=(1010 0010 0111 1101)binario*/
char c='a'; /* c=(97)decimal= (0110 0001)binario*/
apartadoa( v );
apartadob( c );
apartadoc( v );
apartadod( v );
apartadoe( v );
}
http://studies.ac.upc.edu/ETSETB/IO/LIBROC/frsref.htm
Escribir un programa para calcular el importe de una venta en un supermercado. El
usuario debe indicar el nombre del producto, el precio por unidad y el nº de unidades y
el programa sacará por pantalla el nombre del producto, el nº de unidades vendidas y el
precio total. Preste especial atención a qué tipo de datos resulta más adecuado para cada
representar cada cantidad.
Solución: puntvent.c
/*
Nom del programa: NOMINA1.C
Descripcio:
Programa rudimentari que calcula la nomina d'un treballador
*/
#include <stdio.h>
#include <conio.h>
int main(void)
{
char cNom[30];
long nHores,nPreu;
float nSouBrut,nRetencio,nSouNet;
// Inicialitzaci?
clrscr();
// Entrada de dades
if (entrada >60)
{
hor=entrada / 60;
rest=entrada % 60;
min=rest/60;
seg=rest % 60;
}
if (entrada <60)
{
seg=entrada;
}
if (a>b)
{
printf("\nEl N?mero Mayor es : %6.2f ",a);
}
if (a<b)
{
printf("\nEl N?mero Mayor es : %6.2f ",b);
}
if (a==b)
{
printf("\n\aLos N?meros son Iguales");
}
getch();
#include <stdio.h>
main()
int num,resto;
clrscr();
printf("\nIntroduce un N?mero cualquiera : ");
scanf("%d",&num);
resto=(num % 2);
if (resto!=0)
{
printf("\El N?mero introducido es Impar");
}
else
{
printf("\nEl N?mero introducido es Par");
}
getch();
return 0;
3. Escribir un programa que pida una nota e imprima por pantalla la calificación en formato “Apto” o “No
nota es mayor o menor que 5.
4. Escribir un programa que permita jugar a doble o nada: El jugador apuesta una cantidad y tira una mone
obtiene el doble de la cantidad apostada. Si sale cruz la pierde todo.
Solución:
/*Doble o Nada*/
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{
float cantid,total;
float prob;
clrscr();
5. Escribir un programa que lea tres valores enteros y muestre por pantalla el máximo y el mínimo de ellos.
6. Escribir un programa que pida un número entero y determine si es múltiplo de 2 y de 5.
7. Escribir un programa que pida la nota de un examen (un nº real entre 0 y 10) e imprima por pantalla la ca
formato “Suspenso”, si la nota es menor que 5, “Aprobado” si está entre 5 inclusive y 7 sin incluir, “Not
7 inclusive y 9 sin incluir, “Sobresaliente” si está entre 9 inclusive y 10 sin incluir y “Matrícula de honor
igual a 10.
8. Escribir un programa que, dado el nombre o número del mes, y la información de si el año es bisiesto sa
el número de dias del mes
9. Escribir un programa que, pida la fecha de nacimiento de una persona e imprima por pantalla su signo zo
do
{
jug=jug+1;
printf("\nSi sale Cara ganas el Doble si sale Cruz lo pierdes Todo\n");
printf("\nIntroduce la cantidad a Apostar : ");
scanf("%f",&cantid);
randomize();
prob=random(100) % 100;
if (prob<=50)
{
total=cantid*2;
printf("\nEnorabuena, su Cantidad es : %8.2f ",total);
gan=gan+1;
tgan=tgan+total;
printf("\n? Quieres Volver a Jugar ? 1=si 2=no: ");
scanf("%d",&cont);
}
else
{
total=0;
printf("\nLo Siento ha perdido Todo, Su cantidad es : 0 ");
perd=perd+1;
tper=tper+cantid;
printf("\n? Quieres Volver a Jugar ? 1=si 2=no: ");
scanf("%d",&cont);
}
}
while (cont!=2);
getch();
return 0;
}
2. Escribir un programa para jugar a adivinar un número entre 1 y 10 (generado al azar por el ordenador) ha
decirlos todos.
Solución:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
int num,resp,inte;
clrscr();
num=random(10)+1;
printf("\nAdivina un N? del 1 al 10 : ");
scanf("%d",&resp);
inte=1;
while (num!=resp);
{
clrscr();
printf("\nAdivina un N? del 1 al 10 : ");
scanf("%d",&resp);
inte++;
}
printf("\Enorabuena el N? era .... %d ",num);
printf("\nEl N? de Intentos ha sido de ... %d .",inte);
getch();
return 0;
}
3. Uno de los usos más habituales para los bucles condicionales es la validación de entradas. Escribir un pr
una contraseña y permita tres intentos. Si el usuario da la contraseña correcta responde "Enhorabuena!" y
con este mensaje. En caso contrario el programa escribe "Lo siento, contraseña equivocada" y se cierra d
Solución:
/* Pide Contrase?a Con Do-While*/
#include<stdio.h>
#include<stdlib.h>
main()
int intent,ok,tu;
const CONTR=1525;
tu=0;
intent=0;
ok=0;
clrscr();
do
{
printf("\Escriba su Contrase?a ... ");
scanf("%d",&tu);
if (CONTR==tu)
ok=1;
else
intent=intent+1;
}
while((intent<=3)||(ok!=1));
if (intent==3)
printf("\nLo Siento Amigo, No puedes Entrar !! ");
else
printf("\nEnorabuena Ya puedes destrozar el Ordenador!! ");
getch();
return 0;
}
4. Escribir un programa que pida un número y saque por pantalla su tabla de multiplicar.
Solución:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
int num,resp,inte;
clrscr();
num=random(10)+1;
printf("\nAdivina un N? del 1 al 10 : ");
scanf("%d",&resp);
inte=1;
while (num!=resp);
{
clrscr();
printf("\nAdivina un N? del 1 al 10 : ");
scanf("%d",&resp);
inte++;
}
printf("\Enorabuena el N? era .... %d ",num);
printf("\nEl N? de Intentos ha sido de ... %d .",inte);
getch();
return 0;
}
5. Escribir un programa para calcular el promedio de una lista de números positivos acabada en un número
6. Escribir un programa para sumar los números enteros de 1 a 100 utilizando
a. estructura (repetir) ; b. estructura (mientras) ; c. estructura (des de).
7. Escribir un programa que lea una lista de números y determine cuantos son positivos, y cuantos son nega
8. Escribir un programa que dados dos números, uno real (base) y un entero positivo (exponente), saque po
las potencias con base el numero dado y exponentes entre uno y el exponente introducido
9. Escribir un programa que imprima por pantalla los codigos ASCII correspondientes a los nº 32 al 127
Solución:
/*
LstASCII.C
Exemple d'estructura for per llistar el codi ASCII
*/
#include <stdio.h>
void main ()
{
int i;
clrscr ();
for (i=32; i<=255; i++)
{
printf ("%d=%c\t",i,i);
if ((i-31 % 9 )==0)
printf ("\n");
}
printf("\nPrem una tecla per continuar");
getch();
}
+ 0 1 2 3
0 0 1 2 3
1 1 2 3 4
2 2 3 4 5
3 3 4 5 6
Cadenas de caracteres
1. Escribir un programa que pida una frase acabada en un punto y cuente las palabras que contiene.
2 Escribir un programa que pida una palabra y cuente el número de vocales y consonantes que contiene.
3 Escribir un programa que lea una frase y la escriba en mayúsculas
4 Escribir un programa que sirva para generar códigos de usuario por el procedimiento siguiente: Tiene qu
y los dos apellidos de una persona y devolver un código de usuario formado por las tres primeras letras d
apellido, las tres primeras letras del segundo apellido y las tres primeras letras del nombre. Por ejemplo,
entrada es: “JORDI GUINOVART SANTS” debe devolver “GUISANJOR”.
Tema 6. Funciones
1. Diseñar una función que calcule el promedio de varios números introducidos por el teclado. Hacer dos v
para un número fijo de valores y otra para un número cualquiera.de valores.
2 Escribir una función que intercambie el valor de dos variables, es decir si X=5 e Y=7 tras aplicar la func
haciendo "intercambiar(X,Y)" se tiene que X=7 e Y=5.
3 Diseñar una función que calcule la potencia enésima de un número, es decir que calcule X n para X, real
4 Diseñar una función "aMayusculas()" que convierta una cadena de texto en mayúsculas
5 Diseñar dos funciones "EurosAPesetas()" y "PesetasAEuros()" que realicen las conversiones de moneda
puedan utilizar directamente dentro de una expresion del tipo: "Imprimir valEuros son EurosAPts(valEu
5 Diseñar una función "EsBisiesto()" que decida si un año es bisiesto o no
6 Escribir una función "EsMultiplo" que sirva para determinar si un número es múltiplo de otra. Utilizarla
que pida la antiguedad de un trabajador y calcule cuantos trienios de antiguedad tiene.
7 Modularizar el programa nomina1.c utilizando tres funciones. Una para la entrada, una para los cálculos
salida de resultados
Solución:
/*
Nom del programa: NOMINA2.C
Descripci0:
Programa rudimentari que calcula la nomina d'un treballador
Versio 2: Fa servir funcions per agrupar codi.
*/
#include <stdio.h>
#include <conio.h>
void LlegeixDades();
void Calcula();
void ImprimeixResultats();
void pausa();
char cNom[30];
long nHores,nPreu;
float nSouBrut, nRetencio,nSouNet;
int main(void)
{
// Inicialitzacio
clrscr();
// Entrada de dades
LlegeixDades();
void LlegeixDades()
{
printf("Nom del treballador ? ");
scanf("%s",cNom);
printf("Quantes hores ha treballat? ");
scanf("%ld",&nHores);
printf("Quant cobra per hora? ");
scanf("%ld",&nPreu);
}
void Calcula()
{
nSouBrut = nHores * nPreu;
nRetencio = nSouBrut * nRETIRPF;
nSouNet = nSouBrut - nRetencio;
}
void ImprimeixResultats()
{
printf("\nNom del treballador: %s\n", cNom);
printf("Sou Brut : %f\n", nSouBrut);
printf("Retenci? : %f\n", nRetencio);
printf("Sou Net : %f\n", nSouNet);
}
void pausa()
{
printf("\nPrem una tecla per continuar");
getch();
}
#include <stdio.h>
#include <conio.h>
char cNom[30];
long nHores,nPreu,nSouBrut;
float nRetencio,nSouNet;
int main(void)
{
// Inicialitzaci?
clrscr();
// Entrada de dades
LlegeixDades( &cNom, &nHores, &nPreu);
void Calcula(long Hores, long Preu, long * SouBrut, float *Retencio, float *SouNet)
{
* SouBrut = Hores * Preu;
* Retencio = * SouBrut * nRETIRPF;
* SouNet = * SouBrut - (*Retencio);
}
void pausa()
{
printf("\nPrem una tecla per continuar");
getch();
}
9 Hacer un programa salarios.c que utilice las funciones anteriores dentro de un bucle para calcular las no
numero indeterminado de trabajadores
10 Escribir dos funciones Entrada() y Salida() que incluyan todas las operaciones de entrada de datos y sali
para el programa del ejercicio nº 1.5 (terminal punto de venta)