上为题目描述
下为本人做法
别问为什么数组名是rem和ram,因为我是二次元
#include <cmath>
#include <iomanip>
#include<algorithm>
#include<string>
#include<iostream>
using namespace std;
int main()
{
char rem[100]={0};
while (cin.getline(rem, 100, '!'))
{
cin.get();
int q = 0;
for(int i=0;i<100;i++)
{
if (rem[i] != 0)q++;
if (rem[i] == 0)break;
}
//统计元素个数q
for (int i = 0; i<q; i++)
{
if (rem[i] >= 'a' && rem[i] <= 'z')
{
rem[i] = rem[i] - 32;
}//小写变大写
}
//小写变大写
sort(rem, rem + q,less<char>());
char ram0[30] = { 0 };
int x = 0;
for(int i=0;i<q;i++)
{
if(rem[i]==0){}
else
{
bool sp = 1;
for (int s = 0; s < 30; s++)
{if (rem[i] == ram0[s]){sp = 0;}}
if (sp) { ram0[x] = rem[i]; x++; }
}
}
//建立唯一数组ram0,数组个数为x
int ram[30] = { 0 };
for(int i=0;i<q;i++)
{
for (int d = 0; d < x; d++) { if (rem[i] == ram0[d])ram[d]++; }
}
//数元素个数
for (int i = 0; i < x; i++) {
cout << ram0[i] << ":" << ram[i] << endl;
}
for (int i = 0; i <100; i++) { rem[i] = 0; }
for (int i = 0; i < 30; i++) { ram0[i] = 0; }
for (int i = 0; i < 30; i++) { ram[i] = 0; }
}
return 0;
}