全WA,可是运行结果没看出来问题在哪?

P1598 垂直柱状图

我也不懂啊啊
by 初音ミク_Miku @ 2018-06-04 20:10:59


@[汪佳凝](/space/show?uid=92224) 心疼的抱住自己
by jkllage456 @ 2018-06-04 20:29:00


哪位大牛可以帮忙测试一下代码?
by jkllage456 @ 2018-06-04 20:29:35


提交题目不用写那个pause的... 然后去掉以后我试着在洛谷ide上跑 是显示这么个错误的 要不换个gets试试 具体算法还没看orz ``` /tmp/tmp6CtG7V.cpp: In function 'int main()': /tmp/tmp6CtG7V.cpp:13:18: error: 'gets_s' was not declared in this scope gets_s(st,100); ^ ```
by Chino @ 2018-06-04 21:24:21


改了下读入后运行的结果是这样的... 输出这样红点问题应该就是在数组初始化那里了吧.. 本来应该是输出空格的 结果却输出成了'\0'(红点)(这东西就是数组默认初始化的) ![](https://cdn.luogu.com.cn/upload/pic/20633.png) 试试改改那里吧
by Chino @ 2018-06-04 21:32:19


改成这样样例的输出就对了 但是不确保能AC哦.. 我没提交 你自己再看看好了 多注意一下那个'\0'就对了 ``` #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char st[100]; char st1[100]; char st2[100]; char st3[100]; int chara[100]={ 0 }; int line,hang,p=0,i,m; line =hang= 0; gets(st); gets(st1); gets(st2); gets(st3); for (i = 0; st[i] != 0; i++) { m = st[i]; chara[m]++; } for (i = 0; st1[i] != 0; i++) { m = st1[i]; chara[m]++; } for (i = 0; st2[i] != 0; i++) { m = st2[i]; chara[m]++; } for (i = 0; st3[i] != 0; i++) { m = st3[i]; chara[m]++; } int max=0, pk; // max = 0; pk = 0; for (i = 65; i <= 91; i++) { if (max < chara[i]) { max = chara[i]; // pk = i; } } char gra[100][26] = { ' ' };//输出图表 pk = max; while (max>= 1) { int m = 65; for (i = 0; i < 26; i++)//检查字母是否有max个,如果有那么在这个字母的那一行填充* { if (chara[m] == max) { for (int j = line; j < pk ; j++) { gra[j][i] = '*'; } } m++; } line++; max--; // pk--; } for (char i = 'A'; i <= 'Z'; i++) { gra[line][hang] = i; hang++; } while (p <= line) { for (i = 0; i < 26; i++) { if(gra[p][i] == '*') { printf("*"); } else if(gra[p][i] >= 'A' && gra[p][i] <= 'Z') { printf("%c",gra[p][i]); } if (i != 25) { printf(" "); } } printf("\n"); p++; } return 0; } ```
by Chino @ 2018-06-04 21:40:10


@[Chino](/space/show?uid=64075) 直接粘贴,依旧是WA,并且我在定义gra时用的空格初始化的啊
by jkllage456 @ 2018-06-04 22:29:48


@[Chino](/space/show?uid=64075) 不管怎么样,还是谢谢你愿意花时间来看我的代码。
by jkllage456 @ 2018-06-04 22:30:26


@[jkllage456](/space/show?uid=101521) emmmmm... 你可能搞错了数组的初始化? 其实你这样初始化 只有第一个是空格 其他都是'\0'来的 我给你个图看吧 ![](https://cdn.luogu.com.cn/upload/pic/20650.png) 这一点你误解的话很麻烦的啊... 以后做题出错就懵逼不知道哪里错了 至于为什么还是WA... 应该是算法哪里不对了 其实我并没有太具体看你的代码 不好意思的说.. 只是稍微看了看然后改了下 过了样例就跟你说了... 所以其实我也没帮上啥啦
by Chino @ 2018-06-05 00:55:21


数组初始化用memset,要不直接for循环也行,你这样只初始化了第一个元素
by Pecco @ 2018-07-15 16:45:37


|