C语言超详细讲解循环与分支语句基础

目录
  • 写在开始
  • 1. 分支语句
    • 1.1 if语句
    • 1.2 switch
  • 2. 循环语句
    • 2.1 while()语句
    • 2.2 do while()语句
    • 2.3 for 语句
      • for语句中表达式的省略
      • break在循环语句中的作用
      • continue 在循环语句中的应用
  • 总结:

写在开始

在内容开始之前给大家介绍一下在计算机中如何表示真假

0表示假,非0表示真。

1. 分支语句

分支语句也叫做条件选择语句,主要分为if语句和switch语句。

1.1 if语句

if()…{} else if()…{} else {}

代码解释:

#include<stdio.h>
//这里是引入“printf”函数所在的头文件,大家在使用函数时要记得把函数的头文件加上哦
int main()
{
   int a = 1, b = 2, c = 3;
   if (a > c)  printf("a比c大");
   else if (a > b) printf("a比b大");
   else (printf("a比b和c都小"));
}

分析:

在if(a>c)中a>c为假,故会跳过printf(“a比c大”);,接下来会运行else if,而a>b也为假,故会向下执行else的语句"a比b和c都小",最终如上图所示。

注:如果在第一个if里面条件成立了那之后的else if和else语句都将不会被运行。

  • if()…{}…else {}

理解完第一种方法后面这两种方法也就不难理解了,在这个语句中少了if else语句,因此对比上一种方法这种语句在运行时跳过了else if的判断与执行阶段。

或者我们可以这样理解:在这里其实else if也存在,比如以这种方式:else if(0) {expression;}

  • if() …{}

关于这个语句想必不用我多说了吧,相信聪明的小伙伴们自己便能明白了。

总结:

在if()的括号内填入条件,如果条件成立时,将会执行后面大括号(代码块)里的的表达式,而若条件不成立时,系统将会直接跳过表达式去执行else if 的判断,条件成立则运行else if 后面的代码块,反之则跳过,最后如果都不符合条件的话则会直接执行else后的语句。

1.2 switch

switch语句一般是和循环语句一起搭配使用的,现在先了解一下switch语句是怎么使用的。

代码格式:

switch(a)//a是一个整形变量
{
   case 1:expression1;//不一定要写case 1,可以是任意a所能取值的数
   break;
   case 2:expression2;
   break;
   ....
   default:expression;
}

在switch()里放入一个整形变量a,程序会根据a的值跳转到对应的case 语句并执行,而执行到break时程序便会跳出switch语句,如果没有对应的case语句则会执行default语句.下面请看实例来了解:

//将数字转换成其在一周内的位置
int main()
{
	int day = 0;
	scanf("%d",&day);//通过键盘向变量day输入一个整数
	switch (day){
	case 1:printf("周一");
		break;
	case 2:printf("周二");
		break;
	case 3:printf("周三");
		break;
		//中间的我省略了,这里代码演示主要是为了让大家了解功能,长篇大论也不太好
	case 7:printf("周日");
		break;
	default:printf("请输入正确的数字");
	}
	return 0;
}

前面说了break的作用是跳出switch语句,现在给大家看看如果没有break的效果吧:

既然没有跳出去那就继续执行下一个语句呗,没有问题。break语句其实并不是每个case语句后面都要加上,有些时候只在必要的地方加上就可以达到我们想要的效果了.

2. 循环语句

循环语句主要分为三种:for语句,while语句和do while语句,这三种语句都是可以做到相互转换的,一般来说for语句会方便点,不过最终用哪种还是看具体问题和个人的喜好吧。

2.1 while()语句

while(condition)
{
    expression;
}

解释:

condition 为判断条件。

expression 为条件为真时执行的语句。

运行时:

while()语句首先是判断括号里面表达式的真值,如果条件为真(非0),则会运行后面的代码块,运行完之后会再一次的进入条件判断阶段,如果条件还为真,则会继续运行直至条件为假(0)时跳出循环。

这里给大家出个小题目吧,随便复习下刚刚讲的if语句(不会也不要紧的,慢慢来,这里只是给大家加深点印象)

1.打印10以内的奇数。

有没有小伙伴是这样写的呢:printf("%d%d%d%d%d", 1, 3, 5, 7, 9);

哈哈结果没问题,不过咱们可是要当程序员的人呐

