首页 > 其他分享 >C语言的分支和循环(下)

C语言的分支和循环(下)

时间:2024-08-06 22:24:20浏览次数:13  
标签:语句 do int C语言 while 循环 表达式 分支

前言

一、while循环

1.if 和 while的对比

2.while语句的执行流程

3. while循环的实践

 二、for循环

1.语法形式

2. for循环的执行流程

3. for循环的实践

4.练习 

三、do-while 

1.语法形式:

2. do while循环的执⾏流程 

3. do while循环的实例 

4.练习

总结



前言

刚刚结束了暑假补课体验,但不能忘了更新,今天我们继续学习分支和循环,前面我们学到了分支,今天我们主要来讲解下循环。


C语⾔提供了3种循环语句,while、for、do-while;

一、while循环

1.if 和 while的对比

 if(表达式)
 语句;
 while(表达式)
 语句;//如果循环体想包含更多的语句,可以加上⼤括号

你可以对⽐来看⼀下,具体写个代码吧

//代码1
#include <stdio.h>
int main()
{
 if(1)
 printf("hehe\n"); //if后边条件满⾜,打印⼀次hehe
 return 0;
}

 对比下面的代码:

//代码2
#include <stdio.h>
int main()
{
 while(1)
 printf("hehe\n"); //while后边的条件满⾜,死循环的打印hehe
 return 0;
}

这就是他们的区别,while语句是可以实现循环效果的。 

2.while语句的执行流程

⾸先上来就是执⾏判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执⾏循环语
句,语句执⾏完后再继续判断,是否进⾏下⼀次判断。而,上面的break和continue我们在下篇文章后面讲解。 

3. while循环的实践

练习:在屏幕上打印 1~10 的值

//practice 在屏幕上打印 1到10 的值
int main()
{
	int i = 1;
	while (i <= 10)
	{
		printf("%d ", i);
		i = i + 1;
	}
	return 0;
}

运行结果:

practice   输⼊⼀个正的整数,逆序打印这个整数的每⼀位
例如:
输⼊:1234,输出:4 3 2 1
输⼊:521,输出:1 2 5

题目解析:

1. 要想得到n的最低位,可以使⽤n%10的运算,得到的余数就是最低位,如:1234%10得到4
2. 要想去掉n的最低位,找出倒数第⼆位,则使⽤ n=n/10 操作就可以去掉最低位的,如:
n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第⼆位3。
3. 循环1和2两个步骤,在n变成0之前,就能到所有的位。

//practice 输⼊⼀个正的整数,逆序打印这个整数的每⼀位
//例如:
//输⼊:1234,输出:4 3 2 1
//输⼊:521,输出:1 2 5

int main()
{
	int n = 0;
	scanf("%d", &n);
	while (n)
	{
		printf("%d ", n % 10);
		n /= 10;
	}
	return 0;
}

运行结果:

 二、for循环

1.语法形式

for 循环是三种循环中使⽤最多的, for 循环的语法形式如下:

for(表达式1; 表达式2; 表达式3)
语句;//如果循环体想包含更多的语句,可以加上⼤括号

表达式1 ⽤于循环变量的初始化
表达式2 ⽤于循环结束条件的判断
表达式3 ⽤于循环变量的调整

2. for循环的执行流程


先执⾏ 表达式1 初始化循环变量,接下来就是执⾏ 表达式2 的判断部分, 表达式2 的结果如果==0,则循环结束; 表达式2 的结果如果!=0则执⾏循环语句,循环语句执⾏完后,再去执⾏表达式3 ,调整循环变量,然后再去 表达式2 的地⽅执⾏判断,表达式2 的结果是否为0,决定循环是否继续。
整个循环的过程中,表达式1初始化部分只被执⾏1次,剩下的就是表达式2、循环语句、表达式3在循环。 

3. for循环的实践

练习:在屏幕上打印1~10的值

代码参考如下:

int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)  //这里用i++与++i效果上没有区别
	{
		printf("%d ", i);
	}

	return 0;
}

运行结果如下: 

4.while循环和for循环对比

 for 和 while 在实现循环的过程中都有初始化、判断、调整这三个部分,但是 for 循环的三个部
分⾮常集中,便于代码的维护,⽽如果代码较多的时候 while 循环的三个部分就⽐较分散;

所以从形式上 for 循环要更优⼀些。

4.练习 

practice 1:
计算1~100之间3的倍数的数字之和

//practice 2:
//计算1~100之间3的倍数的数字之和
int main()
{
	int i = 0;
	int sum = 0;
	for (i = 1; i <= 100; i++)
	{
		if (i % 3 == 0)
			sum += i;
	}
	printf("%d\n", sum);
	return 0;
}

运行结果:

do
 语句;
while(表达式);

 在此基础上,我们可以进行 小小的优化:如果能直接产⽣3的倍数的数字就省去了多余的循环和判断,更加方便,如下:

