我认为你应该首先找到最小的字母(通过 ASCII 码例如 A=65),搜索这个字母的输入字符串(可能使用 strchr)并求和(在单独的变量中)与这个字母相关的所有数字,最后写新字符串中的字母和数字并继续下一个字母(B=66)。然后,您将对新字符串进行排序和汇总。
char *input;
char *output;
char *p, *cur;
int nums, num;
char min;
char temp[20];
//search for minimal letter
for(int i = 0; i < strlen(input); i++){
if(input[i] > 65 && input[i] < 90)
if(input[i] < min)
min = input[i];
}
//parsing input string
for(int i = 0; i < strlen(input)/4; i++){
//strlen(input)/4 because each sequense at least 4 letters
p = input;
num = 0;
nums = 0;
while(cur = strchr(p, min)){
sscanf(cur+2, "%d", &num);
nums += num;
p = cur+1;
}
//filling new string
sprintf(temp, "%c\t%d\n", min, nums);
strcat(output, temp);
min++;
}