Hola, tu problema es que no tienes cuidado con los tipos, para empezar c es de tipo entero, y estas pidiendo que te introduzcan un numero decimal, debería ser float, y luego la operación % da problemas con tipos que no sean enteros, así que lo mejor es multiplicar el número que introducen por 100 si es que solo quieres 2 decimales, y luego operar con todo entero. Te adjunto el codigo que funciona, pero antes entiende lo que te digo eh?:
#include <stdio.h>
#include <conio.h>
int main (void)
{
//clrscr();
int c,d1,d2,d3,d4,d5,d6,d7,aux,aux2;
float cn,d8,d9,d10;
printf(" **************************************n");
printf(" * PROGRAMA QUE DIVIDE UNA CANTIDAD *n");
printf(" * EN MONEDAS DE 50,20,10,5,2,1 *n");
printf(" * .50,.20,.10,.5 *n");
printf(" * por:
daredevil_g@hotmail.com *n");
printf(" **************************************n");
printf("n");
printf(" Digita tu cantidad: ");
scanf("%f",&cn);
c=cn*100;
d1=c/5000; //Monedas de 50
aux=c%5000; //Residuo
d2=aux/2000; //Monedas de 20
aux=aux%2000; //Residuo
d3=aux/1000; //Monedas de 10
aux=aux%1000; //Residuo
d4=aux/500;
aux=aux%500;
d5=aux/200;
aux=aux%200;
d6=aux/100;
aux=aux%100;
d7=aux/50;
aux=aux%50;
d8=aux/20;
aux=aux%20;
d9=aux/10;
aux=aux%10;
d10=aux/5;
printf("Tu resultado es: %d monedas de 50n",d1);
printf("Tu resultado es: %d monedas de 20n",d2);
printf("Tu resultado es: %d monedas de 10n",d3);
printf("Tu resultado es: %d monedas de 5n",d4);
printf("Tu resultado es: %d monedas de 2n",d5);
printf("Tu resultado es: %d monedas de 1n",d6);
printf("Tu resultado es: %d monedas de .50n",d7);
printf("Tu resultado es: %f monedas de .20n",d8);
printf("Tu resultado es: %f monedas de .10n",d9);
printf("Tu resultado es: %f monedas de .5n",d10);
getch();
}