分支与循环

本文介绍了编程中的三种基本结构:顺序结构、选择结构(分支结构)和循环结构。在循环结构中,详细讲解了while、do-while和for循环的工作原理和应用场景,并给出了示例代码。对于选择结构,阐述了if-else语句和switch-case语句的用法,以及如何根据条件执行不同的代码块。此外,提到了break和continue语句在控制循环流程中的作用。
摘要由CSDN通过智能技术生成

三大结构

顺序结构:从头到尾依次执行。

选择结构(分支结构):可以选择要执行的代码,也就是说只执行当前有用的。

循环结构:不断重复执行同一段代码,直至不符合条件。

循环语句

while语句

表现形式

while(表达式){
    语句块
}

意思是先判断表达式(循环条件)的值,当表达式里面的值为真(非0)时,执行“语句块”(循环体);执行完“语句块”,再次计算表达式的值,如果为真,继续执行“语句块”,直至表达式的值为假(0)。跳出循环,执行while后面的代码。

例:用 while 循环计算1加到100的值

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

 输出5050

代码分析:
1) 程序运行到 while 时,因为 i=1,i<=100 成立,所以会执行循环体;执行结束后 i 的值变为 2,sum 的值变为 1。

2) 接下来会继续判断 i<=100是否成立,因为此时 i=2,i<=100 成立,所以继续执行循环体;执行结束后 i 的值变为 3,sum 的值变为3。

3) 重复执行步骤 2)。

4) 当循环进行到第100次,i 的值变为 101,sum 的值变为5050;因为此时 i<=100 不再成立,所以就退出循环,不再执行循环体,转而执行while循环后面的代码。

while 循环的整体思路是这样的:设置一个带有变量的循环条件,也即一个带有变量的表达式;在循环体中额外添加一条语句,让它能够改变循环条件中变量的值。这样,随着循环的不断执行,循环条件中变量的值也会不断变化,终有一个时刻,循环条件不再成立,整个循环就结束了

do-while循环


do-while循环的一般形式为:

do{
    语句块
}while(表达式);

do-while循环与while循环的不同在于:它会先执行“语句块”,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while 循环至少要执行一次“语句块” 

例: 用 do while 循环计算1加到100的值

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

for 

for 循环的一般形式为:

for(表达式1; 表达式2; 表达式3){
    语句块
}

计算1加到100的值 

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

 它的运行过程为:
1) 先执行“表达式1”。

2) 再执行“表达式2”,如果它的值为真(非0),则执行循环体,否则结束循环。

3) 执行完循环体后再执行“表达式3”。

4) 重复执行步骤 2) 和 3),直到“表达式2”的值为假,就结束循环。

上面的步骤中,2) 和 3) 是一次循环,会重复执行,for 语句的主要作用就是不断执行步骤 2) 和 3)。

for( ; ; )  语句 相当于while(1)  语句

选择结构(分支)

if-else

在C语言中,使用ifelse关键字对条件进行判断。请先看下面的代码:

运行结果 

输入:4

输出 :输入的为正数


if 和 else 是两个新的关键字,if 意为“如果”,else 意为“否则”,用来对条件进行判断,并根据判断结果执行不同的语句。总结起来,if else 的结构为:

if(判断条件)

{
    语句块1
}

else

{
    语句块2
}

其图解

 由于if else 语句可以根据不同的情况执行不同的代码,所以也叫分支结构或选择结构,上面的代码中,就有两个分支。

也可以单独使用 if 语句的形式为

if(判断条件){
    语句块
}

if else 语句也可以多个同时使用,构成多个分支,形式如下: 

if(判断条件1){
    语句块1
} else  if(判断条件2){
    语句块2
}else  if(判断条件3){
    语句块3
}else  if(判断条件m){
    语句块m
}else{
     语句块n
}

从上到下依次检测判断条件,当某个判断条件成立时,则执行其对应的语句块,然后跳到整个 if else 语句之外继续执行其他代码。如果所有判断条件都不成立,则执行语句块n,然后继续执行后续代码。

也就是说,一旦遇到能够成立的判断条件,则不再执行其他的语句块,所以最终只能有一个语句块被执行 

if语句的嵌套

if 语句嵌套时,要注意 if 和 else 的配对问题。C语言规定,else 总是与它前面最近的 if 配对

switch case语句

#define  _CRT_SECURE_NO_WARNINGS 1
switch (expression)  //必须是整型  字符也可以  明确计算某个值的话,用switch;
#include <stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
	switch (num % 3)
	{
	case 0://整型常量表达式
		printf("余数是0");break;
	case 1:
		printf("余数是1");break;
	case 2:
		printf("余数是2");break;

	}
	return 0;
}

其结构

switch(表达式){
    case 整型数值1: 语句 1;
    case 整型数值2: 语句 2;
    ......
    case 整型数值n: 语句 n;
    default: 语句 n+1;
}

它的执行过程是:
1) 首先计算“表达式”的值,假设为 m。

2) 从第一个 case 开始,比较“整型数值1”和 m,如果它们相等,就执行冒号后面的所有语句,也就是从“语句1”一直执行到“语句n+1”,而不管后面的 case 是否匹配成功。

3) 如果“整型数值1”和 m 不相等,就跳过冒号后面的“语句1”,继续比较第二个 case、第三个 case……一旦发现和某个整型数值相等了,就会执行后面所有的语句。假设 m 和“整型数值5”相等,那么就会从“语句5”一直执行到“语句n+1”。 

4) 如果直到最后一个“整型数值n”都没有找到相等的值,那么就执行 default 后的“语句 n+1”。 

如果想跳过后面的其他分支。为了达到这个目标,必须要在每个分支最后添加break;语句。

还有一种现象

#include <stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
	switch (num)
	{
	case 0://整型常量表达式
	case 1:
	case 2:
	case 3:
		printf("上半周");break;
	case 4:
	case 5:	case 6:	case 7:
		printf("下半周");break;	
	default("输入错误");break;
	}  
	return 0;

最后

1. case 后面必须是一个整数,或者是结果为整数的表达式

2.default 不是必须的。当没有 default 时,如果所有 case 都匹配失败,那么就什么都不执行。

break 语句

break (跳出当前循环)专门用于跳出 switch 语句。所谓“跳出”,是指一旦遇到 break,就不再执行 switch 中的任何语句,包括当前分支中的语句和其他分支中的语句;也就是说,整个 switch 执行结束了,接着会执行整个 switch 后面的代码。
 

continue语句

continue 语句的作用是跳过循环体中剩余的语句而强制进入下一次循环。continue语句只用在 while、for 循环中

break与continue的对比:break 用来结束所有循环,循环语句不再有执行的机会;continue 用来结束本次循环,直接跳到下一次循环,如果循环条件成立,还会继续循环。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值