输入一串字符,以‘?’结束,统计各字母出现的次数,并按字母出现的多少输出,
展开全部
你这个要求用什么语言实现?。。
我只是知道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());
}
}
}
我只是知道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());
}
}
}
展开全部
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码
判断其他字母照上面的例子该就可以了;
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码
判断其他字母照上面的例子该就可以了;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询