C语言大神帮看,为什么输入1之后输出为空白

#include<stdio.h>
int main()
{
int i,sum=0,a1=1,a2=1,k;
scanf("%d",&k);
if(k==1||k==2) printf('1');
else for (i=3;i<=k;i++)
{
sum=a1+a2;
a1=a2;
a2=sum;
} printf("%d",sum);
return 0;} 第五行的问题,为什么输入1之后不输出数字

程序有一点小BUG,第五行单引号应该变成双引号。
除此之外是没问题的,输入1后会输出数字1,然后不换行,之后输出sum的值0,所以你看到的输出应该是10。
但我猜测,你想要的效果可能不是这样,或许你可以在第五行输出中加上\n,在第六行else后和倒数第二行末尾分别添上左右大括号,看看这是不是你想要的。
另外,之前那个回答不用太在意,他没看题目,批量复制骗采纳的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-10-16
你这里有一个笔误
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程序>> 这本书追问

大神,我是新手,能说的简单一些吗,这个答案看不懂啊