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

有一个函数,

\[y= \begin {cases} -1\qquad(x<0) \\ 0\qquad\ \ \ (x=0) \\ 1\qquad\ \ \ (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\n", 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\n", 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。

流程图:

答案:

posted @ 2020-08-21 18:00  张震新  阅读(1885)  评论(0编辑  收藏  举报