int main()
{
	int i = 0;//在声明一个变量时记得给它赋值,这一部叫做变量的初始化
	while (i <= 10) {
		if (i % 2 == 1)  //符号“==”是判断是否相等,可以理解为数学中的等于号
		//"%"为取模,比如10%3=1,是取余数
			printf("%d", i);
		i++; //  i++的意思是先使用i自己的值,然后使自己的值加1,这里可以看成是  i = i + 1;
	}
	return 0;
}

该注意的点我已近在代码里注释了,如果还有不懂的可以在评论区提问,当然如果有问题也还请大佬们指出,YU同学先感谢大家了。

2.2 do while()语句

do while()语句与while语句区别不大,正如它的名字一样,它在运行是会提前执行一遍代码块里面的内容,然后再进行判断while()里面的真值,后面的就与while()语句是一样的,接下来给大家演示一下do while ()语句的格式:

do {
        expression;
    }while (condition);

2.3 for 语句

代码格式:

for(expression1;condition;espression2)
{
    expression;
}

解释:

expression1 是给循环变量赋予初始值。(这时在开始循环的时候进行的,后面循环的时候不会再运行这个代码)

condition 是每次循环时判断的条件,若条件真值为真这继续运行代码块里面的语句,为假则会跳出for循环。

expression2 一般是对赋值变量的操作,让程序能达到自己想要的效果。

运行时:

程序会先进行对循环变量的赋值,而后进行条件判断,为真则执行后面的代码块,为假则退出循环,再执行完代码块后程序会通过condition2进行对循环变量的操作,然后进入下一次循环的判断阶段,以此类推。

for语句中表达式的省略

注:语句可以省,但分号不能省的,就算全省了也要写成for( ; ; )这样

  • 省略expression1

省略这一步则会跳过for循环时给循环变量赋值的部分,如果省略需要再for循环之前设定好循环变量的初始值。

  • 省略condition

condition为循环条件,当省略 它时系统会默认条件真值为1,即条件永远为真,这样程序会陷入死循环而崩溃,是不能省略的。

  • 省略expression2

可省略,省略完后系统将跳过执行代码块后对循环变量的操作,因次就要把对循环变量的操作放到代码块中了。

break在循环语句中的作用

程序运行时遇到break语句时不论当前条件的真值是否为假都会会直接跳出循环,下面给大家看个例子:

int main()
{
	int i = 1;
	for (i = 0; i<10; i++)
	{
		if (i == 6)
			break;
		printf("%d",i);
	}
	printf("\n%d", i);//前面打印一个空行
}

程序的结果是012345 6

过程解释:在循环变量i=5时,if(i==6)条件不通过,并没有运行break语句,然后继续在屏幕打印5,之后通过i++使得i变成6,从而使得if(i==6)为真,程序运行时执行了break后跳出了循环,没有打印6和进行之后的循环,而后面的6时在循环外打印的,此时i=6,故打印出了一个六在下一行。

continue 在循环语句中的应用

continue 是使程序跳出本次循环去执行下一次循环

注:是跳出本次循环的执行代码块部分,前面讲过for循环在执行完代码块后还会有一步对循环变量的操作,这一部分是不会被跳过的。

下面看看效果:

对于while和do while

int main()
{
	int i = 0;
	while(i<10)
	{
		if (i == 6)
			comtinue;
		printf("%d",i);
		i++;
	}
	printf("\n%d", i);//前面打印一个空行
}

程序出现了在一直闪光标,出现死循环。

分析:当i=6时运行了continue跳出了本次循环进入下一次循环,可下一次循环还是有i=6(i++语句在continue之后,没有没运行),一直重复从而出现死循环。

对于for

int main()
{
	int i = 0;
	for (i = 0; i<10; i++)
	{
		if (i == 6)
			continue;
		printf("%d",i);
	}
	printf("\n%d", i);
}

这次打印少为12345789 10,少了一个6,但程序并没有出现死循环正是上面说说的,for循环中对循环变量处理的一部分不会被跳过。

总结:

今天给大家简单介绍了分支语句 if语句和switch语句,循环语句for语句,while语句,dowhile语句的使用方法和简单的运行流程以及continue 和break 在循环语句中的应用和细小差别。

