1. #include <stdio.h>
    2. #include<string.h>
    3. char up_to_low(char c) { // 大写转小写
    4. if ((c >= 'A') && (c <= 'Z')) {
    5. return (c+32);
    6. }
    7. return c;
    8. }
    9. int main() {
    10. int i = 0;
    11. int j = 0;
    12. char* str_ptr[100]; // 用来储存每个单词
    13. int fre_array[100] = { 0 };// 用来存储每个单词出现的次数
    14. char vocabulary[100][15] = { 0 }; // 第一维是字母,第二维是这些字母组成的单词
    15. while (scanf("%s", vocabulary[i]) != EOF) {
    16. j = 0;
    17. while (vocabulary[i][j]) { // 大写转小写
    18. vocabulary[i][j] = up_to_low(vocabulary[i][j]);
    19. j++;
    20. }
    21. i++;
    22. }
    23. int count = 0; // 统计所有单词
    24. count = i;
    25. for (i = 0; i < 100; i++)fre_array[i] = 1;
    26. int dic_count = 0; // 统计没有重复出现的单词
    27. int sign = 1; // 标记为1,表示该单词未出现在str_ptr中
    28. for (i = 0; i < count; i++) {// 遍历所有单词
    29. for (j = 0; j < dic_count; j++) { // 对于该单词,比较其是否在str_ptr中出现
    30. if (strcmp(vocabulary[i], str_ptr[j]) == 0) { // 出现,则对应统计次数的频率+1
    31. fre_array[j] += 1;
    32. sign = 0;
    33. }
    34. }
    35. if (sign) { // 如果单词没有在str_ptr数组指向的单词中出现过,则str_ptr指针数组的当前指针指向该单词
    36. str_ptr[dic_count] = vocabulary[i];
    37. dic_count++;
    38. }
    39. }
    40. int max = 0;
    41. for (i = 1; i < dic_count; i++) {
    42. if ((fre_array[i] > fre_array[max])) max = i;
    43. if ((fre_array[i] == fre_array[max]) && (strcmp(str_ptr[i], str_ptr[max]) > 0)) max = i;
    44. }
    45. printf("%s %d", str_ptr[max], fre_array[max]);
    46. return 0;
    47. }

    读入多行句子,分词,