Description
输入4行全部由大写字母组成的文本,输出一个垂直直方图,给出每个大写字母出现的次数。
注意:只用输出大写字母的出现次数,不用输出空白字符,数字或者标点符号的出现输出次数。
Input
输入包括4行由大写字母组成的文本,每行上字符的数目不超过80个。
Output
输出包括若干行。其中最后一行给出26个大写英文字母,这些字母之间用空格隔开。前面的几行包括空格和星号,每个字母出现几次,就在这个字母的上方输出一个星号。注意:输出的第一行不能是空行。
Sample Input
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!
Sample Output
*
*
* *
* * * *
* * * *
* * * * * *
* * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * *
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
这是题目
下面是我写的程序,编译正确,但是无法运行,请各位高手帮看下问题出在哪。谢谢!
#include<stdio.h>
#include<string.h>
int main()
{
char str[81];
int n=4,i=0,j,max=0,a[26];
while(n>0)
{
gets(str);
while(str[i]!='\0')
{
for(j=65;j<91;j++)
if(str[i]==j)
a[j]++;
i++;
}
n--;
}
for(j=65;j<91;j++)
{
if(a[j]>max)
max=a[j];
}
while(max>1)
{
for(j=0;j<26;j++)
{
if(a[j]<max)
printf(" ");
else printf("* ");
}
max--;
}
for(j=0;j<26;j++)
printf("%c ",'A'+j);
return 0;
}
垂直直方图
答案:1 悬赏:40 手机版
解决时间 2021-02-15 06:30
- 提问者网友:我是我
- 2021-02-14 07:32
最佳答案
- 五星知识达人网友:有你哪都是故乡
- 2021-02-14 08:52
# include<stdio.h>
int main()
{
char s[4][80],fuben[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
int i,j,k,r,max,N[26]={0},d[320][26];
for(i=0;i<4;i++)
{
for(j=0;j<80;j++)
{
scanf("%c",&s[i][j]);
if(s[i][j]=='\n') break;
}
}
for(i=0;i<4;i++)
{
for(j=0;j<80;j++)
{
for(k=0;k<26;k++)
{
if(s[i][j]==fuben[k]) N[k]++;
}
}
}
max=N[0];
for(i=0;i<26;i++)
{
if(N[i]>=max) r=max,max=N[i];
else continue;
}
for(i=0;i<max;i++)
{
for(j=0;j<26;j++)
{
if(N[j]>0) d[i][j]=1;
if(N[j]==0) d[i][j]=0;
N[j]--;
}
}
for(i=max-1;i>=0;i--)
{
for(j=0;j<26;j++)
{
if(d[i][j]==1) printf("* ");
else printf(" ");
}
printf("\n");
}
for(i=0;i<26;i++)
{
printf("%c ",fuben[i]);
}
printf("\n");
}
int main()
{
char s[4][80],fuben[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
int i,j,k,r,max,N[26]={0},d[320][26];
for(i=0;i<4;i++)
{
for(j=0;j<80;j++)
{
scanf("%c",&s[i][j]);
if(s[i][j]=='\n') break;
}
}
for(i=0;i<4;i++)
{
for(j=0;j<80;j++)
{
for(k=0;k<26;k++)
{
if(s[i][j]==fuben[k]) N[k]++;
}
}
}
max=N[0];
for(i=0;i<26;i++)
{
if(N[i]>=max) r=max,max=N[i];
else continue;
}
for(i=0;i<max;i++)
{
for(j=0;j<26;j++)
{
if(N[j]>0) d[i][j]=1;
if(N[j]==0) d[i][j]=0;
N[j]--;
}
}
for(i=max-1;i>=0;i--)
{
for(j=0;j<26;j++)
{
if(d[i][j]==1) printf("* ");
else printf(" ");
}
printf("\n");
}
for(i=0;i<26;i++)
{
printf("%c ",fuben[i]);
}
printf("\n");
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