#t222. 判断数正负

判断数正负

判断数正负

题目描述

给定一个整数 N\,N,判断其正负。

输入格式

一个整数  N(−109≤N≤109)\,N(-10^9 \le N \le 10^9)。

输出格式

如果 N>0\,N \gt 0, 输出 positive;

如果 N=0\,N = 0, 输出 zero;

如果 N<0\,N \lt 0, 输出 negative。

样例输入

1

样例输出

positive

提示

一、if 让程序「看情况做不同的事」

前面所有题都是从上到下一条道走到黑。从这道题开始,程序要会判断。看一个完整例子(判断是否成年):

int age = 20;
if (age >= 18) {
    printf("adult\n");
} else {
    printf("minor\n");
}

age 是 20,条件 age >= 18 成立,所以走第一个分支,输出 adult。如果 age 是 10,就跳过第一个分支、走 else,输出 minor。

if 的通用形状是:if (条件) { 成立时做什么 } else { 不成立时做什么 }。花括号里的内容可以有多条语句;只有一条时花括号可以省,但建议永远写,省了很容易出错。

二、条件怎么写

用比较运算符,两边各是一个值:

运算符 含义 例子
> 大于 n > 0
< 小于 n < 0
>= 大于等于 n >= 10
<= 小于等于 n <= 99
== 等于 n == 0
!= 不等于 n != 0

比较的结果是一个 bool(布尔值),只有 true(真)和 false(假)两种。

三、= 和 == 是两回事(最致命的错误)

  • n == 0 是判断 n 等不等于 0,结果是 true 或 false;
  • n = 0 是赋值,把 0 存进 n,整个式子的值是 0(也就是假)。

写 if (n = 0) 编译器可能只给个警告,运行时条件永远为假,而且 n 被你改成了 0。判断相等永远写两个等号。

四、多分支:else if

int age = 20;
if (age < 12) {
    printf("child\n");
} else if (age < 18) {
    printf("teen\n");
} else {
    printf("adult\n");
}

执行顺序:从上往下,第一个为真的分支执行,其余全部跳过。所以三个分支互斥,不会同时执行。

五、四个必踩的坑

写法 后果
if (n > 0); 后面多一个分号 if 空转,后面的代码无条件执行
if (n > 0) 后漏花括号,却写了两条语句 只有第一条受 if 控制
if (0 < n < 10) 永远为真,要写 n > 0 && n < 10
用中文括号或中文分号 编译报错

六、自检

拿题目给的每个样例,自己在纸上走一遍:条件是真还是假?走哪个分支?输出应该是什么?再和程序输出对照。

  • 三种情况互斥,按「>0、=0、<0」的顺序写 if-else 链即可。
  • 判断相等时检查是不是写了两个等号。

自查:输出的是三个小写单词,照题面原样打;用 0 这个边界值单独测一次。