blackjack.c
1 #include <stdio.h> 2 #include <ctype.h> 3 4 int convert_char(char c) 5 { 6 if (isdigit(c)) 7 { 8 if (c == '1' || c == '0') 9 return (-1); 10 return (c - '0'); 11 } 12 else 13 { 14 if (c == 'T' || c == 'J' || c == 'D' || c == 'K') 15 return (10); 16 if (c == 'A') 17 return (1); 18 } 19 return (-1); 20 } 21 22 int main(int argc, char **argv) 23 { 24 char *string; 25 int sum; 26 int ret; 27 int ace; 28 int i; 29 30 if (argc != 2) 31 return (1); 32 string = argv[1]; 33 sum = 0; 34 ace = 0; 35 i = -1; 36 while (string[++i] != '\0') 37 { 38 ret = convert_char(string[i]); 39 if (ret < 0) 40 return (1); 41 if (ret == 1) 42 { 43 ace++; 44 continue ; 45 } 46 sum += ret; 47 } 48 i = 0; 49 while (ace--) 50 { 51 if (!i++ && sum < 21) 52 { 53 ret = 11; 54 if (sum + ret > 21) 55 ret = 1; 56 } 57 else 58 ret = 1; 59 sum += ret; 60 } 61 if (sum == 21) 62 printf("Blackjack!\n"); 63 else 64 printf("%d\n", sum); 65 return (0); 66 }