C++编程:统计键盘输入的一串英文字符中每种英文字符的个数.要求:(1)使用数组(2)相同英文字符的大小写形式视为同一种统计对象(3)遇到非英文字符时统计终止(4)按每行10个数据
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/24 08:33:50
C++编程:统计键盘输入的一串英文字符中每种英文字符的个数.要求:(1)使用数组(2)相同英文字符的大小写形式视为同一种统计对象(3)遇到非英文字符时统计终止(4)按每行10个数据
C++编程:统计键盘输入的一串英文字符中每种英文字符的个数.
要求:(1)使用数组
(2)相同英文字符的大小写形式视为同一种统计对象
(3)遇到非英文字符时统计终止
(4)按每行10个数据输出
C++编程:统计键盘输入的一串英文字符中每种英文字符的个数.要求:(1)使用数组(2)相同英文字符的大小写形式视为同一种统计对象(3)遇到非英文字符时统计终止(4)按每行10个数据
我的想法是先构建好一个struct实体,承装字母的大写形式、小写形式以及它出现的次数
然后建立一个26个字母的数组,为了方便,我从1~26标号,0位空出.
读入字符串后与字母数组的内容对比,语气大写或小写相同时则次数加1.
代码在下面.
另外,我觉得这个题目还可以使用STL的map.
#include <iostream>
#include <string>
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;
}