C++编程练习10--统计大写字母出现的次数,次数多的先输出

问题

输入一串字符串,以“$”结束,分别统计各大写字母出现的次数,并按字母出现的多少输出(先输出出现次数多的,次数相同的按照字母表输出,不出现的字母不输出)。

算法思想

  1. while(1)循环输入一个字符串,用length统计长度,当length超出数组大小或者出现$时,停止输入。
  2. 计数清零,依次统计出现的大写字母的次数,存入到num数组中
  3. 遍历num数组,找到最大的值max,即出现次数最多的字母输出,依次输出,每输出一个所在位置清零,直到全部输出
#include<bits/stdc++.h>
using namespace std;
int main(){
	int num[26];
	char ch[100];
	for(int i=0;i<26;i++){
		num[i]=0;//计数清零 
	}
	int length=0;
	cout<<"请输入一串字符:"; 
	while(1){
		cin>>ch[length];
		length++;
		if(length>100||ch[length-1]=='$') break;
	}
	for(int i=0;i<length;i++){
		if(ch[i]>='A'&&ch[i]<='Z'){
			num[(ch[i]-'A')]++;//统计字符 
		}
	}
	//找出现次数最多的打印
	//aAAAYYYYuiOOOOOBBFC23$ 
	for(int i=0;i<26;i++)
	{
		int max=0;
		for(int j=0;j<26;j++){
			if(num[j]>num[max]){
			max=j;
		  }  
		}
		if(num[max]!=0){
			cout<<char(max+'A')<<":"<<num[max]<<endl;
			num[max]=0;
	    }else break;
	 } 
	return 0;
}

输出

收获

如何输出出现次数最多的
for(int i=0;i<26;i++)
{
int max=0;
for(int j=0;j<26;j++){
if(num[j]>num[max]){
max=j;
}
}

	if(num[max]!=0){
		cout<<char(max+'A')<<":"<<num[max]<<endl;
		num[max]=0;
    }else break;
 } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值