#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
int main()
{
string str;
getline(cin,str);
int i = 0;
int time[256] = { 0 };
while (str[i] != '\0')
{
time[str[i]]++;
i++;
}
for (int r = 97; r <= 122; r++)
{
time[r] += time[r - 32];
}
int value = -1.0e+9;
int suoyin = 0;
int small = 1.0e+9;
for (int j = 0; j < str.length(); j++)
{
if (time[str[j]] > value&&str[j]<='z'&&str[j]>='a'&&(int)str[j]<small)
{
value = time[str[j]];
suoyin = j;
small = str[j];
}
}
int maxm = 0;
char ch;
for (int i = 'a'; i <= 'z'; i++)
{
if (time[i] > maxm)
{
maxm = time[i];
ch = char(i);
}
}
cout << ch << " " << maxm;
}
一直出错的地方是:if (time[str[j]] > value&&str[j]<=‘z’&&str[j]>=‘a’&&(int)str[j]<small)
str[j]是字符串中的某个字符!!因为之前定义了time为int数组,所以计算机能自动将time数组里面的字符转化成ASCII数值,但是单个的str[j]是个字符!!
后面一段代码写成这样更为巧妙:
int maxm = 0;
char ch;
for (int i = 'a'; i <= 'z'; i++)
{
if (time[i] > maxm)
{
maxm = time[i];
ch = char(i);
}
}
cout << ch << " " << maxm;