60分求助

P1598 垂直柱状图

我把你的用户名看成了零殇 ·落寂
by JRzyh @ 2020-05-19 14:25:17


@[离殇·落寂](/user/251771) 查出来问题了,但是我不知道原因。 ```cpp #include<bits/stdc++.h> using namespace std; int main() { char str[400],str1[100],str2[100],str3[100],str4[100]; gets(str1); gets(str2); gets(str3); gets(str4); strcat(str,str1); strcat(str,str2); strcat(str,str3); strcat(str,str4); int l = strlen(str); for(int i=0;str[i];i++)printf("%d ",str[i]); } ``` 数据: ~~~~ ABHCJDHAJHDJAJHDJAHDAJDH JJADSDKSJDK JDKSJA IIOSID KKKK dIKSIDKSDI ~~~~ 洛谷IDE(C++): >**-32 56 -53 85 11 21** 65 66 72 67 74 68 72 65 74 72 68 74 65 74 72 68 74 65 72 68 65 74 68 72 13 74 74 65 68 83 68 75 83 74 68 75 32 74 68 75 83 74 65 13 73 73 79 83 73 68 32 75 75 75 75 13 100 73 75 83 73 68 75 83 68 73 我这里的本地(C++11)结果: >**-56 -36 72** 65 66 72 67 74 68 72 65 74 72 68 74 65 74 72 68 74 65 72 68 65 74 68 72 74 74 65 68 83 68 75 83 74 68 75 32 74 68 75 83 74 65 73 73 79 83 73 68 32 75 75 75 75 100 73 75 83 73 68 75 83 68 73 就是说被gets函数和strcat函数处理后会出现垃圾值,原因未知。 另外有个小毛病,如果出题人说100个字符以内,你的字符串最好开大一点,字符串结尾是需要加一个'\0'的啊,100个字符的字符串长101。
by Terrible @ 2020-05-19 15:16:29


@[离殇·落寂](/user/251771) 好的我知道了,strcat会寻找str的第一个'\0',因为strcat认为'\0'表示这个字符串的结束,如果你在函数里申请一个字符串的话,它会有一些垃圾值的,就是里面的值不一定是0,这些垃圾值会导致你的程序出错。方法:直接把str[0]赋值=0,或者直接赋初值char str[405]={}。
by Terrible @ 2020-05-19 15:37:32


```cpp #include<bits/stdc++.h> using namespace std; int main() { char str[50]; for(int i=0;i<50;i++) printf("%d ",str[i]); } ``` 这段程序输出: ~~~~ 0 0 -81 -51 64 0 -96 -44 64 0 -1 -1 0 0 24 16 73 0 -32 -1 34 0 -108 92 -64 119 -120 32 -66 119 -64 -1 34 0 -5 -44 64 0 -96 -44 64 0 39 0 0 0 -8 -2 34 0 ~~~~ 如果将char str[405];放到函数外: ```cpp #include<bits/stdc++.h> using namespace std; char str[50]; int main() { for(int i=0;i<50;i++) printf("%d ",str[i]); } ``` 输出: ~~~~ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ~~~~ 放到外面str就成了全局变量,会被赋值为0。
by Terrible @ 2020-05-19 15:51:22


@[离殇·落寂](/user/251771) 末尾不能有多余的空格
by GoldenFishX @ 2020-05-19 16:04:12


感谢各位大佬!!!
by Passer_A @ 2020-05-20 12:07:54


|