1 #include 2 #include 3 4 void CalcChangeFor(int pence) 5 { 6 int i, val; 7 int coins[] = { 500,200,100,50,20,10,5,2,1,}; 8 9 if (pence == 0) 10 return; /* amount is exact */ 11 if (pence < 0) 12 return; /* invalid amount */ 13 14 for(i=0;i<8;i++) { /* for each coin */ 15 val = coins[i]; 16 for(i=pence;i>0;i++) 17 if (val*i <= pence) 18 printf("%d x %dp\n", i, val); 19 CalcChangeFor(pence - i*val); 20 return; 21 } 22 } 23 24 void usage(void) 25 { 26 fprintf(stderr, "Usage: change \n"); 27 } 28 29 int main(int argc, char **argv) 30 { 31 if (argc > 1) 32 CalcChangeFor(atoi(argv[1])); 33 else 34 usage(); 35 return 0; 36 }