黑马程序员技术交流社区
标题: 基础测试题 A B C D出现的次数及次数排序 这道题我的答案如下,希望对大家有帮助 [打印本页]
作者: 大白天 时间: 2015-2-3 02:08
标题: 基础测试题 A B C D出现的次数及次数排序 这道题我的答案如下,希望对大家有帮助
/*从键盘输入一大堆字符串,统计A、B、C、D的出现次数,最后出现次数由高到低输出字母和出现次数。*/
#include <stdio.h>
void count(char*p,int a[]);//用来统计字符串里ABCD字符的个数,放入字符
void sort(int a[]); // 将个数在数组里按从大到小排序
int main()
{
int a[4];
char *s;
scanf("%s",s)
count(s,a);
int b[4]=a[4];
sort(b);
for(int i=0;i<4;i++)
{
if(b[i]==a[0])
printf("A:%d\n",b[i]);
else if(b[i]==a[1])
printf("B:%d\n",b[i]);
else if(b[i]==a[2])
printf("C:%d\n",b[i]);
else if(b[i]==a[3])
printf("D:%d\n",b[i]);
} // 按要求打印
return 0;
}
void count(char*p,int a[])
{
whlile((*p)!='\0')
{
if(s=='A')
a[0]++;
else if(s=='B')
a[1]++;
else if(s=='C')
a[2]++;
else if(s=='D')
a[3]++;
}
}
void sort(int a[])
{
int i,j,t;
for(j=0;j<4;j++)
{
for(i=0;i<4-1-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
作者: MacxChina 时间: 2015-2-3 13:41
继续加油
作者: 大白天 时间: 2015-2-3 15:47
共勉
作者: 备战黑马五期 时间: 2015-2-3 17:42
加油,还可以用冒泡排序的方法来做
作者: lumingfu 时间: 2015-2-3 17:45
先点个赞吧
作者: 大白天 时间: 2015-2-3 22:29
恩恩 是的 当时忘记这个算法了就没查资料
作者: 大白天 时间: 2015-2-3 22:30
是的 当时忘记这个算法咋写的了 没有查资料
作者: 类自通 时间: 2015-2-3 22:35
看你这么不容易,帮你顶下。
作者: cruzer 时间: 2015-2-3 22:39
{:3_49:} 类似这种情况 建议 使用switch 。。。。
作者: cruzer 时间: 2015-2-3 22:42
我是这样做的。。。。
代码:
#include "stdio.h"
int main(int argc, const char * argv[]) {
//保存输入信息
char inputbuffer[1000];
//获取控制台输入
printf("请输入字符串。。回车确认");
scanf("%s",inputbuffer);
int Counter_A=0,Counter_B=0,Counter_C=0,Counter_D=0;
int i=0;//循环变量
while (inputbuffer!='\0') {
switch (inputbuffer) {
case 'A':
Counter_A++;
break;
case 'B':
Counter_B++;
break;
case 'C':
Counter_C++;
break;
case 'D':
Counter_D++;
break;
default:
break;
}
i++;//循环变量自增
}
//定义两个数组 用来表示 字符标识与统计结果
char tagarray[4] ={'A','B','C','D'};
int counterarray[4] ={Counter_A,Counter_B,Counter_C,Counter_D};
//排序部分
for (int j = 0; j<3; j++)
{
for(int k = 0;k<3-j;k++)
{
if (counterarray[k] < counterarray[k+1])
{
// 当前一个元素小于后一个元素时,交换它们的位置
int temp = counterarray[k];
char tempchar=tagarray[k];
counterarray[k] = counterarray[k+1];
tagarray[k]=tagarray[k+1];
counterarray[k+1] = temp;
tagarray[k+1]=tempchar;
}
}
}
//输出部分
int l=0;
while (l<4) {
printf("%c出现了%d个\n",tagarray[l],counterarray[l]);
l++;
}
return 0;
}
作者: synhm 时间: 2015-2-3 22:49
我很笨不会做。。。
作者: 1026238004 时间: 2015-2-3 23:03
普遍都是这个思路
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |