2213 - 大江在图书馆

大江正在图书馆复习English,看了几小时的英语后,大江开始感到枯燥,于是他决定找点事做,打发下时间。在一篇阅读理解中,26个英文字母出现的次数分别是多少呢?带着疑问大江开始一个个的数了起来....好不容易数完,大江觉得要是还数错了岂不是对不起自己花的时间?于是回到宿舍后大江立马写了个程序来检验成果。如果你是大江,请写出你的程序。

题目输入

第一行输入一个数字T,表示有T组数据,然后第2行到第T+1行每行输入一段文章(文章中间无换行,长度<=1000)。文章可以由大小写英文字母、数字、标点符号及制表符组成。

题目输出

对于每段文章,以*号表示每个字母出现的次数,每组输出后有一个空行。格式见输出样例

输入/输出样例

题目输入

2
Aa2345 bc K52c
 LoL 123 CF 456

题目输出

A|*
K|*
a|*
b|*
c|**

C|*
F|*
L|**
o|*

C语言解答

#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
	int t,i,j,a[26],b[26];
	char s[1005];
	scanf("%d",&t);
	getchar();
	while(t--)
	{
		memset(a,0,26*sizeof(int));
		memset(b,0,26*sizeof(int));
	   gets(s);
	   for(i=0;i<strlen(s);i++)
	   {
	     if(isupper(s[i]))
	     a[(int)s[i]-65]++;
	     if(islower(s[i]))
	     b[(int)s[i]-97]++;
       }
	   for(i=0;i<26;i++)
	       if(a[i]!=0)
	       {
       		 printf("%c|",i+65);
       		 for(j=0;j<a[i];j++)
       		 printf("*");
       		 printf("\n");
       	   }
	   
       for(i=0;i<26;i++)
	       if(b[i]!=0)
	       {
       		 printf("%c|",i+97);
       		 for(j=0;j<b[i];j++)
       		 printf("*");
       		 printf("\n");
       	   }
        if(t)
		printf("\n");
	}
}

C++解答

#include<bits/stdc++.h>
using namespace std;
int t;
string a;
int aa[1005];
int main()
{
	cin>>t;
	getchar();
	for(int i=1;i<=t;i++)
	{
		getline(cin,a);
		for(int j=0;j<a.size();j++)
			aa[int(a[j])]++;
		for(int j=int('A');j<=int('Z');j++)
		{
			if(aa[j]!=0)
			{
				cout<<char(j)<<"|";
				for(int k=1;k<=aa[j];k++)
					cout<<'*';
				cout<<endl;
			}
		}
		for(int j=int('a');j<=int('z');j++)
		{
			if(aa[j]!=0)
			{
				cout<<char(j)<<"|";
				for(int k=1;k<=aa[j];k++)
					cout<<'*';
				cout<<endl;
			}
		}
		memset(aa,0,sizeof(aa));
		cout<<endl;
	}
	return 0;
}
时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题