当前位置: 首页 > article >正文

NO.17十六届蓝桥杯备战|do-while循环|break和continue语句|三道练习(C++)

do-while循环

do-while语法形式

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

//形式1  
do  
	语句;  
while( 表达式 );

//形式2  
do  
{  
	语句1;  
	语句2;  
	...  
}  
while( 表达式 );

while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳出循环;
⽽ do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式,表达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。

执⾏流程

![[Pasted image 20250213173353.png]]

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

实践

使⽤ do while 循环在屏幕上打印1~10的值

#include <iostream>  
using namespace std;  

int main()  
{  
	int i = 1;  
	
	do  
	{  
		cout << i << " ";  
		i = i + 1;  
	} while (i <= 10);
	
	return 0;  
}

![[Pasted image 20250213173526.png]]

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

练习

统计正整数的位数

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

#include <iostream>
using namespace std;

int n;

int main()
{
	cin >> n;
	int cnt = 0;
	do
	{
		n /= 10;
		cnt++;
	}while (n);
	cout << cnt << endl;

	return 0;
}

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

B2076 球弹跳高度的计算
#include <iostream>
using namespace std;

int main()
{
    double h;
    cin >> h;
    double sum = 0;
    for (int i = 1; i <= 10; i++)
    {
        sum += h;
        h /= 2;
        sum += h;
    }
    cout << sum - h << endl;
    cout << h << endl;
    
    return 0;
}
#include <iostream>  
using namespace std; 

int main()  
{  
	double h = 0;  
	cin >> h;  
	int i = 1;  
	double total = h;  
	
	do  
	{  
		h /= 2;  
		total += h * 2;  
		i++;  
	} while (i <= 9);  
	
	cout << total << endl;  
	cout << h / 2 << endl;  
	
	return 0;  
}

![[Pasted image 20250214095000.png]]

break和continue语句

break和continue介绍
  • 在循环执⾏的过程中,如果某些状况发⽣的时候,需要提前终⽌循环,这是⾮常常⻅的现象。C++中提供了 break 和 continue 两个关键字,就是应该到循环中的。
  • break 的作⽤是⽤于永久的终⽌循环,只要 break 被执⾏,直接就会跳出循环,继续往后执⾏。
  • continue 的作⽤是跳过本次循环 continue 后边的代码,在 for 循环和 while 循环中有所差异的。
    注意: break 和 continue 在各个循环语句中的使⽤⽅式基本相同,这⾥仅以 while 循环举例。
break举例
#include <iostream>  
using namespace std;  

int main()  
{  
	int i = 1;  
	while (i <= 10)  
	{  
		if (i == 5)  
		{
			break; //当i等于5后,就执⾏break,循环就终⽌了  
		}  
		cout << i << " ";  
		i = i + 1;  
	}  
	
	return 0;  
}

![[Pasted image 20250214095607.png]]

打印了1,2,3,4后,当i等于5的时候,循环正 break 的地⽅终⽌,不再打印,不再循环。
所以 break 的作⽤就是永久的终⽌循环,只要break被执⾏, break外的第⼀层循环就终⽌了。
那以后我们在循环中,想在某种条件下终⽌循环,则可以使⽤ break 来完成我们想要的效果。

continue举例

continue 是继续的意思,在循环中的作⽤就是跳过本次循环中 continue 后边的代码,继续往下 执⾏。

#include <iostream>  
using namespace std; 

int main()  
{  
	int i = 1;  
	while (i <= 10)  
	{  
		if (i == 5)  
			continue;  
		cout << i << " ";  
		i = i + 1;  
	}  
	
	return 0;
}

到这⾥我们就能分析出来, continue 可以帮助我们跳过某⼀次循环 continue 后边的代码,直接到循环的判断部分,进⾏下⼀次循环的判断,如果循环的调整是在 continue 后边的话,可能会造成死循环。

#include <iostream>  
using namespace std; 

int main()  
{  
	int i = 0;  
	for (i = 1; i <= 10; i++)  
	{  
		if (i == 5)  
			continue;  
		cout << i << " ";  
	}  
	return 0;  
}

代码输出

1 2 3 4 6 7 8 9 10

在 for 循环中, continue 跳过本次循环中 continue 后边的代码,接下来执⾏的是 i++ ,在这⾥循环变量得到了调整,就没有造成死循环,所以 continue 在 while 循环和 for 循环中略有差异

练习

解析:
⾸先要了解什么是质数,质数是只能被 1 和它本⾝整除的数字,也就是质数只有2个因⼦,就是 1 和它本⾝。
所以假设 n 有两个质数的因⼦,⾸先就是 n = m1 * m2 , m1 和 m2 是两个质数因⼦。m1 和 m2 是质数的话,就说明没有除了 1 和它本⾝的因⼦,所以 n 的因⼦也只能是 1 、m1 、m2 和 n
所以我们只需要找出 2~n-1 (不包含 1 和 n )之间较⼩的因⼦ m1 ,则 m2 = n / m1 。

#include <iostream>
using namespace std;

int n;

int main()
{
    cin >> n;
    int i = 0;
    for (i = 2; i < n; i++)
    {
        if (n % i == 0)
            break;
    }
    cout << n / i << endl;
    
    return 0;
}
#include <iostream>  
using namespace std;  

int main()  
{  
	int n = 0;  
	cin >> n;  
	int i = 0;  
	
	for (i = 2; i < n; i++)  
	{  
		if (n % i == 0)  
		{  
			cout << n / i << endl;  
			break;  
		}  
	}  
	
	return 0;  
}

http://www.kler.cn/a/549832.html

相关文章:

  • SQL递归技巧
  • 盲注技术获取数据库的表名、列名和数据
  • 【test】fio测试 linux存储性能测试
  • linux笔记:shell中的while、if、for语句
  • 开源项目Perplexica-master
  • 对于简单的HTML、CSS、JavaScript前端,我们可以通过几种方式连接后端
  • Shell脚本和Python的工作路径
  • Linux自学day20-流的输入与输出
  • iPhone 智能进化:Siri 调用 DeepSeek 大模型
  • 二.国产化系统—银河麒麟系统网络无法访问/无法使用/网络受限
  • 高等代数笔记—欧几里得空间、双线性函数
  • JavaScript 中处理 object 对象类型的常见方法
  • 支持列表拖拽嵌套,AI流式输出的多模态文档编辑器flowmix/docx: 全面升级
  • 《图解设计模式》笔记(十)用类来表现
  • 从2025年起:数字化建站PHP 8.1应成为建站开发的基准线
  • 解锁网络安全:穿越数字世界的防护密码
  • GPU(Graphics Processing Unit)详解
  • 图论- 经典最小生成树算法
  • 用xml配置spring, bean标签有哪些属性?
  • 深度解析HTTP/HTTPS协议:从原理到实践