[C语言]C语言分支语句与循环(大致讲解)

前言

用 if 语句实现选择结构

用switch 语句实现多分支选择结构

用 for 语句实现循环

用 while 语句实现循环

用 do…while 语句实现循环

continue 和 break 语句的使用

循环的嵌套

goto语句

前言

C 语⾔是结构化的程序设计语⾔,常用的编程结构有三种:顺序结构,选择结构,循环结构。C 语⾔能够实现这三种基本结构,由这三种基本结构组成的程序能处理任何复杂问题。其实我们日常生活中的事情大都可以分为这三种结构。

顺序结构 :顺序结构是最简单的程序设计,输入一段代码,从前往后依次执行,直至结束。

选择结构 :也称分支结构。“选择”顾名思义,就是有选择的执行代码。例如路口有两条路,一条是回家的路,另一条是去往别地的路。而正好你又需要回家,“回家”这个目的就是触发条件。给你一段代码,走到一个有两条路可以走的语句,执行哪一条语句就需要特定条件。

循环结构 :程序会重复执行一段代码,直到触发特定条件而停止。

我们可以使⽤ ifswitch 实现分⽀结构,使⽤ for while do···while 实现循环结构。

用 if 语句实现选择结构

1.C 语言提供了简单的 if 语句和 if···else 语句,可以用来实现单分支和双分支选择结构。

2.简单 if 语句

简单 if 语句的形式为 :

if(表示条件的表达式)
{
    语句体
}

例如:输入一个人的年龄,判断是否成年。可以写出以下语句 :

#include <stdio.h>
int main()
{
    int age;
    scanf("%d",&age);
    if (age >= 18)    //条件
        printf("成年了\n");     //输出语句
    return 0;
}

运行结果 :

18

成年了

表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏。

在C语⾔中,0为假非0表示真,也就是表达式的结果如果是0,则语句不执⾏,表达式的结果如果是不是0,则语句执⾏。

3.if···else语句

if···else语句是标准的 if 语句,用来实现双分支选择结构,其一般形式为 :

if(条件)

{

        语句体1

}

else

{

        语句体2

}

如上段代码 :

#include <stdio.h>
int main()
{
    int age;
    scanf("%d",&age);
    if (age >= 18)    //条件
        printf("成年了\n");     //输出语句
    else
        printf("未成年\n");
    return 0;
}

当我们输入数字 18,这段代码就会打印成年,反之则未成年。

4.嵌套 if

在 if···else 语句中,else 可以与另⼀个 if 语句连⽤,(在 else 部分又嵌套了多层 if 语句)

例如 :

         if ( 表达式1 )

         else if ( 表达式2 )

         else if ( 表达式3 )

         ··········

         else if ( 表达式n )

         else 

例如 :

        if ( num > 100 )

                result = 1;

        else if ( num > 80 )

                result = 2;

        else if ( num > 60 )

                result = 3;

        else 

                result = 0

另外还有一种情况是 else 悬空问题 :例如有两个 if 语句,第一个if 与代码末尾的 else 对齐。但是这个 else 不是与谁对齐就是匹配谁,所以这个'else'与最近 if 匹配。


用switch 语句实现多分支选择结构

switch 语句是 C 语言中又一种实现多分支选择结构的语句,其一般形式是 :

switch (表达式)

{

        case常量表达式1:语句块1

                break;

        case常量表达式2:语句块2

                break;

        ·································

        case常量表达式n:语句块n

                break;

        [defasult;语句块n+1]

}

其中,switch 后面括号内的表达式的数据类型必须是整型表达式。每个 case 后面的“常量表达式”的值各不相同,它们代表着不同的分支。case 后的值,必须是整形常量表达式。

语句执行的过程为:当 switch 后面括号内表达式的值与某个 case 后面的表达式的值相匹配时,则执行该 case 中的语句块,然后由 break 退出 switch 语句结构。

当 switch 后面括号内表达式的值与每个 case 后面的表达式的值不匹配时,则执行 default 中的语句块,default 部分可写可不写。

注意 :①case 和后边的数字之间必须有空格

            ②每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。

switch 语句中 break 语句是⾮常重要的,能实现真正的分⽀效果,当然,break 也不是每个 case 语句都要有,需要根据实际情况来看。

例题 :要求按考试成绩分等级,80分以上为A,60~79为B,50~59为C,60分以下为D,输入等级查看分数范围。

#include <stdio.h>
int main()
{
    char Grade = 0;
    scanf("%c", &Grade);
    printf("Your score in : ");
    switch (Grade)
    {
    case 'A':printf("80~100\n");
        break;
    case 'B':printf("60~79\n");
        break;
    case 'C':printf("50~59\n");
        break;
    case 'D':printf("0~49\n");
        break;
    default :printf("Enter error\n");
    }
    return 0;
}

运行结果 :

A

Your score in : 80~100
 

在上述代码中 case 与 default 语句是没有顺序要求的,不过我们通常是把 default 子句放在最后处理。

注意 :一般情况下,在执行一个 case 子句后,应用 break 跳出 switch 结构,但最后一个 default 子句中不用加 break ,因为程序已经走到 switch 结构结束。


