为啥这结果不对呀

因为空格也算字符,加三变成了#
如果用gets的话,他就把空格也当成了字符进行计算,如果不想让空格变化的话可以对字符进行判断是否为空格,然后做相关操作。
str1结尾没有加字符串终止符。在循环结束后加上下面语句:
str1[i] = '\0';