C语言-分支语句和循环语句

目录

前言

一、C语言“语句”介绍

二、分支语句

1.if语句

2.switch语句

三、循环语句

1.while语句

2. do while语句

3.for语句

总结

        比较if(表达式)、switch(表达式)、while(表达式)它们的表达式有何异同,回顾组成循环的三要素


        经过一段时间的学习,我对C语言有了一些初步的认识,希望大家能够一起学习,一起进步。本人是萌新级别的大学生,有错误或不当的地方恳请各位读者指出。


前言

        生活中所有的事情都可以细分为两种结构:选择结构和循环结构,如果想使用C语言解决生活中的一些问题,那么C语言首先必须要能够实现这两种结构,接下来就让我带你粗略地认识一下C语言中的分支语句和循环语句吧!


一、C语言“语句”介绍

        你知道C语言中“语句”这一概念吗?

        C语言中的语句可以分为以下五类:

1.表达式语句;

2.函数调用语句;

3.控制语句;

4.复合语句;

5.空语句。

        其中本文介绍的分支语句和循环语句都属于控制语句。控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构,选择结构和循环结构),它们由特定的语句定义符组成,C语言有9种控制语句,又可以分为以下三类:

1.条件判断语句(分支语句):if语句、switch语句;

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

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


二、分支语句

1.if语句

单分支
if(表达式)
    语句1;
else
    语句2;
//其中表达式的结果为逻辑值:真(非0),假(0);如果表达式结果为真就执行语句1,否则执行语句2;
//演示代码
#include <stdio.h>
int main()
{
    int score;
    scanf("%d",&score);
    if(score>=60)
        {
            printf("及格\n");
        }
    else
        {
            printf("不及格\n");
        }
    return 0;
}

多分支
思考:对于多分支语句,能否改变表达式的顺序?各个else的含义又是什么?
if(表达式1)
    语句1;
else if(表达式2)
    语句2;
else if(表达式3)
    语句3;
......
else
    语句n;
//演示代码
int main()
{
    int age;
    scanf("%d",&age);
    if(age<=12)
        printf("儿童\n");
    else if(age >12 && age <=18) //思考一下括号内的表达式是否可以写成这样(12<age<=18)
        printf("少年\n");
    else
        {
            printf("成年\n");
            printf("可以饮酒\n");
        }
    return 0;
}

(1)如果需要满足一个条件同时执行多条语句,则需要用{}把这几条语句括起来;如果需要一个条件仅执行一条语句,那么{}可以省略;

(2)if语句括号内的表达式的结果仅表示真假(即非0或0),如(12<7<3)先计算12<7为假,返回0,再计算0<3为真,所以整个表达式的结果为真。

(3)养成良好的代码习惯

下面代码1和代码2一样吗?代码3和代码4一样吗?
#include <stdio.h>
//代码1
int main()
{
    int x=0;
    int y=2
    if(x == 1)            //你觉得(x == 1)和(1 == x)哪种写法更不容易出错
        if(y == 2)
            printf("fun\n");
    else
        printf("interesting\n");
    return 0;
}
//代码2
int main()
{
    int x=0;
    int y=2
    if(x == 1)
        {
            if(y == 2)
                printf("fun\n");
        }
    else
        printf("interesting\n");
    return 0;
}
//代码3
if(choice)
{
    return 1
}
return 0;
//代码4
if(choice)
{
    return 1;
}
else
{
    return 0;
}
你觉得下面的代码5好看吗?
//代码5
int main()
{
    int a = 1;
    int b = 2;
    if(a==1)
    printf("good good study!\n");
    if(b==2)
    printf("day day up!");
    else
    printf("have fun!");
    return 0;
}

对以上代码进行分析后,相信你一定有些想法了,
其中代码1和代码2显然不同(else与较近的if相匹配),
但是代码3和代码4却执行了同样的程序(因为在遇到return之后,这段程序就结束了)。


        养成良好的编程习惯对一个程序员来说尤为重要,既可以方便自己和读者对代码的阅读理解,又可以减少在编程中出现的错误

2.switch语句

        当我们遇到需要多分支解决的问题的时候,是否会觉得多个else if写起来太过繁琐,不妨来学习一下switch语句的使用吧

