C语言之if语句详解
简介
在C语言中有三种结构,顺序结构,选择结构以及循环结构。在日常生活中一些常见的事情都可拆分为这三种结构或这三种结构的组合。在C语言中,我们可以用if、switch实现分支结构,使用for、while、do while实现循环结构。在本篇博客中将先介绍分支结构。
1.if语句
1.1 if else语句格式
if语句的语法形式如下:
1 if ( 表达式1 )
2 语句1;
3 else ( 表达式2 )
4 语句2;
在以上形式中,若表达式为真,即表达式是非0的值,则会继续执行下面的语句,若表达式为假,即表达式的值为0,则不执行。if ( 表达式 )后面不可加分号,否则无论表达式为真假都不执行下面语句
例子:输入一个正整数,判断是奇数还是偶数,如果是奇数则打印奇数,是偶数则打印偶数。
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if (num % 2 == 1)
printf("%d 是奇数\n", num);
else
printf("%d 是偶数\n", num);
return 0;
}
1.2 分⽀中包含多条语句
在一个if语句中,默认一个if和else语句中默认都只控制一条语句。如果需要控制两条及以上语句需要用{ }将其扩起来。
比如:
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)//if 后使⽤{} 控制多条语句-这个块也叫:程序块,或者复合语句
{
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", &age);
if (num == 0)
printf("输⼊的数字是0\n");
else if (num > 0)
printf("输⼊的数字是正数\n");
else
printf("输⼊的数字是负数\n");
return 0;
}
1.4 悬空else问题
如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配。如果没用{ }将代码括起来,那么else会和最近的if匹配。
例子如下:
#include <stdio.h>
int main()
{
int a = 1;
int b = 2;
if (a == 0)
if (b == 2)
printf("hi\n");
else
printf("Hello World!\n");
return 0;
}
解释:对初学者来说,看到a是1,不等于0,直接跳到else语句,打印Hello World!。正如上面所说,else匹配的是最近的else,所以这段代码不会打印任何东西。换个写法代码思路就清晰了。在写代码中应适当添加括号,提高代码的可读性,从开始培养代码风格。
#include <stdio.h>
int main()
{
int a = 1;
int b = 2;
if (a == 0)
{
if (b == 2)
printf("Hi\n");
else
printf("Hello World!");
}
return 0;
}
1.5 小练习
学会了if语句,现在可以开始做一写简单的题目了
题目:输入一个年份year,判断year是否是闰年
润年的判断规则:
- 能被4整除的并且不能被100整除的是闰年
- 能被400整除的是闰年
实现代码如下:
#include <stdio.h>
//方法一
int main()
{
int year = 0;
scanf("%d", &year);
if (year % 4 == 0 && year % 100 != 0)
printf("%d年是闰年\n",year);
else if (year % 400 == 0)
printf("%d年是闰年\n",year);
return 0;
}
//方法2
int main()
{
int year = 0;
scanf("%d", &year);
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
printf("是闰年\n");
return 0;
}