Ejercicio 1 #include <stdlib.h> #include <string.h> char * cc(char *s1, char *s2){ char *c;//auxiliar para retornar int k=strlen(s1);//uso esta invocacion varias veces int i;//indice de los caracteres de s1 int j=0;//indice de los caracteres de c //reservo espacio en memoria para c, liberar al invocar if(k<=strlen(s2)) c=(char *) malloc(k+1); //guarda 1 mas para terminador nulo else c=(char *) malloc(strlen(s2)+1); c[0]='\0';//lo inicializo como string vacio /*char *strchr(char *s, int c);retorna un puntero a la primera ocurrencia del caracter c en el string s, o NULL sino existe el caracter c en el string s*/ for(i=0;i<k;i++) if((strchr(s2,s1[i])!=NULL) && (strchr(c,s1[i])==NULL)){ c[j]=s1[i]; c[j+1]='\0'; //terminador nulo por si es la ultima vez que entra al if j++; } return c; } Ejercicio 2 #include<stdio.h> #include <stdlib.h> #include <string.h> void main() { char **cadenas,auxi[1024],m[100],M[1024]; int i,j; printf("Ingrese 10 strings:\n"); cadenas=(char**) malloc(10*sizeof(char*)); for(i=0;i<10;i++){ printf("Palabra %d: ",i+1); gets(auxi); cadenas[i]=(char*)malloc(strlen(auxi)+1); strcpy(cadenas[i],auxi); }//inicializo m y M strcpy(m,cadenas[0]); strcpy(M,cadenas[0]); for(j=1;j<10;j++){ if(strlen(cadenas[j])>strlen(M)) strcpy(M,cadenas[j]); if(strlen(cadenas[j])<strlen(m)) strcpy(m, cadenas[j]); } printf("Adivina que se muestra aqui!: %s\n",M); printf("Y aqui...?: %s\n",m); }