我真的很想在这里好好分析一下这一题啊,首先一看题目给人的感觉就是貌似每行如果后面都是空格就不能输出,但是貌似这样很难,我就先不试这个,看看用矩形可以不,然后我敲出来了,第一次是最后面有空格,错了,嗯嗯,空格有问题,并好好分析了一下题目,发现“shows how many times each letter (but not blanks, digits, or punctuation) appears in the all-upper-case input“,喔,是输入的字符字母的个数(即没有的不用输出打印咯),改了两方面:输出空格,输出字符;但是结果竟然是错的,但是再细细理解,没有错啊,怎么啦?自己随便测试的例子也过了啊,汗,网上搜吧,太复杂了,懒得细看别人的代码,最后翻了几个代码,都和自己的写法有差别,大家都喜欢C++啊,唉,很无奈地继续研究自己的代码,没有耐心了,搞毛啊,我的思路没有问题啊,不会是第一种想法(不是矩形那种),可是翻得那些怪怪的代码,人家说这只是一道简单题啊,用矩行就可以了啊,与我之前的思路没有问题啊,哪里错了?!无奈中,把别人的代码复制过来,运行了一下,并运行自己的实例,汗,无语,原来是26的大写字符都要输出,为零就不要打印*就可以了,我泪奔啊,是我理解能力有问题吗?是自己英语没有学好吗?别一道水题折磨那么长时间,我汗颜啊,纠结在题目的理解上了!额……唉……
C语言版本的
#include "stdio.h"
#include "string.h"
int main()
{
int i,j,t=0,sum=0;
int str[30];
char ch;
memset(str,0,sizeof(str));
for(i=0;i<4;)
{
scanf("%c",&ch);
if(ch=='\n')
i++;
else
{
if(ch>='A'&&ch<='Z')
str[ch-'A']++;
}
}
for(i=0;i<26;i++)
{
/*if(str[i]!=0)//就是之前不输出那些文本没有的字符要用到的东西!
{
t=i;
}*/
if(sum<str[i])
sum=str[i];
}
for(i=0;i<sum;i++)
{
for(j=0;j<=25;j++)
{
if(str[j]>=sum-i)
printf("*");
else
printf(" ");
if(j!=25)
{
printf(" ");
}
}
printf("\n");
}
for(i=0;i<=25;i++)
{
printf("%c",i+'A');
if(i!=25)
printf(" ");
}
printf("\n");
}
…………………………