黑马程序员技术交流社区
标题:
从键盘输入一大堆字符串,统计A、B、C、D的出现次数,...
[打印本页]
作者:
baihe0813
时间:
2015-1-17 22:45
标题:
从键盘输入一大堆字符串,统计A、B、C、D的出现次数,...
char str[1024];
gets(str);
int i = 0;
int countA = 0;
int countB = 0;
int countC = 0;
int countD = 0;
//计算ABCD出现的个数
while (str[i] != '\0') {
if(str[i] == 'A')
{
countA++;
}
else if(str[i] == 'B')
{
countB++;
}
else if(str[i] == 'C')
{
countC++;
}
else if(str[i] == 'D')
{
countD++;
}
i++;
}
printf("%i, %i, %i, %i\n", countA, countB, countC, countD);
//分别将字母和次数放到数组中,他们的关系是对应的。并且再排序的时候他们的位置都是要变得。
int count[4] = {countA, countB, countC, countD};
char cc[4] = {'A', 'B', 'C', 'D'};
for(int i = 0; i<3; i++)
{
if(count[i] < count[i+1])
{
int temp = count[i];
count[i] = count[i + 1];
count[i + 1] = temp;
char tempC = cc[i];
cc[i] = cc[i + 1];
cc[i + 1] = tempC;
}
}
for(int i = 0; i<4; i++)
{
printf("%c : %i\n", cc[i], count[i]);
}
复制代码
作者:
missyoyo
时间:
2015-1-17 22:49
不行的,像这样做为何不用switch,switch效率高,如果是统计A到Z呢?不可能定义26个变量吧?
正确的做法应该是定义一个TreeMap集合,键是A-Z,值是出现的次数,如果集合中没有出现过键,则map.put(字母,1).如果出现过则值++;再put
作者:
baihe0813
时间:
2015-1-17 22:52
我也是觉得我这样的方法麻烦了,但是不太明白那个TreeMap集合,一会上网查查。。
作者:
missyoyo
时间:
2015-1-17 22:53
IOS?进错了,我按照JAVA的思路来解了,楼主可以不看我的解答
作者:
baihe0813
时间:
2015-1-17 22:57
missyoyo 发表于 2015-1-17 22:53
IOS?进错了,我按照JAVA的思路来解了,楼主可以不看我的解答
感觉iOS中肯定也是有类似的思路
作者:
arui12580
时间:
2015-1-18 23:23
为毛不用结构体
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2