3a.c (752B)
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 char * 6 findhighest(char *s) { 7 char z = 0; 8 char *highest = &z; 9 for (char *c = s; *c != '\n' && *c != 0; c++) { 10 if (*c > *highest) 11 highest = c; 12 } 13 return highest; 14 } 15 16 char * 17 highestpair(char *s) { 18 char *h1 = findhighest(s), *h2; 19 static char high[2]; 20 high[0] = *h1; 21 22 *h1 = 0; 23 char *s1 = findhighest(s), *s2 = findhighest(h1 + 1); 24 h2 = (s1 > s2) ? s1 : s2; 25 if (h1 > h2) { 26 high[1] = high[0]; 27 high[0] = *h2; 28 } else high[1] = *h2; 29 30 return high; 31 } 32 33 34 int 35 main() { 36 int total = 0; 37 char *pair, num[3] = {0}, line[256]; 38 39 while (fgets(line, 256, stdin)) { 40 pair = highestpair(line); 41 memcpy(num, pair, 2); 42 printf("%s\n", num); 43 total += atoi(num); 44 } 45 46 printf("%d\n", total); 47 }