注册 登录
编程论坛 C语言论坛

C语言题目 不知道为什么不对?

a1533168735 发布于 2019-12-21 22:36, 1182 次点击
题目描述
贝贝最近玩起了字符游戏,规则是这样的:读入四行字符串,其中的字母都是大写的,乐乐想打印一个柱状图显示每个大写字母的频率。你能帮助他吗?

输入
输入共有4行:每行为一串字符,不超过72个字符。

输出
与样例的格式保持严格一致。

样例输入
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!
样例输出
只有本站会员才能查看附件,请 登录

提示
1.输出的相邻字符间有一个空格。
2.最后一行的26个大写字母每次必须输出。
3.大写字母A所在的第一列前没有空格。

我的编程如下

#include <stdio.h>

#include <stdlib.h>



int main()

{ char s[4][80];

int i,j;

for(i=0;i<4;i++)

{



gets(s[i]);

}



char c[26][300]={'\0'};

int d[26]={0};

for(i=0;i<26;i++)

{

c[i][0]='A'+i;

}

for(i=0;i<4;i++)

for(j=0;s[i][j]!='\0';j++)

{

if(s[i][j]>='A'&&s[i][j]<='Z')

{

c[s[i][j]-65][++d[s[i][j]-65]]='*';





}

}

int max=d[0];

for(i=1;i<26;i++)

{

if(d[i]>max)

max=d[i];

}

for(i=max;i>0;i--)

{for(j=0;j<26;j++)

printf("%c ",c[j][i]);

printf("\n");

}

for(i=0;i<26;i++)

printf("%c ",c[i][0]);





return 0;

}

[此贴子已经被作者于2019-12-21 22:38编辑过]

2 回复
#2
纯蓝之刃2019-12-21 23:29
gets(s[i]);

当输入字符串中含有空格会被截断。
for(i=0;i<4;i++)
{
gets(s[i]);
}
更换为
for(i=0;i<4;i++)
    {
        scanf("%[^\n]",s[i]);
        getchar();
    }
试试
#3
a15331687352019-12-22 10:39
回复 2楼 纯蓝之刃
还是不对,而且gets输入不是可以输入含空格的字符串吗
1