一般形式:
switch(表达式)//这里表达式的值与if语句表达式的值有什么不同?
{
    case 常量表达式1:语句组1;
    case 常量表达式2:语句组2;
    case 常量表达式3:语句组3;
    ......
    case 常量表达式n:语句组n;
    default :语句组n+1;
}
//演示代码
#include <stdio.h>
int main()
{
    int day;
    scanf("%d",&day);
    switch(day)
    {
        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("请输入1到7之间的数字!\n");break;
    }
    return 0;
}
思考:如果我需要输入1至5,输出工作日;输入6或7,输出休息日,该怎样改动演示代码
break在这里的作用是什么?删去break会得到怎样的结果呢?
default在这里又扮演着怎样的角色呢?

(1)break语句的作用是:跳出switch语句,在缺少break的情况下,switch没有办法实现分支,在每个case语句后面加上一个break,是一个良好的编程习惯;

(2)default语句的作用是:如果表达式的值与所有的case都不匹配,程序并不会终止,也不会报错,如果你加上一天default语句,那么此时程序会执行default子句后面的语句,在每个switch语句里面加上一条default子句,也是一个编程好习惯

(3)switch()内的表达式只能是某个整型(char,int ,long等)或string,这里switch内表达式的性质与if内表达式的性质不同


三、循环语句

1.while语句

        if(表达式)                while(表达式)

                语句;                           循环语句;

        在表达式成立的情况下,if语句后面的语句只会执行一次,而while语句后面的循环语句会一直执行到表达式不成立为止,while循环的条件判断部分的表达式与if的表达式性质相同,表达式结果为真则进入循环;

//演示代码-在屏幕上打印1~10
#include <stdio.h>
int main()
{
    int i = 1;              //循环变量初始化
    while(i<=10)            //循环条件
    {
        printf("%d ",i);    //{}括起来的部分称为循环体
        i = i + 1;          //循环变量调整部分
    }
    return 0;
}
思考:while语句主要由哪些部分构成

        在了解的while语句的基本语法之后,我们再来了解一下循环语句中的break语句和continue语句

分析下面这段代码运行的结果:
#include <stdio.h>
int main()
{
	int i = 1;
    while (i <= 10)
	{

        printf("%d ", i);
		if (i == 5)
			break;
		i = i + 1;		
	}    
    printf("\n");
    i = 1;
//
	while (i <= 10)
	{
		i = i + 1;
		if (i == 5)
			continue;
		printf("%d ", i);
	}
//
	printf("\n");
	i = 1;
	while (i <= 10)
	{
		if (i == 5)
			continue;
		printf("%d ", i);
		i = i + 1;
	}
	return 0;
}

//1 2 3 4 5
//2 3 4 6 7 8 9 10 11
//1 2 3 4 ?

(1)break:永久终止循环

(2)continue:终止本次循环(后面的代码不再执行),进行下一次循环的入口判断

2. do while语句

#include <stdio.h>
int main()
{
	int i = 1;               //循环变量的初始化
    do
	{
        printf("%d ", i);
		i = i + 1;		     //循环变量的调整
	}while (i <= 10);        //循环条件
    return 0;
}
do while语句中,循环至少执行一次,注意不要漏掉while(表达式)后面的" ; "

        do while语句与while语句比较相似,但是有些场景do while语句能够发挥更好的效果

3.for语句

一般形式:
for(表达式1;表达式2;表达式3)
{
    循环语句;
}
表达式1为循环的初始化部分,表达式2为循环的条件判断部分,表达式3为循环条件的调整部分
与while语句不同的是,for语句的初始化部分、条件判断部分和循环条件的调整部分更加紧凑
使人一目了然,而且我们还可以观察到for语句的循环次数
//演示代码-在屏幕上打印1~10
#include <stdio.h>
int main()
{
    int i=0;
    for(i=1 ;i<=10 ;i++)
    {
        printf("%d ",i);
    }
    return 0;
}

如果你已经对for循环有了初步的认识,请问下面的代码会循环多少次?
int main()
{
    int i=0;
    for(i=0 ;i=0 ;i++)
    {
        printf("%d ",i);
    }
    return 0;
}
//答案是0次,看到答案相信你已经发现for语句的判断表达式也与if语句的判断表达式性质相同,
//表达式的结果只有真和假,正是因为i=0,0表示假,所以循环一次也不会执行

        for语句还可以省略一些部分

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

总结

        对于C语言中的分支语句和循环语句,需要重点掌握if语句、switch语句、do while语句、while语句和for语句的使用,并能根据具体的问题选择适当的语句解决问题

        以上就是初识C语言第二部分的内容,希望能够对你有所帮助^W^

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

φ冰霰ξ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值