题目给出的函数原型如下: char getMostCharFromString(const char *str); 具体要求为,若有多个相同的字符备选,返回其中最早出现的字符,比如字符串”wwwwwwdddaaabbbdddcccc”,w和d都出现过6次,但只返回第一个最早出现的w。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char getMostCharFromString(const char* str);

int main(int argc, char* argv[])
{
char *pBuf = “wwwwwwdddaaabbbdddcccc”;
printf(“出现最多的字符:%c\n”, getMostCharFromString(pBuf));
system(“pause”);
return 0;
}

char getMostCharFromString(const char* str)
{
// 计算字符总数
int nCount = 0;
const char* strBak = str;
while (*strBak++) nCount++;

// 临时记录出现最多那个字符的总数
int flagCount = 0;
// 用于在循环中记录每一个出现的次数,用来和flagCount对比
int flagTmp = 0;
// 用来记录出现最多那个字符的下标
int flag = 0;

// 两套循环,分别把每个字符从头遍历到尾
for (int i = 0; i < nCount - 1; i++)
{
for (int j = 0; j < nCount - 1; j++)
{
// 如果出现相同字符,那么对把flagTmp++
if (str[i] == str[j])
flagTmp++;
}
// 内循环结束后,判断flagTmp是否大于flagCount
if (flagTmp > flagCount)
{
// 如果大于,则记录下标
flag = i;
// 并把最大值赋给flagCount
flagCount = flagTmp;
}
// flagTmp置为0,以便下次循环
flagTmp = 0;
}
// 返回最终的结果
return str[flag];
}