输入一串字符,以‘?’结束,统计各字母出现的次数,并按字母出现的多少输出,

例如输入5b3a+4-hdeh5dh?输出h3d2a1b1e1... 例如 输入 5b3a+4-hdeh5dh?
输出 h 3
d 2
a 1
b 1
e 1
展开
 我来答
492800405
2010-12-26 · TA获得超过169个赞
知道小有建树答主
回答量:98
采纳率:0%
帮助的人:115万
展开全部
你这个要求用什么语言实现?。。
我只是知道Java里面怎么实现这个.下面是java的实现代码.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Comparator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;

public class CountWord {
public static void main(String args[]) throws IOException{
//定义一个字符串变量用于存储用户输入一行的数据
String line = null;
//定义一个字符串变量用于存储用户输入的全部的数据
String totalline="";
System.out.println("输入字符");
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

while(true){
if((line = (reader.readLine())).endsWith("?")){
//获取用户输入的数据,判断行尾是否有以?结尾的字符,如果有以?结尾的则结束输入,并将用户输入的存到变量totalline中
totalline=totalline.concat(line);
break;
}else{
totalline=totalline.concat(line);
}
}
Map<Character,Integer>tm = new TreeMap<Character,Integer>();
//将总的输入的字符串数据转换成一个一个的字符,并添加到集合中
char chs [] = totalline.toCharArray();
for(char c:chs){
if(tm.containsKey(c)){
tm.put(c, tm.get(c)+1);
}else{
tm.put(c, 1);
}
}

Set<Map.Entry<Character,Integer>> set = new TreeSet<Map.Entry<Character, Integer>>(new Comparator<Map.Entry<Character,Integer>>(){
@Override
public int compare(Map.Entry<Character, Integer> en, Map.Entry<Character,Integer> en1){
int value =en1.getValue()-en.getValue();
return value==0?1:value;
}

});
set.addAll(tm.entrySet());
for(Map.Entry<Character, Integer>en:set){
System.out.println(en.getKey()+":"+en.getValue());
}
}
}
瑜琅jade
2010-12-26 · 超过30用户采纳过TA的回答
知道答主
回答量:55
采纳率:100%
帮助的人:24万
展开全部
c语言写法:
char ch;
int i=0,num=0,w1=0,w2=0,m=0,spn=0;
printf("请输入字符串:");
while((ch=getchar())!='?')
{
if(iscntrl(ch)) //是否为控制字符
num++;
else if (isdigit(ch)) //是否为数字
w1++;
else if (islower(ch)) //是否为小写字符
w2++;
else if(isupper(ch)) //是否为大写字符
m++;
else if(isspace(ch)) //是否为空格符
spn++;
else
i++; //其他字符
}
printf("控制字符有%d个\n",num);
printf("数字字符有%d个\n",w1);
printf("大写字母有%d个\n",m);
printf("小写字符有%d个\n",w2);
printf("空格字符有%d个\n",spn);
printf("其他字符有%d个\n",i);

将 if(iscntrl(ch)) //是否为控制字符
改写成 if(ch==97) //是否为小写字母a 说明: 97对应的assicc码
判断其他字母照上面的例子该就可以了;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式