int main()
{
 int i = 0;
 int sum = 0;
 for(i=3; i<=100; i+=3)
 {
 sum += i;
 }
 printf("%d\n", sum);
 return 0;
}

三、do-while 

1.语法形式:

在循环语句中 do while 语句的使⽤最少,它的语法如下:

do
 语句;
while(表达式);

2. do while循环的执⾏流程 

在 do while 循环中先执⾏图上的“语句”,执⾏完语句,在去执⾏“判断表达式”,判断表达式的
结果是!=0,则继续循环,执⾏循环语句;判断表达式的结果==0,则循环结束。
所以在 do while 语句中循环体是⾄少执⾏⼀次的,这是 do while 循环⽐较特殊的地⽅。 

3. do while循环的实例 

在屏幕上打印1~10的值

int main()
{
	int i = 1;
	do
	{
		printf("%d\n", i);
		i++;
	} while (i <= 10);
	return 0;
}

 ⼀般 do while 使⽤在循环体⾄少被执⾏⼀次的场景下,所以较少⼀些.

4.练习

例:输⼊⼀个正整数,计算这个整数是⼏位数?
例如:
输⼊:1234 输出:4
输⼊:12 输出:2

int main()
{
	int n = 0;
	scanf("%d", &n);
	int cut = 0;
	do
	{
		cut++;
		n = n / 10;
	} while (n);
	printf("%d\n",cut);
	return 0;
}

 运行结果:

这⾥并⾮必须使⽤ do while 语句,但是这个代码就⽐较适合使⽤ do while 循环,因为n即使是
0,也是1位数,要统计位数的。 

总结

以上为C语言中的循环,暑假过半,加油!如有错误,评论必改。下期介绍break与continue。

标签:语句,do,int,C语言,while,循环,表达式,分支
From: https://blog.csdn.net/2303_78558007/article/details/140916683

相关文章

  • 排序算法 希尔排序 ShellSort -- C语言实现
    希尔排序希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;但插入排序一般来说是低效的,因为插入排......
  • C语言典型例题28
    《C程序设计教程(第四版)——谭浩强》习题2.5输入一个华氏温度,要求输出摄氏温度。公式为C=5/9(F-32),要求输出要有文字说明,取两位小数数学知识:(1)华氏温度与摄氏温度(FahrenheittemperatureandCelsiustemperature),是两大国际主流的计量温度的标准。(2)华氏温标由来华氏温标:......
  • C语言:函数
    函数是对步骤的封装。函数分两类:一类是系统函数,一类是自定义的函数。系统自带的函数如我们现在一直在用的printf。而今天我们主要说的是自定义函数。首先,我们要明白自定义函数的目的就是为了把一些麻烦复杂的东西封装起来,当我想用的时候可以直接调用,当然除此之外函数还有其......
  • 排序算法 快速排序 quickSort -- C语言实现
    快速排序快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实......
  • QRGRU-基于分位数回归门控循环单元的时间序列/回归区间概率预测matlab代码
    本人整理了QRGRU基于分位数回归门控循环单元的时间序列/回归区间概率预测matlab代码,该代码质量优异,出图精美,有详细注释,适合新手学习使用。1.多变量回归或时序预测均可,不加价~适用于matlab2020及以上。可任意选择置信区间,评价指标包括R2、MAE、区间覆盖率picp、区间平均宽度百分......
  • 编程深水区之并发②:JS的单线程事件循环机制
    如果某天有人问你,Node.js是单线程还是多线程,你如何回答?一、单线程并发原理我们以处理Web请求为例,来看看Node在处理并发请求时,究竟发生了什么。Node启动Web服务器后,创建主线程(只有一个)。当有一个阻塞请求过来时,主线程不会发生阻塞,而是继续处理其它代码或请求。如果阻塞......
  • 三.初识C语言(3)
    1.选择语句    如果你好好学习,校招时拿一个好offer,走上人生巅峰。如果你不学习,毕业等于失业,回家卖红薯。    这就是选择。图示如下。    选择语句关键字主要有if,switch。①if语句        我们先以if语句举例,帮助我们有一个初步的了解。......
  • 排序算法 堆排序 HeapSort -- C语言实现
    堆排序堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法:大顶堆:每个节点的值都大于或等于其子......
  • C语言:qsort详解
    在上一篇文章我们大致的了解了回调函数的用法和作用,在这一篇让我们来了解一下在回调函数qsort的使用吧。一.qsortqsort是一种用来排各种类型数据的函数,利用的是快速排序的方式。说到排序,我们就想到了之前学习的冒泡排序,但冒泡排序也有很明显的缺点:时间复杂度太高,效率慢,但qsor......
  • 排序算法 选择排序 SelectSort -- C语言实现
    选择排序描述选择排序是一种简单直观的排序算法,无论什么数据进去都是O(n²)的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了。算法步骤首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。再从剩余未排序元素中继续寻......