本帖最后由 4B青年 于 2015-7-2 23:30 编辑
- #include <stdio.h>
- #include <string.h>
- int main(int argc, const char * argv[]) {
- //定义一个数组用来存放输入的字符串
- char array[100];
- //提示用户输入一个字符串
- printf("请输入一个字符串:\n");
- //接收用户输入的字符串
- scanf("%s",array);
- //定义四个变量用来存放ABCD出现的次数
- int a=0,b=0,c=0,d=0;
- //定义变量存放字符串的长度
- unsigned long len=strlen(array);
- //通过for循环遍历数组元素
- for (int i=0;i<len;i++){
- //统计A出现的次数
- if(array[i]=='A'){
- a++;
- }
- //统计B出现的次数
- else if(array[i]=='B'){
- b++;
- }
- //统计C出现的次数
- else if(array[i]=='C'){
- c++;
- }
- //统计D出现的次数
- else if(array[i]=='D'){
- d++;
- }
- }
- //定义一个数组Num用来存放ABCD出现的次数
- int Num[4]={a,b,c,d};
- //定义变量用于临时存放数组元素
- int temp;
- //冒泡排序法
- for(int i=0;i<3;i++){
- for(int j=0;j<3;j++)
- {
- if(Num[j]<Num[j+1]){
- //当前一个数组元素小于后一个数组元素时,交换它们的位置
- temp=Num[j];
- Num[j]=Num[j+1];
- Num[j+1]=temp;
- }
- }
- }
- //定义一个数组mark用来存放ABCD标志
- char mark[4];
- //将数组Num与数组mark的出现次数和标志一一对应
- for(int i=0;i<4;i++){
- //如果出现a次,则mark[i]='A'
- if(Num[i]==a && mark[0]!='A' && mark[1]!='A' && mark[2]!='A' && mark[3]!='A'){
- mark[i]='A';
- }
- //如果出现b次,则mark[i]='B'
- else if(Num[i]==b && mark[0]!='B' && mark[1]!='B' && mark[2]!='B' && mark[3]!='B'){
- mark[i]='B';
- }
- //如果出现c次,则mark[i]='C'
- else if(Num[i]==c && mark[0]!='C' && mark[1]!='C' && mark[2]!='C' && mark[3]!='C'){
- mark[i]='C';
- }
- //如果出现d次,则mark[i]='D'
- else
- {
- mark[i]='D';
- }
- }
- //降序打印输出每个字母出现的次数
- for(int i=0;i<4;i++)
- printf("%c出现%d次\n",mark[i],Num[i]);
- return 0;
- }
复制代码 |
|