上代码
by Binah @ 2019-12-08 11:57:40
```c
#include <stdio.h>
#include <string.h>
int main()
{
int a[26],t,d[500],n;
for(int i=0; i<26; i++){
a[i] = 0;
}
char c[110],b[500][26];
for(int i=0; i<4; i++){
gets(c);
n = strlen(c);
for(int j=0; j<n; j++){
if(c[j]>='A' && c[j]<='Z'){
t = c[j]-'A';
a[t]++;
}
}
}
int max,t1;
max = a[0];
for(int i=1; i<26; i++){
if(a[i]>max)
max = a[i];
}
t1 = max;
for(int i=0; i<max; i++){
for(int j=0; j<26; j++){
if(a[j] >= t1){
d[i] = j;
}
}
t1--;
}
for(int i=0; i<max; i++){
for(int j=0; j<d[i]; j++)
b[i][j] = ' ';
}
printf("\n");
for(int j=0; j<26; j++){
for(int i=0; i<a[j]; i++){
b[max-i-1][j] = '*';
}
}
for(int i=0; i<max; i++){
printf("%c",b[i][0]);
for(int j=1; j<=d[i]; j++){
printf(" %c",b[i][j]);
}
printf("\n");
}
printf("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");
return 0;
}
```
by 一根老麻花 @ 2019-12-08 12:03:26
```c
#include <stdio.h>
#include <string.h>
int main()
{
int a[26],t,n;
for(int i=0; i<26; i++){
a[i] = 0;
}
char c[110];
for(int i=0; i<4; i++){
gets(c);
n = strlen(c);
for(int j=0; j<n; j++){
if(c[j]>='A' && c[j]<='Z'){
t = c[j]-'A';
a[t]++;
}
}
}
int max;
max = a[0];
for(int i=1; i<26; i++){
if(a[i]>max)
max = a[i];
}
for(int j=max;j>=1; j--){
if(a[0]>=j){
printf("*");
}
else{
printf(" ");
}
for(int i=1; i<26; i++){
if(a[i]>=j){
printf(" *");
}
else
{
for(int k=i+1; k<26; k++){
if(a[k]>=j){
printf(" ");
break;
}
}
}
}
printf("\n");
}
printf("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");
return 0;
}
```
by 一根老麻花 @ 2019-12-08 12:03:47
第一个是二维数组
第二个是普通输出
by 一根老麻花 @ 2019-12-08 12:05:00
授人以渔一下
1.把你的鼠标放在测评反馈的“WA”上面,会发现一句“too short on line 1”
也就是他说你太短了!!!
这种反馈一般是输出格式的问题,要不然会具体告诉你第一行第几个字符不一致。
2.把.in下载一下,用你的两个程序分别跑一下。重点关注第一行
3.你会发现,你第一份代码的第一行莫名奇妙有一个空行。
4.找到第一个输出,发现多了个printf \n。
5.删除、提交、AC
总体的切入点就是那句“你太短了!”
by babyec @ 2019-12-08 12:37:08
@[babyec](/user/76367)
学到了,2个都可以了,谢谢
之前样例输不对,测数据改对后没删干净,才多出了一行莫名其妙的空行,太糙了0.0
by 一根老麻花 @ 2019-12-08 13:10:22
@[一根老麻花](/user/259304) 太粗啦
by babyec @ 2019-12-08 14:47:57