用 for 语句实现循环

for 语句是循环里用的最多的, for 循环的语法形式如下:

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

循环体语句;

常见的形式为 :

for ( 初始表达式; 循环表达式; 变量增值表达式 )

{

        循环体语句;

}

for 循环语句的执行过程 :

①先执行初始表达式。

②计算循环条件表达式,若为非0(真),则执行循环体;若为0(假),则结束循环。

③计算变量增值表达式,然后重复执行第②步。

例如 :

#include <stdio.h>
int main()
{
    int i = 0;
    for ( i = 1; i <= 10; i++ )  //i由1变道10,循环10次
    printf("%d ",i);         //执行for循环,输出i的值
    return 0;
}

运行结果 :

1 2 3 4 5 6 7 8 9 10


用 while 语句实现循环

1.while 语句的一般格式

while 语句也是循环控制语句,其一般形式为 :

while  ( 表达式 )

{

        语句体;

}

2.while 语句的执行过程

首先计算表达式的值。如果为非0(真),则执行循环体,然后重新计算表达式的值,并再次判断值是否为真,如果为真,则继续执行,若为0(假),则推出循环结构。

3.while 语句的实践

应用上述例题:在屏幕上打印1~10的值。。

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

运行结果 :

1 2 3 4 5 6 7 8 9 10

while 语句可简单地记为 :只要当循环条件为真,就执行循环体语句。

但为了使循环控制更加灵活,C 语言允许在特定条件成立时,使用break语句强制结束循环。

当有两个循环体时,内层循环使用break语句只能退出内循环。


用 do…while 语句实现循环

除了 while 语句之外,C 语言还提供了 do···while 语句来实现循环结构,不过在几种循环中使用最少。

1. do···while 语句的一般格式

do

{

        语句体;

}while ( 表达式 );

2. do···while 语句的执行过程

while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳出循环

do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式,表达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环

3.do···while 语句的实践

还是以上面打印1-10为例 :

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

运行结果 :

1 2 3 4 5 6 7 8 9 10


continue 和 break 语句的使用

在循环执⾏的过程中,在某些情况下有时需要提早结束正在执行的循环操作。C 语⾔中提供了  break 和 continue 两个关键字,就是应用到循环中的语句。

1.用 break 语句提前终止循环

如前所述,用 break 语句可以使跳出 switch 结构,继续执行 switch 下面的一个语句。实际上, break 语句话可以用来从循环体内跳出循环体,即提前结束循环,接着执行下面的语句。

break 的作用是⽤于永久的终止循环,只要 break 被执行,直接就会跳出循环继续往后执行

2.用 continue 语句提前结束本次循环

有时不想终止整个循环,而只想提前结束本次循环,接着执行下次循环,这时应使用 continue 语句

continue 的作用是跳过本次循环后边的代码,在 for 循环和 while 循环中有所差异

例如 :要求输出0~50不能被3整出的数。

int main()
{
	int n;
	for (n = 1; n <= 50; n++)
	{
		if (n % 3 == 0)
			continue;
		printf("%d   ", n);
	}
	return 0;
}

运行结果 :

1    2    4    5    7    8    10    11    13    14    16    17    19    20    22    23    25    26    28    29  31    32    34   35    37    38    40    41    43    44    46    47    49    50


循环的嵌套

一个循环体内又包含另一个循环结构称为循环的嵌套。内嵌的循环还可以嵌套循环,这就是多层循环。

3 种循环 ( while循环、do···while 循环和 for 循环 )都可以相互嵌套。

例如,下面六种都是符合的。

 例题 :要求打印1-100之间的素数。

#include <stdio.h>
int main()
{
	int i = 0;
	//循环产⽣1~100的数字
	for (i = 1; i <= 100; i++)         		//判断i是否为素数		                                    
	{                                       //循环产⽣2~i-1之间的数字
		int j = 0;
		int flag = 1;   //假设i是素数
		for (j = 2; j < i; j++)
		{
			if (i % j == 0)
			{
				flag = 0;
				break;
			}
		}
		if (flag == 1)
			printf("%d ", i);
	}
	return 0;
}

运行结果 :

1       2       3       5       7       11       13       17       19       23       29       31       37       41      43     47     53     59     61      67      71       73       79       83       89       97


goto语句

在C语言中,使用goto语句可以跳转到程序中的某个标记位置。常用于处理特殊情况,或者在某些情况下简化程序结构。

但 goto 语句如果使用不当,就会导致在函数内部随意乱跳转,打乱程序的执行,所以能不用尽量不用。

goto 语句的基本用法

goto 标记名;
...
标记名:语句;

其中,标记名是一个标识符,后面接一个冒号(:),表示这是一个标记位置。goto语句执行时,会跳转到标记名所在的位置,并从那里开始执行后面的语句。

例如 :

int main()
{
	printf("Hello\n");
	goto next;
	printf("Hi\n");  //跳过了Hi的打印
next:
	return 0;
}

运行结果 :

Hello

因本人能力有限,若文中有不当之处请多多包涵。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

H193750

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值