C语言知识(1)—分支和循环语句简述(1)

前言:

  C语言是一门结构化的程序设计语言;C语言的目的是为了解决生活中的方方面面的事情,因此衍

生了三种结构:①、顺序结构  ②、选择结构  ③、循环结构。下文主要对选择(分支)语句和循环

语句进行简述。                                                                                                             

分支语句:①、if 语句  ②、switch 语句

循环语句:①、while 语句  ②、for 语句  ③、do while 语句

一、什么叫语句 ?

语句的分类:①、表达式语句  ②、函数调用语句  ③、控制语句   ④、 复合语句   ⑤、空语句 

本文主要介绍控制语句:控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言

支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种

控制语句,可以分为三大类:

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

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

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

二、分支语句(选择语句)

2.1、if语句

2.1.1、语法结构:

①、if(表达式)                                           

           语句;

②、if (表达式)   

           语句1;

        else

            语句2;

③、if(表达式1)

            语句1;

        else if (表达式2)

            语句2;

        else

            语句3;

举例1:

#include <stdio.h>
int main()
{
	int age = 10;
	if (age < 18)
		printf("未成年\n");
	return 0;
}

分析:if语句括号内的如果为真,则执行下面的语句,为假则不执行。

举例2:

#include <stdio.h>
int main()
{
	int age = 20;
	if (age < 18)
		printf("未成年\n");
	else
		printf("成年\n");
	return 0;
}

分析:if else语句适合非此即彼的情况

注:一条if 和 else语句默认只能控制一条语句,如果要控制多条语句需要加{  }。

#include <stdio.h>
int main()
{
	int age = 20;
	if (age < 18)
	{
		printf("未成年\n");
		printf("不能饮酒");
	}
	else
	{
		printf("成年\n");
		printf("适量饮酒\n");
	}
	return 0;
}

举例3:

#include <stdio.h>
int main()
{
	int age = 0;
	scanf("%d",&age);
	if (age < 18)
		printf("少年\n");
	else if (age >= 18 && age <= 30)
		printf("青年\n");
	else if (age >= 31 && age <= 45)
		printf("中年\n");
	else if (age >= 46 && age <= 60)
		printf("壮年\n");
	else if (age >= 61 && age <= 90)
		printf("老年\n");
	else
		printf("老寿星\n");

	return 0;
}

分析:多分支情况

注:在C语言中0表示假,非0表示真  !!!

2.1.2、悬空 else

在if else语句中 else 是和距离最近的 if 语句进行匹配

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if (a == 1)
        if (b == 2)
            printf("hehe\n");
        else
            printf("haha\n");
    return 0;
}

分析:上面一段代码无结果,下面一个 else 与第二个 if 相匹配,由于第一个 if 为假则直接结束。

2.2、switch语句

 switch语句也是一种分支语句。 常常用于多分支的情况。

下面通过一个一个例子进行说明:

#include <stdio.h>
int main()
{
	int day = 0;
	scanf("%d",&day);
	if (1 == day)
		printf("星期1\n");
	else if (2 == day)
		printf("星期2\n");
	else if (3 == day)
		printf("星期3\n");
	else if (4 == day)
		printf("星期4\n");
	else if (5 == day)
		printf("星期5\n");
	else if (6 == day)
		printf("星期6\n");
	else if (7 == day)
		printf("星期天\n");

	return 0;
}

这事一个用 else if 语句来显示星期几的代码。但用switch case 语句可以怎么写呢?

#include <stdio.h>
int main()
{
	int day = 0;
	scanf("%d",&day);
	switch (day)
	{
	case 1:
		printf("星期1\n");
		break;
	case 2:
		printf("星期2\n");
		break;
	case 3:
		printf("星期3\n");
		break;
	case 4:
		printf("星期4\n");
		break;
	case 5:
		printf("星期5\n");
		break;
	case 6:
		printf("星期6\n");
		break;
	case 7:
		printf("星期天\n");
		break;
	}
	return 0;
}

注意:switch语句中switch括号内必须是整型表达式,case后必须是整型常量表达式。

在某些情况下switch case语句更加简介明了:

#include <stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日\n");
		break;
	case 6:
	case 7:
		printf("休息日\n");
		break;
	default:
		printf("输入错误\n");
        break;
	}
	return 0;
}

注:default处理非case语句的情况,写在任何一个 case 标签可以出现的位置。 当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。 所以,每个switch语句中只能出现一条default子句。 但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。

编程好习惯 :在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个break 。

三、循环语句

分类:      ①、while循环                 ②、for循环                      ③、do while循环

3.1 while 循环

接下来以一个例子来进行说明:在屏幕上打印1-10的数字。

#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		printf("%d\n",i);
		i++;
	}

	return 0;
}

3.1.1、while语句中的break和continue

#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (5 == i)
			break;
		printf("%d\n",i);
		i++;
	}
	return 0;
}

分析:在while语句中加入break,只要遇到break,就停止后期的所有的循环,直接终止循环。

因此:while中的break是用于永久终止循环的。

#inciude <stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (5 == i)
			continue;
		printf("%d\n",i);
		i++;
	}
	return 0;
}

分析:continue是用于跳过本次循环后面的部分,也就是本次循环中continue后边的代码不会再执

行, 而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。

3.2、for循环

3.2.1格式:

                 for (表达式1;表达式2;表达式3)

                  循环语句;

表达式1:表达式1为初始化部分,用于初始化循环变量的。

表达式2:表达式2为条件判断部分,用于判断循环时候终止。

表达式3:表达式3为调整部分,用于循环条件的调整。

由于在for循环之中初始化、判断、调整三个是在同一步之中,所以for循环是优于while循环的。

#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		printf("%d\n",i);
	}

	return 0;
}

3.2.2、在 for 循环中的 break 和 continue

#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
			break;
		printf("%d\n",i);
	}

	return 0;
}

分析:可以看到程序只到4就停止了

#include <stdio,h>
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
			continue;
		printf("%d\n",i);
	}

	return 0;
}

3.2.3 for语句的循环控制变量

两点建议:

1. 不可在for 循环体内修改循环变量,防止 for 循环失去控制。

2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法。

3.2.4 for循环的一些变种

for循环中的初始化部分,判断部分,调整部分是可以省略的。但是省去判断部分就意味着判断恒为真。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值