程序有一点小BUG,第五行单引号应该变成双引号。
除此之外是没问题的,输入1后会输出数字1,然后不换行,之后输出sum的值0,所以你看到的输出应该是10。
但我猜测,你想要的效果可能不是这样,或许你可以在第五行输出中加上\n,在第六行else后和倒数第二行末尾分别添上左右大括号,看看这是不是你想要的。
另外,之前那个回答不用太在意,他没看题目,批量复制骗采纳的。
你这里有一个笔误
if(*(p+i-1)=' '&&'a'<=*(p+i)&&*(p+i)<='z')//找到空格后的首字符
---->
if(*(p+i-1)==' '&&'a'<=*(p+i)&&*(p+i)<='z')//找到空格后的首字符
这里就C语言的缺陷和陷阱,
对于这样的问题,C编译器不会报错
将==判断的常量写在左边是个好的习惯,这样编译器就可以在编译的阶段就报错了,例如:
本意是要做如下判断
if(a == 0), 写成了 if(a=0) 编译器是不会报错的,
如果把if(0 == a) 写成了 if(0=a)编译器就会报错
所以,把判断等式的常量写在左边,是一个好的编程习惯,
建议你看看<< 高质量C程序>> 这本书