老师出了这个题目:
要求编写一个程序 从键盘上任意输入几个 {26的个字母或者10个数字}
程序要打印出来有多少个字母 多少个数字 各是什么
列如输入:15888cccyy
就打印出数字1 1个
数字5 1个
数字8 3个
字母c 3个
字母y 2个
这个程序 也许很简单也许很难
我想了很长时间没有办法动手```
不知道老师哪搞的题目
希望各位师兄帮助帮助
谢谢了 ```
代码~~很繁琐~~希望有高手可以化简~~~
#include<iostream>
using namespace std;
void main()
{
char a[100];
int f1=0;
int i,j,k;
char s;
cout<<"请输入:\n";
cin>>a;
for( k=0; a[k]!='\0'; )
{
k++;
}
for( i=0; i<k; i++)
{
f1=0; //计数器
while(a[i]=='*') //遇到*符号向后退格
{
i++;
}
s=a[i];
for( j=i; a[j]!='\0'; j++)
{
if(s==a[j])
{
f1++;
a[j]='*'; //将已经计算的字符化为*了,以免影响计数
}
}
if( s>=48 && s<=57)
{
cout<<"数字"<<s<<"共有"<<f1<<"个\n";
}
else if( s>=97 && s<=122)
{
cout<<"字符"<<s<<"共有"<<f1<<"个\n";
}
}
}
[CODE]#include <iostream>
#include <map>
using namespace std;
int main(){
map<char,int> con;
char ch;
while ((ch = getchar()) != '\n')
++con[ch];
map<char,int>::iterator p = con.begin();
for (;p != con.end();++p)
cout << p->first << "\t" << p->second << endl;
}[/CODE]