大家好,很高兴能再次和大家见面。经过前面的学习与分享,我相信不仅是我自己,各位朋友也应该对C语言有了一个基本框架,今天起咱们正式开始去完善框架内的内容。今天的内容是分支与循环,接下来我们开始今天的内容。

一、什么是C语言?

C语言是一门 结构化 的程序设计语言。

二、C语言有哪些结构?

在我们生活中有三种结构:

1.顺序结构:从开始一直到结束,按部就班的完成任务;

2.选择结构:开始后会面临多种情况需要进行判断,做出选择,每个选择都可能产生不同的结果;

3.循环结构:开始后会因为某些原因,需要一只重复去做一件事,除非中途出现了其它的情况不得不停止,否则会一直持续到完成某种条件才能停止。

三、语句

(一)什么是语句?

在C语言中,由一个分号";"隔开的,就是一条语句

1.分类:

C语句可分为以下五类:

(1)表达式语句;(2)函数调用语句;(3)控制语句;(4)复合语句;(5)空语句;

本篇介绍的是控制语句。

2.控制语句:

定义:用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。

分类:

1.条件判断语句也叫分支语句:if语句、switch语句;

2.循环执行语句:do while语句、while语句、for语句;

3.转向语句:break语句、goto语句、continue语句、return语句。

(二)分支语句

在C语言中,选择结构的体现就是选择语句,也叫分支语句。在初识C语言中我们有提到过,如果你选择……你就能……;否则,你就会……;这个就是选择!当然有时候我们的选择不一定只有两种,可能还会出现三种及以上的情况,这些都是选择。下面我们来介绍一下在计算机里是如何描述这些选择的。

if语句:

//if语句语法结构;
//单if语句;
if (表达式)//表达式结果为真,则执行语句,否则,不执行;
{
	语句;
}
//if ……else语句;
if (表达式)//表达式结果为真,则执行语句1;
{
	语句1;
}
else//表达式结果不为真,则执行语句2;
{
	语句2;
}
//if……else if……else多分支语句;
if (表达式1)//表达式1结果为真,则执行语句1;
{
	语句1;
}
else if (表达式2)//表达式2结果为真,则执行语句2;
{
	语句2;
}
else//表达式1/2结果都不为真,则执行语句3;(注:可以省略)
{
	语句3;
}

练习:输出1~100之间的奇数;

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>

int main()
{
	for (int i = 1; i <= 100; i++)
	{
		if (i % 2 == 1)//判断i/2的余数是否为1,建议写成(1 == i % 2);
		{
			printf("奇数:%d\n", i);//输出1~100之间的奇数;
		}
	/*	else
		{
			printf("偶数:%d\n", i);//输出1~100之间的偶数;
		}*/
	}
	return 0;
}

计算机小白的成长历程——分支与循环(1)_控制语句

补充知识点:

1.在C语言中判断真假:0为假,非0为真;

2.在if语句中判断对象有3个及以上的话,不能直接写为a>b>c这种形式,因为此时计算机的运行顺序是先判断啊a>b,结果为真则判断1>c,这里的1就是a>b的判断结果,结果为假,则判断0>c,这里的0就是a>b的结果,所以我们应该采用逻辑操作符来进行描述,如:a>b && b>c;

3.判断对象如果是变量和常量之间的判断,建议写成常量判断变量,如i == 5可以将这个表达式写成5 == i;

4.在if语句中,如果判断为真时,执行的语句只有一项,则代码块也就是大括号{}可以省略,有多项执行语句时,需要加上代码块,如:

//单个语句需要执行;
if (condition)//condition——条件
语句1;
//多个语句需要执行;
if (condition)
{
	语句1;
	语句2;
	……
}

建议大家不管是要执行一个语句还是执行多个语句,都要加上代码块,养成良好的编码习惯;

5.在if语句中,else遵循就近原则,这里的就近是指离else最近的且未被搭配的if进行搭配:

//else遵循就近原则
if (condition1)//在此情况下,没有对应的else与之搭配;
if (condition2)//在此情况下,下面的else与之搭配;
语句1;
else//在此情况下,else与第二个if搭配;
语句2;

这种结构叫做if嵌套,将第二个if语句嵌套在第一个if语句内,这里我们举例来进一步理解:

计算机小白的成长历程——分支与循环(1)_#include_02

计算机小白的成长历程——分支与循环(1)_#include_03

这里我们可以看到,第一个else与第二个if在同一列,第二个else与第一个if在同一列,这个语句翻译过来就是:如果在满足a>b的前提下,还满足b>c,则打印min=c,如果在满足a>b的前提下不满足b>c,则打印min=b;如果不满足a>b的前提,则打印无法判断。

6.在多分支语句中,else可以省略:

//多分支语句可以省略else
//双分支语句
if (condition)
{
	语句1;
	return 0;
}
语句2;
//三分支及以上语句1
if (condition1)
{
	语句1;
	return 0;
}
else if (condition2)
{
	语句2;
	return 0;
}
语句3;
//三分支及以上语句2
if (condition1)
{
	语句1;
}
else if (condition2)
{
	语句2;
}

这里我们举几

个例子分别来验证一下:

双分支语句:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>

int main()
{
	int x = 3, y = 2;
	if (x > y)
	{
		printf("max=%d\n", x);
		return 0;
	}
	printf("max=%d\n", y);
	return 0;
}

计算机小白的成长历程——分支与循环(1)_控制语句_04

计算机小白的成长历程——分支与循环(1)_if语句_05

这里我们可以看到,此时if语句正常执行,else被省略。下面我们来看看多分支语句:

多分支循环1:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>

int main()
{
	//比较三个数的大小
	int a = 2, b = 1, c = 3;
	if (a > b && b > c)
	{
		printf("max=%d\n", a);
		printf("a>b>c");
		return 0;
	}
	else if (a > c && c & b)
	{
		printf("max=%d\n", a);
		printf("a>c>b");
		return 0;
	}
	else if (b > a && a > c)
	{
		printf("max=%d\n", b);
		printf("b>a>c");
		return 0;
	}
	else if (b > c && c > a)
	{
		printf("max=%d\n", b);
		printf("b>c>a");
		return 0;
	}
	else if (c > a && a > b)
	{
		printf("max=%d\n", c);
		printf("c>a>b");
		return 0;
	}
	printf("max=%d\n", c);
	printf("c>b>a");
	return 0;
}

计算机小白的成长历程——分支与循环(1)_控制语句_06

这里我们可以看到,程序正常比较三个数的大小,并且最后一种可能也没有因为省略了else而打印,下面我们再来看最后一种情况:

计算机小白的成长历程——分支与循环(1)_if语句_07

这里我们是把最后一种情况用else if来表示出来,最后并未使用else,程序正常比较3个数的大小。

现在我们来对可以省略else的情况做个总结:

1.在多分支语句中,如果执行语句里带有转向语句如return语句,则不满足判断条件需要执行else语句时,else可以省略;

2.在多分支语句中,在不需要用到else判断条件的情况下,可以省略else。

if语句到这里就全部介绍完了,如果后续有遇到新的知识点,我也会第一时间分享出来,今天的内容到这里就结束了,希望这篇内容能帮助大家更好的去理解if语句,感谢大家的翻阅,咱们下一篇见。