if 语句
一、语法形式:
if(表达式)
语句
表达式成立,执行语句;表达式不成立,则不执行语句。
C语言中,0表示假,非0表示真,也就是说如果表达式的结果是0,不执行语句;表达式结果是非0是,才会执行语句。
来个图:(这个是网上的,便于更清楚的理解)
例如,输入一个数,判断是否为偶数:
# include <stdio.h>
int main()
{
int a;
scanf("%d",&a);
if(a%2==0)
printf("%d是偶数\n",a);
return 0;
}
如果用户输入9,那么9除以2的余数不是0,则9%2==0
这个表达式不成立,所以不会执行后面的语句;如果用户输入8,那么8除以2的余数是0,则8%2==0
这个表达式成立,所以执行后面的语句,输出的结果就是8是偶数
。
二、 else
如果我们要判断一个数是奇数还是偶数,就可以用到else
语法形式:
if (表达式)
语句1;
else
语句2;
例如打印一个数,如果是奇数就输出奇数,否则打印偶数:
# include <stdio.h>
int main()
{
int a;
scanf("%d",&a);
if (a%2==0)
printf("%d是偶数\n",a);
else
printf("%d是奇数\n",a);
return 0;
}
道理同上,如果用户输入3,那么输出的结果是3是奇数
;如果输入的是4,那么输出结果是4是偶数
。
三、分支中包含多条语句
默认情况下,if 和 else语句中都只控制一条语句。
举个例子:
# include <stdio.h>
int main ()
{
int a=0;
scanf("%d",&a);
if (a>=60)
printf("及格了\n");
printf("不用补考\n");
return 0;
}
此时用户不管输入小于60分的成绩,还是大于等于60分的成绩,都会输出不用补考
,由此可见,if
只能控制一条语句,就是printf("及格了\n");
而 printf("不用补考\n");
是独立存在的,不管if
语句的条件是否是真,都会被执行。为了避免这种情况的发生,因此如果我们要if
语句同时控制2条语句,那就要使⽤ {}
将代码括起来,else
后也可以跟上大括号。
例如:
# include <stdio.h>
int main ()
{
int a=0;
scanf("%d",&a);
if (a>=60)
{
printf("及格了\n");
printf("不用补考\n");
}
return 0;
}
此时,输入低于60分的将没有任何输出。
四、嵌套
在 if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断。
例如,要求输入一个整数,判断是0,正数还是负数
# include <stdio.h>
int main()
{
int i=0;
scanf("%d",&i);
if(i==0)
printf("该数是0\n");
else if(i>0) //这里的if就相当于嵌套在else语句中
printf("该数是正数\n");
else
printf("该数是负数\n");
return 0;
}
还比如下面的嵌套if
:
# include <stdio.h>
int main ()
{
int a;
if(a>0)
{
if(a%2==0)
printf("该数是为正数的偶数\n");
else
printf("该数是正数的奇数\n");
}
else
printf("该数是非正数\n");
return 0;
}
五、悬空else
如果出现多个if
和else
,一定要记住这个规则 else 总是跟最接近的 if 匹配。
例子,
错误的写法:
# include <stdio.h>
int main()
{
int a=0;
int i=2;
if(a==1)
if(i==2)
printf("wawawa\n");
else
printf("lalala\n");
return 0;
}
上面的写法,不易理解,会误以为else
与第一个if
匹配,第⼀个 if
语句就不成立,嵌套 if 和 else 就没机会执行了。此时程序不会输出任何东西。
正确写法:(加上{})
# include <stdio.h>
int main()
{
int a=0;
int i=2;
if(a==1)
{
if(i==2)
printf("wawawa\n");
else
printf("lalala\n");
}
return 0;
}
输出还是没有结果,因为if(a==1)
是假,所以if
后面的语句不会执行。
若想有输出:
# include <stdio.h>
int main()
{
int a=0;
int i=2;
if(a==1)
{
if(i==2)
printf("wawawa\n");
}
else
printf("lalala\n");
return 0;
}
此时就会输出lalala
,这样写逻辑更清楚,更便于理解。
【因为此内容(分支和循环)过多,所以我分几期发布,后面会继续发布哒。】