有人编写了以下两个程序,请分析它们是否能实现题目要求。不要急于上机运行程序,先分析两个程序的逻辑,画出它们的流程图,分析它们的运行情况。然后,上机运行程序,观察和分析结果

有一个函数,

[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。

流程图:

答案:

原文地址:https://www.cnblogs.com/weiyidedaan/p/13542371.html