C语言之if语句详解

C语言之if语句详解

简介

在C语言中有三种结构,顺序结构选择结构以及循环结构。在日常生活中一些常见的事情都可拆分为这三种结构或这三种结构的组合。在C语言中,我们可以用ifswitch实现分支结构,使用forwhiledo while实现循环结构。在本篇博客中将先介绍分支结构。

1.if语句

1.1 if else语句格式

if语句的语法形式如下:

1   if ( 表达式1 )
2         语句13   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语句中,默认一个ifelse语句中默认都只控制一条语句。如果需要控制两条及以上语句需要用{ }将其扩起来。
比如

#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是否是闰年
润年的判断规则:

  1. 能被4整除的并且不能被100整除的是闰年
  2. 能被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;
}
  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

4U247

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值