sylviali1109
我的想法是先构建好一个struct实体,承装字母的大写形式、小写形式以及它出现的次数
然后建立一个26个字母的数组,为了方便,我从1~26标号,0位空出。
读入字符串后与字母数组的内容对比,语气大写或小写相同时则次数加1.
代码在下面。
另外,我觉得这个题目还可以使用STL的map。
#include
#include
using namespace std;
struct Pair
{
char capital;
char lowercase;
int times;
};
#define SIZE 27
int main()
{
Pair letters[SIZE];
int ASC_capital = 65;
int ASC_lowercase = 97;
for(int i = 1; i < SIZE; i++)
{
letters[i].capital = ASC_capital++;
letters[i].lowercase = ASC_lowercase++;
letters[i].times = 0;
}
string test;
cin >> test;
int len;
len = test.size();
int k = 0;
while(k < len)
{
if((test[k] >= 65 && test[k] <= 90) || (test[k] >= 97 && test[k] <= 122))
{
for(int j = 1; j < SIZE; j++)
{
if((test[k] == letters[j].capital) || (test[k] == letters[j].lowercase))
letters[j].times++;
}
}
else
break;
k++;
}
int count = 1;
for(int j = 1; j < SIZE; j++)
{
cout << letters[j].capital << "/" << letters[j].lowercase << ": " << letters[j].times << " ";
if(count == 10)
{
cout << endl;
count = 1;
}
else
++count;
}
cout << endl << endl;
return 0;
}
刘思韵2522
#include
优质英语培训问答知识库