C语言学习:分支和循环语句

目录

一、分支语句

1.if语句

2.else语句 

3.嵌套if

4.悬空else问题

5.if语句要注意的一些问题

6.switch语句

7.switch语句的一些注意事项

二、循环语句

1.while循环

while循环中的break和continue

2.for循环

for循环中的break和continue

3.do......while循环

do......while循环中的break和continue

4.goto语句

三、总结


欢迎大家!今天我将给大家详细介绍C语言中的分支和循环语句。

一、分支语句

1.if语句

if语句的语法形式如下:

if(表达式)

      语句

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

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

举个栗子,根据年龄判断一个人是否是未成年,代码如下:

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

运行结果如下: 

 

2.else语句 

如果根据这个人的年龄判断他不是一个未成年人,那么他就是成年人,这里就要用到if...esle...语句来进行判断。

if...else...语句的语法形式如下:

if(表达式)

{       

        语句1;

}

else

{

       语句2;

}

通过if...else...语句根据年龄判断一个人是否成年,代码如下:

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

运行结果如下:

3.嵌套if

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

嵌套if的语法形式如下:

if(表达式)

{

        语句1;

}

else if(表达式)

{

        语句2;

}

else  

{

        语句3;

}

比如:根据这个人的年龄判断他是未成年,还是青年或壮年,代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int age = 26;
	if (age < 18)
	{
		printf("未成年\n");
	}
	else if (age >= 18 && age <= 30)
	{
		printf("青年\n");
	}
	else
	{
		printf("壮年\n");
	}
	return 0;
}

运行结果如下:

4.悬空else问题

if与else的匹配:else只会与离自己最近的if匹配

举个栗子:

#define _CRT_SECURE_NO_WARNINGS
#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(a == 1)相匹配,但不是这样匹配的,这个else是与离它最近的if进行匹配的,也就是if(b== 2)。所有第一个if判断为假,程序不会进入分支,而是跳转return0所有就如我们所看到的,什么也没打印。

5.if语句要注意的一些问题

(1)if表达式后面 “ ;”表示一条语句,如果有多条语句,必须用{}括起来。

比如:

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

运行结果如下: 

为了避免出现这种情况,if后面跟一条语句,如果if后面有多条语句,我们要用{}括起来。

(2)在C语言中0表示假,非0表示真,表达式成立的条件是为真就进入选择语句。

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

运行结果如下: 

在if语句中,表达式为0,不会进入选择语句。

6.switch语句

(1)switch

switch(整形表达式)

{

        case 整型常量表达式:

                语句;

                break;

        default:

                break;

}

比如输入1-7的一个数字,打印对应的星期,代码如下所示:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int input = 0;
	scanf("%d", &input);
	switch (input)
	{
	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:
		printf("输入错误,请重新输入\n");
		break;
	}


	return 0;
}

运行结果如下: 

7.switch语句的一些注意事项

1.在case后加上break,当满足符合的case情况后,会跳出switch语句,否则可以会把符合的case情况后面的所有结果也打印出来。

2.每个switch语句中只能出现一条default子句,它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句,也可以在default子句后边加上一个 break ,使switch语句更加完美。

二、循环语句

1.while循环

while循环的语法结构:

while(表达式)

{

        循环语句;

}

下面来实现一个简单的代码:
打印1-10的数字 

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

运行结果如下: 

while循环中的break和continue

(1)break介绍

 break的功能:其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。

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


运行结果如下: 

当i=5时,满足条件,遇到break,跳出循环,所以就打印1 2 3 4。

(2)continue介绍:

continue的功能:用于终止本次循环,本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分,进行下一次循环的判断。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
    int i = 1;
    while (i <= 10)
    {

        if (5 == i)
        {
            continue;
        }
        printf("%d ", i);
        i++;
    }
    return 0;
}

运行结果如下: 

当i=5时,满足条件,遇到continue,跳转到while语句的判断部分,i的值不能继续增加,永远等于5,进行下一次循环的判断,光标一直再闪,说明代码陷入了死循环,所以这里打印出来的就是1 2 3 4 死循环。

2.for循环

for循环的语法结构:

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

//表达式1:初始化部分    表达式2:判断部分         表达式3:调整部分

{

        循环语句;

}

下面打印一个1-10的代码演示一下:

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

运行结果如下:

for循环跟上面的while循环相比,循环中的三个条件更加集中,修改和使用非常方便。 

for循环中的break和continue

(1)break介绍

 break的功能就是直接结束循环。

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

运行结果如下:

 

当i=5满足条件时,遇到break,直接结束循环。

(2)continue介绍

continue的作用是终止本次循环,后面的代码不再继续执行,进入到调整部分。

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

运行结果如下:

这里i=5,遇到continue,终止本次循环,不会打印出5,进入到调整部分。

3.do......while循环

do……while循环的语法结构:

do

{

        循环语句;

}while(表达式);

do......while循环语句的特点就是:先执行再判断,循环至少执行一次

举个栗子,输出1-10:

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

运行结果如下: 

do......while循环中的break和continue

(1)break介绍

break的作用是直接终止do......while循环

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

运行结果如下:

当i=5的时候执行if语句,break,而break则直接终止do......while循环。

(2)continue介绍

continue的作用是终止本次循环后面的代码,继续执行上面的代码

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
    int i = 1;
    do
    {
        if (5 == i)
        {
            continue;
        }
        printf("%d ", i);
        i++;

    } while (i < 10);
    return 0;
}

运行结果如下:

当i=5时,执行continue,终止本次循环后面的代码,继续执行上面的代码,调整部分在后面,所以i无法变化,光标一直在闪,说明代码陷入了死循环,所以打印1 2 3 4 死循环。

4.goto语句

goto 是一个跳转语句,允许程序在特定条件下无条件地跳转到程序中的标签位置。 由于滥用 goto 可能导致代码难以理解和维护,所以不建议使用。

下面用个代码给大家演示:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
again:
	printf("hello\n");
	goto again;
	return 0;
}

运行结果如下:

从图中我们可以看出来,陷入死循环的原因是当代码执行完之后通过goto语句又跳转上去了,不断打印hello,代码陷入死循环。

三、总结

很高兴你们能耐心地看到最后,以上是对C语言中分支和循环语句的介绍,通过学习并掌握这些知识点,能够让我们对C语言有更加深入的了解,我们要不断地亲自去敲代码、去实践,才能够提高我们C语言的技术与能力。

我也会继续努力,不断地去学习,与大家分享我自己在学习过程中的一些知识与心得,很高兴能在这里遇到你们,欢迎你们经常来我的博客看看,下期博客,不见不散!

  • 33
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值