1.if和else语句
1.1 if和else的语法形式
if语句的语法形式如下:
1 if(表达式)
2 语句
表达式成立(为真),则语句执行,表达式不成立(为假)则语句不执行
C语言中0表示假,非0表示真
例子:输入一个整数,判断是否为奇数
#include <stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
if (a % 2 == 1)
printf("a=%d是奇数",a);
return 0;
}
一个数不是奇数就是偶数,如果我们判断任意一个数是奇数还是偶数,这就用到了if······else···语句了语法格式如下:
1 if(表达式)
2 语句1
3 else
4 语句2
例子:输入一个整数,判断是奇数还是偶数并打印出来
#include <stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
if (a % 2 == 1)
printf("%d是奇数",a);
else
printf("%d是偶数",a);
return 0;
}
1.2 if和else多条语句
默认在if和else语句中都只控制一条语句
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
printf("已经成年了\n");
printf("该上大学了\n");
return 0;
}
运行上面代码,会发现不管是>=18还是<18,"该上大学了"都会打印在屏幕上
这是因为 if 语句只能控制⼀条语句,就是 printf("已经成年了\n"); ,if语句为真,则打印成年了,
if语句为假,则不打印,对于 printf("该上大学了\n"); 是独立存在的,不管if语句的条件的真
假,都会被执行。那如果我们要if语句同时控制2条语句,怎么办呢?那就要使用 {} 将代码括起来,else 后也可以跟上大括号。如下:
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
{
printf("已经成年了\n");
printf("该上大学了\n");
}
return 0;
}
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
{
printf("已经成年了\n");
printf("该上大学了\n");
}
else
{
printf("未成年\n");
printf("还没上大学\n");
}
return 0;
1.3 嵌套if
在 if else语句中,else 可以与另一个 if 语句连用,构成多重判断
例如:输入一个整数,判断输入的整数是0,还是正数或者是负数
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if (num == 0)
printf("输入的数字是0");
else if (num > 0)
printf("输入的数字是正数");
else
printf("输入的数字是负数");
return 0;
}
1.4 悬空else问题
如果有多个 if 和 else,else 总是跟最近的 if匹配
例如:
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
if (a == 1)
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
运行代码,输出的结果为什么都没输出,因为else 总是跟最近的 if匹配。
修改代码为下面这样就好理解了
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
if (a == 1)
{
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
}
return 0;
}
如果我们希望 else 与第一个 if 匹配,则可以这样修改代码:
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
if (a == 1)
{
if (b == 2)
printf("hehe\n");
}
else
{
printf("haha\n");
}
return 0;
}