有一個函數,
\[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。
流程圖:
答案: