有一个函数,
[y=
egin {cases}
-1qquad(x<0) \ 0qquad (x=0) \ 1qquad (x>0)
end{cases}
]
有人编写了以下两个程序,请分析它们是否能实现题目要求。不要急于上机运行程序,先分析两个程序的逻辑,画出它们的流程图,分析它们的运行情况。然后,上机运行程序,观察和分析结果。
#include <stdio.h>
int main()
{
int x, y;
printf("enter x:");
scanf("%d", &x);
y=-1;
if (x != 0)
if (x > 0)
y=1;
else
y=0;
printf("x=%d,y=%d
", x, y);
return 0;
}
解题思路: if语句使用过程中,else总是匹配距离自己最近的且没有配对的if,因此x!=0具有两种情况x>0和x<0;因此x==0时y保持-1;x!=0&&x>0时y=1;x!=0&&x<0时y=0。
流程图:
答案:
#include <stdio.h>
int main()
{
int x, y;
printf("enter x:");
scanf("%d", &x);
y=0;
if (x >= 0)
if (x > 0) y=1;
else y=-1;
printf("x=%d,y=%d
", x, y);
return 0;
}
解题思路: if语句使用过程中,else总是匹配距离自己最近的且没有配对的if,因此x>=0具有两种情况x>0和x0;因此x<0时y保持0;x>=0&&x>0时y=1;x>=0&&x0时y=-1。
流程图:
答案: