C语言 简单程序找错,在线等,谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/15 07:15:03
#include "stdio.h"
#include "math.h"
void main()
{ float x,y,r; int k;
scanf("%f%f",&x,&y);
r=sqrt(x*x+y*y);
if(r>1)k=2;
else if(r=1)k=1;
else k=0;
printf("%d",k);
getch();
}
题目要求:如果r>1,k=2; r=1,k=1;r<1,k=0;
但是我不管输入任何数输出结果都没有k=0的情况呀,为什么呀

else if(r=1)k=1;
else k=0;

这里错了,应该是r==1
因为r=1是赋值语句 1的值被赋给r 然后返回值是1
所以if语句永远为真 就不会到下面的k=0去了
而r==1是比较 只有当r等于1 条件才成立

概念不清啊,
错误:else if(r=1)k=1;
改为:else if(r == 1) k=1;
= 与 == 区别自已搞定吧

r=sqrt(x*x+y*y);X和Y要在什么情况下R才会小于1呢?好像不成立哦