一个小问题(用二维数组输出,和普通输出的对比)

P1598 垂直柱状图

上代码
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


|