到此这篇关于C语言超详细讲解循环与分支语句基础的文章就介绍到这了,更多相关C语言 循环与分支内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言分支循环其嵌套语句的使用

    目录 switch 嵌套 1.语法结构: 2.switch-case 嵌套语句程序示例 循环嵌套 1.while 循环嵌套 2.do-while 嵌套循环 3.for 循环嵌套 总结 Hello,everyone! forever之前给大家介绍了C语言的分支结构和循环结构,在分支中介绍了分支语句嵌套,但当时没有介绍 switch 嵌套,所以这次主要介绍 switch 嵌套和循环嵌套. 首先来说说什么是嵌套吧!一个语句内包含另一个完整的语句结构称为语句嵌套.内嵌套的语句结构内还可以继续嵌套其他语句

  • C语言分支和循环详解

    目录 前言 一.什么是语句 二.分支语句 1.if语句 2.switch语句 三.循环语句 1.while循环 2.循环语句中的break与continue 3.for循环 总结 前言 在本章,我会详述分支和循环语句的概念与使用规范 一.什么是语句 我们常在一条代码的末尾加一个分号 ":" ,C语言中分号前的就是一条语句,例如 int a = 0;//这是一条语句 printf("%d\n",a);这又是一条语句 很简单的概念. 那么,如果单放一个分号,分号前什么也

  • C语言的分支和循环语句你了解吗

    目录 1.什么是语句? 2.分支语句(选择结构) 2.1.if语句 2.2.switch语句 2.2.1.switch语句中的break 2.2.2default子句 3.循环语句 3.1.while循环 3.1.1while中的break和continue 3.2.for循环 3.2.1.语法 3.2.2.break和continue在for循环中 3.2.3.for语句的循环控制变量 3.2.4.for循环的变种 3.3do…while()循环 3.3.1.语法 3.3.2.执行流程 3.3

  • C语言的分支和循环语句你真的了解吗

    目录 什么是语句? 分支语句 if语句 悬空else if书写形式的对比 练习 switch语句 default子句 循环语句 while循环 while语句中的break和continue 总结 什么是语句? C语句可分为以下五类: 表达式语句 函数调用语句 控制语句 复合语句 空语句 表达式语句 --> 表达式后面带个; 函数调用语句 --> 在写完的函数后面加个; 控制语句 控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句. 可分

  • 史上最强C语言分支和循环教程详解

    目录 3.3 do...while()循环 3.3.1 do语句的语法: 3.3.2 执行流程 3.3.3 do语句的特点 3.3.4 do while循环中的break和continue 3.4 练习 3.4.1. 计算 n的阶乘. 3.4.2. 计算 1!+2!+3!+--+10! 3.4.3. 在一个有序数组中查找具体的某个数字n. 3.4.4. 编写代码,演示多个字符从两端移动,向中间汇聚. 3.4.5. 编写代码实现,模拟用户登录情景,并且只能登录三次. 3.4.6.猜数字游戏实现 4

  • C语言基础解析之分支与循环语句

    目录 - if语句:if(表达式) 悬空else问题 - switch语句 要注意的细节 switch中的的default子句: - while循环语法结构 - for循环语法结构 - do while循环 循环练习题 - 题目一(阶乘) - 题目二(阶乘和) - 题目三(二分查找) - 题目四(两边往中间渐变) - 题目五(密码登录) - 题目六(猜数字游戏) - goto语句 - getchar与putchar用法 - if语句:if(表达式) // 括号里面放一个表达式 ​//表达式的结果

  • C语言超详细讲解循环与分支语句基础

    目录 写在开始 1. 分支语句 1.1 if语句 1.2 switch 2. 循环语句 2.1 while()语句 2.2 do while()语句 2.3 for 语句 for语句中表达式的省略 break在循环语句中的作用 continue 在循环语句中的应用 总结: 写在开始 在内容开始之前给大家介绍一下在计算机中如何表示真假 0表示假,非0表示真. 1. 分支语句 分支语句也叫做条件选择语句,主要分为if语句和switch语句. 1.1 if语句 if()…{} else if()…{}

  • C语言 超详细讲解链接器

    目录 1 什么是链接器 2 声明与定义 3 命名冲突 3.1 命名冲突 3.2 static修饰符 4 形参.实参.返回值 5 检查外部类型 6 头文件 1 什么是链接器 典型的链接器把由编译器或汇编器生成的若干个目标模块,整合成一个被称为载入模块或可执行文件的实体–该实体能够被操作系统直接执行. 链接器通常把目标模块看成是由一组外部对象组成的.每个外部对象代表着机器内存中的某个部分,并通过一个外部名称来识别.因此,==程序中的每个函数和每个外部变量,如果没有被声明为static,就都是一个外部

  • C语言 超详细讲解算法的时间复杂度和空间复杂度

    目录 1.前言 1.1 什么是数据结构? 1.2 什么是算法? 2.算法效率 2.1 如何衡量一个算法的好坏 2.2 算法的复杂度 2.3 复杂度在校招中的考察 3.时间复杂度 3.1 时间复杂度的概念 3.2 大O的渐进表示法 3.3 常见时间复杂度计算举例 4.空间复杂度 5. 常见复杂度对比 1.前言 1.1 什么是数据结构? 数据结构(Data Structure)是计算机存储.组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合. 1.2 什么是算法? 算法(Algorit

  • C语言超详细讲解轮转数组

    目录 题目描述 实例 解题思路 1. 先整体逆转 2.逆转子数组[0, k - 1] 3.逆转子数组[k, numsSize - 1] 易错点 代码 题目描述 给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数.OJ链接 实例 1.实例1 输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7

  • C语言超详细讲解数据结构中双向带头循环链表

    目录 一.概念 二.必备工作 2.1.创建双向链表结构 2.2.初始化链表 2.3.动态申请节点 2.4.打印链表 2.5.销毁链表 三.主要功能 3.1.在pos节点前插入数据 尾插 头插 3.2.删除pos处节点数据 尾删 头删 3.3.查找数据 四.总代码 List.h 文件 List.c 文件 Test.c 文件 五.拓展 一.概念 前文我们已经学习了单向链表,并通过oj题目深入了解了带头节点的链表以及带环链表,来画张图总体回顾下: 在我们学习的链表中,其实总共有8种,都是单双向和带不带

  • C语言超详细讲解getchar函数的使用

    目录 一.getchar 函数 二.缓冲区 1.什么是缓冲区 2.为什么要存在缓冲区 3.缓冲区的类型 4.缓冲区的刷新 三.getchar 函数的正确使用 1.getchar 的换行问题 2.getchar 与 scanf 的混合使用 一.getchar 函数 从上面的介绍来看,我们要正确使用getchar函数,首先得了解什么是缓冲区. 二.缓冲区 1.什么是缓冲区 缓冲区又称为缓存,它是内存空间的一部分. 也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部

  • C语言 超详细讲解库函数

    目录 1 返回整数的getchar函数 2 更新顺序文件 3 缓冲输出与内存分配 4 库函数 练习 1 返回整数的getchar函数 代码: #include<stdio.h> int main() { char c; while((c = getchar())!=EOF)//getchar函数的返回值为整型 putchar(c); return 0; } 上述代码有三种可能: 某些合法的输入字符在被"截断"后使得c的取值与EOF相同,程序将在复制的中途停止. c根本不可能

  • C语言超详细讲解字符串相乘

    目录 前言 一. 分析思路 二.使用步骤 1.代码如下 2.memset函数 三.总结 前言 我们已经知道,正常的两位整形数据通过*相乘,C语言中int为4字节,32bit(字节),其机器码第一位为符号位,余下31位表示数字,表示范围:-2^31(-2147483648)~2^31-1(2147483647),但超过了这个范围我们该如何做呢? 提示:将数字以字符串的形式进行操作 一. 分析思路 示例: 我们把每一个数都看成是一个字符串,每一个元素为十进制数字所对应的字 符,由于是后面的元素先进行

  • C语言超详细讲解排序算法上篇

    目录 1.直接插入排序 2.希尔排序(缩小增量排序) 3.直接选择排序 4.堆排序 进入正式内容之前,我们先了解下初阶常见的排序分类 :我们今天讲前四个! 1.直接插入排序 基本思想:当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排 序码与array[i-1],array[i-2],…的排序码顺序进行比较,找到插入位置即将array[i]插入,原来位置上的元素顺序后移! 直接插入排序的特性总结: 1. 元素集

  • C语言超详细讲解栈与队列实现实例

    目录 1.思考-1 2.栈基本操作的实现 2.1 初始化栈 2.2 入栈 2.3 出栈 2.4 获取栈顶数据 2.5 获取栈中有效元素个数 2.6 判断栈是否为空 2.7 销毁栈 3.测试 3.1测试 3.2测试结果 4.思考-2 5.队列的基本操作实现 5.1 初始化队列 5.2 队尾入队列 5.3 队头出队列 5.4 队列中有效元素的个数 5.5 判断队列是否为空 5.6 获取队头数据 5.7 获取队尾的数据 5.8 销毁队列 6.测试 6.1测试 6.2 测试结果 1.思考-1 为什么栈用

随机推荐