天天看点

【C语言】第二章-分支和循环语句-1

第1节

什么是语句

  在C语言中由一个

;

隔开的就是一个语句。例如

printf("Misaki");

1 + 2;

等等。

分支语句

if语句

  分支语句又叫选择结构,之前为大家演示过的if语句就是一个分支语句,在C语言逻辑中有着大量的使用范畴,是不可或缺的一部分。

  接下来为大家演示if的几种使用形式。

  形式一:

if (表达式)
	语句;
           

  形式二:

if (表达式)
	语句1;
else 
	语句2;
           

  形式三:

if (表达式)
	语句1;
else if (表达式)
	语句2;
else 
	语句三;
           

  简单解释一下,如果if括号中的表达式成立则执行语句1,如果不成立则进入else if表达式进行判断,如果还不成立直接执行else。而在C语言中可没有定义真假的变量,因此我们只好拿整数进行替代。**在C语言中0表示真,非0表示假,**进行条件判断的表达式的值都会用0和非0进行替代(但是一般多拿1来进行表示真的替代)。

  同时我建议在写if语句的时候下面条件执行的语句都能用

{}

来将他们括起来,表示这是一个代码块,这样我们不仅可以在代码块中写多个执行语句,也使程序更加可读。

if (表达式)
{
	语句列表1;
}
else if (表达式)
{
	语句列表2;
}
else
{
	语句列表3;
}
system("pause");
           

  同时有一点需要强调,else永远与上面离它最近的if进行匹, 大家不要被缩进格式所迷惑。接下来进行几个实例演示。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//添加头文件
#include <stdlib.h>
int main()//主函数,函数入口
{
	int coding = 0;
	printf("你会好好敲代码每天三小时,一次500行,不敲够不睡觉,像对待女朋友一样对待她么?\n");
	scanf("%d", &coding);
	if (coding == 1)
	{
		printf("加油坚持你会成功!\n");
	}
	else if(coding == 0)
	{
		printf("回家种田吧!\n");
	}
	else
	{
		printf("犹豫不决你在等什么?\n");
	}
	system("pause");
}
           

  我们的if语句就讲到这里,if语句使用十分简单却也十分灵活,但是大家千万注意尽量少的使用选择嵌套可以增强代码可读性。

switch语句

  switch语句也是一种分支语句,多用于多分支的情况。在某些情况下使用switch往往有着好的效果。

  比如说如果我们要根据用户输入的1-7来打印相应的星期,比如说用户输入1,我们则打印“星期一“”。在这种多分支的情况下,往往是switch语句的拿手好菜。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//添加头文件
#include <stdlib.h>
int main()//主函数,函数入口
{
	int choice = 0;
	printf("请输入数字:");
	scanf("%d", &choice);
	switch (choice)
	{
	case 1:
		printf("星期一\n");
		break;
	case 2:
		printf("星期二\n");
		break;
	case 3:
		printf("星期三\n");
		break;
	case 4:
		printf("星期四\n");
		break;
	case 5:
		printf("星期五\n");
		break;
	case 6:
		printf("星期六\n");
		break;
	case 7:
		printf("星期日\n");
		break;
	default:
		break;
	}
	system("pause");
}
           

  switch的语法很简练,

switch(整形表达式)

,下方的大括号中是一些case语句,

case 整形常量表达式: 语句;

当case后的常量==switch中的整形表达式的值时,case后的语句就会被执行,而switch语句一般都会配备一个

default: 语句;

这是**在case语句没有被匹配上的时候就会执行default语句中的内容。**大家还可以注意到每一个语句后都跟了个

break;

语句,这个break我们在循环中提到过一些,是跳出循环用的,不过在这里则是跳出switch用的,如果不加break语句,程序则会跟着匹配的case一直往下执行语句知道遇到break或者switch语句结束为止,因此break在这里不可或缺的,这也是switch一个很大的缺陷。

  switch虽然适用于多分支条件的情况下,但其本身有着极大的缺陷,并且实际上switch能实现的分支if语句也同样可以实现,有时候反倒会使我们的工作更加简单,因此我并不推荐在程序里经常使用switch,其中可读性低也是很重要的一部分原因。

循环语句

while循环

  while我们在初始C语言的章节已经涉猎,他是非常简单的一种循环语句,因为使用起来和if十分类似,不同点是if语句只判断一次条件,执行完则退出语句,但是while则是在每一轮循环结束后都要重新判断条件,如果条件依然成立则继续执行语句。

  打印0 - 9;

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//添加头文件
#include <stdlib.h>
int main()//主函数,函数入口
{
	int i = 0;
	while (i < 10)
	{
		printf("%d\t", i);
		i += 1;
	}
	printf("\n");
	system("pause");
}
           

  我相信大家对while的用法已经非常熟悉了,但是想要灵活使用我们还要在之后的学习中多加练习!

for循环

  for循环语句是一种相比while更为方便的循环语句,他更加便于书写,可读性更高。

  同样是输出0 - 9我们用for语句再写一遍。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//添加头文件
#include <stdlib.h>
int main()//主函数,函数入口
{
	for (int i = 0; i < 10; i++)
	{
		printf("%d\t", i);
	}
	printf("\n");
	system("pause");
}
           

  for语句语法更为精炼,将循环变量的更新条件的判断,循环变量的初始化融为一体。

for(语句1; 语句2; 语句3)
{
    循环内容;
}
           

  for循环中语句1是循环变量的初始化,永远只执行一次,就是在循环刚开始的时候才执行;语句2则是循环条件的判断,只有在语句2满足的情况下才执行循环内容,语句2在每次循环开始前都要执行进行判断;语句3是循环变量的更新,在while语句中这一条往往是写在循环体里的,而for则将它提炼出来,这条语句在每一次循环结束后都会执行。因此for循环语句的执行顺序大概是:语句1->语句2(条件成立)->循环内容->语句3->语句2(条件成立)->循环内容->语句3->…->语句3->语句2(条件不成立)->循环结束。

  由此可见for循环语句的语法更为精炼快捷易于书写,且可读性更好,这里指的一提的是,for语句中括号里的三条语句都可省略不写,但是分号不可省略,而当语句2省略时则会变成死循环。

  for循环语句还有一些变种,我们之后学习中都会遇到,到时候大家需要小心留意。

do-while语句

  do-while语句是while语句的变种,他们十分相似,唯一不同点是前者执行完一次循环体后才会进行条件判断, 也就是说其至少执行一次。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//添加头文件
#include <stdlib.h>
int main()//主函数,函数入口
{
	int i = 10;
	do 
	{
		printf("%d", i);
	} while (i > 20);
	printf("\n");
	system("pause");
}
           

  从上面这个代码就可以看出明明while()中的条件不符合可依然执行了一次循环体,这就是while的独到之处。

  由于do-while语句使用条件有限,所以使用情况不多,这里不再深入讲解。

继续阅读