黑马程序员技术交流社区
标题:
入学基础测试题分享 统计A、B、C、D的出现次数
[打印本页]
作者:
麻木
时间:
2015-4-23 13:26
标题:
入学基础测试题分享 统计A、B、C、D的出现次数
/**
*6.从键盘输入一大堆字符串,统计A、B、C、D的出现次数,最后出现次数由高到低输出字母和出现次数。(C语言)
*/
#include<stdio.h>
int main(int argc, const char * argv[])
{
//1.新建四个整型变量用于分别存贮字符 A B C D的个数 因为多次输入字符串,计数累加 所以新建变量在主循环外面
int countA = 0;
int countB = 0;
int countC = 0;
int countD = 0;
//2.主循环 持续提示用户输入字符串并打印
while(TRUE)
{
//2.1系统提示用户输入字符串
printf("请输入字符串并按回车确定\n");
//2.1新建一个100长度的字符数组string用于存储用户输入字符串
char string[100];
scanf("%s",string);
//2.2新建一个变量存贮字符串的长度
unsigned long length = strlen(string);
//2.3循环计数字符A B C D的个数
for(int i = 0;i < length;i++)
{
switch (string[i]) {
case 'A':
countA++;
break;
case 'B':
countB++;
break;
case 'C':
countC++;
break;
case 'D':
countD++;
break;
default:
break;
}
}
//2.4分别建立一个字符数组和一个整型数组用于存放字符的名字和计数
char label[4]={'A','B','C','D'};
int count[4]={countA,countB,countC,countD};
//2.5元素交换需要用到的中间变量
char labelSwap;
int countSwap;
//2.6 count数组冒泡排序 如果后面元素大于前面的元素 则分别交换label count数组的元素
for(int i = 0;i < 4;i++)
{
for(int j = i+1;j < 4;j++)
{
if(count[i] < count[j])
{
//2.6.1交换count数组元素
countSwap = count[i];
count[i] = count[j];
count[j] = countSwap;
//2.6.2交换label数组元素
labelSwap = label[i];
label[i] = label[j];
label[j] = labelSwap;
}
}
}
//2.7输出结果 字符和计数
printf("%c %d %c %d %c %d %c %d",label[0],count[0],label[1],count[1],label[2],count[2],label[3],count[3]);
}
return 0;
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2