if语句
1.1 if
C语言是结构化的程序设计语言,常见的结构有,分支结构,循环结构,选择结构,C语言是可以实现这三种常见的语言结构的,而日常生活中的事物,就可以理解为这三种结构的组合。
我们可以使用if,Switch实现分支结构,for,while,do while来实现选择结构
if语句的格式如下:
1.if(表达式)
2. 语句
若表达式为真,则执行程序,若表达式为假,则程序不执行。
0为假,非0表示真,若表达式结果为0,则为假,若表达式结果为非0,则为真。
例如:判断一个数字是否为奇数,
#include<stdio.h>
int main()
{
int num;
scanf("%d", &num);
if (num % 2 == 0)
printf("该数字不是奇数");
else
{
printf("该数字是奇数");
}
return 0;
}
1.2 else
if......else...的语法格式如下:
1.if(表达式)
2. 语句:
3.else
4. 语句
例子:输入一个年龄,大于等于18显示成年,否则,显示未成年。
#include<stdio.h>
int main()
{
int age;
scanf("%d", &age);
if (age >= 18)
printf("已经成年");
else
printf("还没有成年");
return 0;
}
1.3 分支中包含多条语句
首先,我们先看一段代码:
#include<stdio.h>
int main()
{
int age;
scanf("%d", &age);
if (age >= 18)
printf("成年了");
printf("可以谈恋爱了");
return 0;
}
结果发现,无论是否成年,都会打印出,可以谈恋爱了,这是因为无论是if还是else,默认只能控制一条语句,在上文中,if只能控制那个成年了,第二个就不能控制,那如果我们想要if语句和else语句可以控制多个语句,那该怎么办呢,加上一个{}即可。例如:
#include<stdio.h>
int main()
{
int age;
scanf("%d", &age);
if (age >= 18)
{
printf("成年了\n");
printf("可以谈恋爱了");
}
return 0;
}
这样就好了,其中else同理,也可以加入括号来进行控制。
#include<stdio.h>
int main()
{
int age;
scanf("%d", &age);
if (age >= 18)
{
printf("成年了\n");
printf("可以谈恋爱了\n");
}
else
{
printf("未成年\n");
printf("不可以谈恋爱\n");
}
return 0;
1.4 嵌套if
在if else语句中,else可以和if形成嵌套,从而形成多重判断。
例子:判断一个数是0,负数还是整数
#include<stdio.h>
int main()
{
int num;
scanf("%d", &num);
if (num == 0)
printf("该数字是0");
else
{
if (num > 0)
printf("该数字为正数");
else
printf("该数字为负数");
}return 0;
}
1.5 悬空else问题
如果有多个if和else,记住一条规则,else永远与最近的if相匹配
例如:
#include<stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("hehe\n");
else
printf("haha\n");return 0;
}
可能有很多初学者认为打印出来的值应该是haha,但结果为什么都不会打印,这就是悬空else问题,代码块中的else和第二个if相适应,而第一个if因为表达式错就没法进行下去,所以后续也就不会打印。
如果想要else和第一个if相适应,我们可以这样进行改变
#include<stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
printf("hehe\n");
}
else
{
printf("haha\n");
}
return;
}
这样就好了!!!