【C语言】第三篇:分支和循环

C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构

1、if语句

1.1 if

if语句的语法形式如下:

if(表达式)

        语句

表达式成立(为真),则执行语句;表达式不成立(为假) ,则语句不执行

在C语言中,0为假,非0为真

例子:输入一个整数,判断是否为奇数

#include <stdio.h>
int main()
{
    int a = 0;
    scanf("%d",&a);
    if(a%2==1)  //表达式a%2==1成立,执行下面的语句;如果不成立,则不执行
        printf("%d是奇数",a);
    return 0;
}

1.2 else

如果一个数不是奇数,那就是偶数,如果任意一个整数,我们要清楚的判断是奇数还是偶数字母表达?

这里就需要if...else语句了,语法形式如下:

if(表达式)

        语句1

else

        语句2

例子:输入一个整数,判断是否为奇数,如果是奇数打印是奇数,否则打印是偶数

#include <stdio.h>
int main()
{
    int a = 0;
    scanf("%d",&a);
    if(a%2==1) 
        printf("%d是奇数",a);
    else
        printf("%d是偶数",a);
    return 0;
}

1.3 if语句的嵌套

在if else语句中,else语句可以与另一个if语句连用,构成多重判断。

例子:输入一个整数,如果是正数,判断奇偶数,并输出;如果不少正数则输出:非正数

#include <stdio.h>
int main()
{
    int a = 0;
    scanf("%d",&a);
    //外层if结构,判断正负数
    if(a>0) 
    {
        //内层嵌套,判断奇偶数
        if(a%2==1) 
            printf("%d是奇数",a);
        else
            printf("%d是偶数",a);
    }
    else
    {
        printf("%d非正数",a);
    }
    return 0;
}

以上就是嵌套if语句的语法,有了嵌套if语句,就可以完成更复杂的逻辑判断

2、swith语句

2.1 swith语句形式

除了if语句,C语言还提供了switch语句来实现分支结构

switch语句是一种特殊形式的if...else结构,用于判断条件有多个结果的情况。它把1多重else if改成更易用、可读性更好的形式。

switch(expression)

{

        case value1:statement

        case value2:statement

        default value1:statement

}

 上面的代码,根据表达式expression不同的值,执行相应的case分支。如果找不到对应的值,就执行default分支。

注:

  • switch后的expression必须的整型表达式
  • case后的值,必须是整型常量表达式

2.2 if语句和switch语句的对比

例子:输入一个整数,计算除3之后的余数

if语句:

#include <stdio.h>
int main()
{
	int a = 0;
	scanf("%d", &a);
	if (a % 3 == 0)
	{
		printf("整除,余数为0\n");
	}
	else if (a % 3 == 1)
	{
		printf("余数为1\n");
	}
	else
	{
		printf("余数为2\n");
	}
	return 0;
}

switch语句改写:

#include <stdio.h>
int main()
{
	int a = 0;
	scanf("%d", &a);
	switch (a % 3)
	{
	case 0:
		printf("整除,余数为0\n");
		break;
	case 1:
		printf("余数为1\n");
		break;

	case 2:
		printf("余数为2\n");
		break;
	}
	return 0;
}

注意点:每一个case语句中的代码执行完成后,必须加上break,才能跳出这个switch语句

 2.3 switch语句中的default

在使用switch语句的时候,我们经常遇见一种情况,比如switch后的表达式中的值无法匹配代码中的case语句的时候,这时要不就不做处理,要不就得在switch语句后加入default语句

switch(expression)

{

        case value1:statement

        case value2:statement

        default value1:statement

}

 switch后面的expression的结果不是value1,也不是value2的时候,就会执行default子句

 例子:输入1-5的数字,输出“工作日”;输入6-7,输出“休息日”;输入其他数字:输出“输入有误”

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

 2.4 switch语句中的case和default的顺序问题

其实在switch语句中case语句和default语句是没有顺序要求的,只要你的顺序是满足实际需求就可以。

不过我们通常是把default子句放在最后处理的。

3、while循环

C语言提供了3种循环语句,while是其中一种。

while语句的语法结构和if语句非常相似

3.1 if和while对比

if (表达式)
        语句;

while(表达式)

        语句;

 具体写个代码,对比一下:

if语句:

#include <stdio.h>
int main()
{
	if (1)
		printf("Hello World!!");    //if后面的条件满足,打印一次Hello World!!
	return 0;
}

while语句:

#include <stdio.h>
int main()
{
	while (1)
		printf("Hello World!!");    //while后面的条件满足,死循环打印Hello World!!
	return 0;
}

 这就是他们的区别,while语句是可以实现循环效果的。

3.2 while语句的执行流程

首先上来就是执行判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执行循环语句,语句执行完后再继续判断,是否进行下一次判断。

3.3 while循环的实践

例子:在屏幕上打印1-10

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

 4、for循环

4.1 语法形式

for循环是三种循环中使用最多的,for循环的语法形式如下:

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

        语句;//如果循环体想包含更多的语句,可以加上大括号

 表达式1:用于循环变量的初始化;

表达式2:用于循环结束条件的判断;

表达式3:用于循环条件的调整

4.2 for循环的执行流程

 首先执行表达式初始化循环变量,接下来就是执行表达式2的判断部分,表达式2的结果如果==0,则循环结束;表达式2的结果如果!=0则执行循环语句,循环语句执行完后,再去执行表达式3,调整循环变量;然后再去表达式2的地方执行判断,表达式2的结果是否为0,决定循环是否继续。

整个循环的过程中,表达式1初始化的部分只被执行1次。

4.3 for循环的实践

例子:在屏幕上打印1-10

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

5、do...while循环

5.1 语法形式

do

        语句;

while(表达式);

 while和for这两种循环都是先判断,条件如果满足就加入循环,执行循环语句,如果不满足就跳出循环;

而do...while循环则是先直接加入循环体,执行循环语句,然后再执行while后的判断表达式,表达式为真,就会进行下一次,表达式为假,则不再继续循环。

5.2 while循环的执行流程

 在do while循环中先执行语句,执行完语句,再去执行“判断表达式”,判断表达式的结果是·!=0,则继续循环,执行循环语句;判断表达式的结果==0,则循环结束。

所以do...while语句中循环体是至少执行一次的,这是do...while循环比较特殊的地方。

5.3 do...while循环的实践

例子:在屏幕上打印1-10

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

	return 0;
}

6、break和continue语句

在循环执行的过程中,如果某些状况发生的时候,需要提前终止循环,这是非常常见的现象。C语言中提供了break和continue两个关键字,就是应该到循环中的。

  • break的作用是用于永久的终止循环,只要break被执行,直接就会跳出循环,继续往后执行。
  • continue的作用是跳出本次循环continue后面的代码,在for循环和while循环中有所差异的
  • 30
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值