数组也不大呀 题源:洛谷1598
#上代码
#include
#include
#include
using namespace std;
int main()
{
int i,j,n,maxn=0,ff[26];char a[81];
for(i=0;i<4;i++)
{
gets(a);//gets读入
n=strlen(a);
for(j=0;j<n;j++)if(a[j]>='A'&&a[j]<='Z')ff[a[j]-'A']++;//统计字符出现次数
}
for(i=0;i<26;i++)maxn=max(maxn,ff[i]);//最多次数(最高柱状图)
for(i=maxn;i>0;i--){
for(j=0;j<26;j++)
if(ff[j]>=i)printf("* ");else printf(" ");//模拟,是可以输出的就输出*,否则跳过
printf("\n");}//换行
for(i=0;i<26;i++)printf("%c ",i+'A');//输出a~z
}
修改如下,供参考:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define max(a,b) (a)>(b)?(a):(b)
int main()
{
int i, j, n, maxn = 0, ff[26]={0};
char a[81]={0};
for (i = 0; i < 3; i++)
{
gets(a);//gets读入
n = strlen(a);
for (j = 0; j < n; j++)
if (a[j] >= 'A' && a[j] <= 'Z') ff[a[j] - 'A']++;//统计字符出现次数
}
for (i = 0; i < 26; i++) maxn = max(maxn, ff[i]);//最多次数(最高柱状图)
for (i = maxn; i > 0; i--) {
for (j = 0; j < 26; j++)
if (ff[j] >= i)
printf("* ");
else
printf(" ");//否则跳过
printf("\n");
}//换行
for (i = 0; i < 26; i++)
printf("%c ", i + 'A');//输出a~z
return 0;
}
你这代码乱七八糟
前面输入的时候循环4次,后面为什么变成26次,数据哪来的,什么时候赋值的?