NO.18十六届蓝桥杯备战|循环嵌套|乘法表|斐波那契|质数|水仙花数|(C++)

循环嵌套

循环嵌套的使⽤

while , do while , for ,这三种循环往往会嵌套在⼀起才能更好的解决问题,就是我们所说的:循环嵌套。这三种循环都可以任意嵌套使⽤
⽐如
写⼀个代码,打印⼀个乘法⼝诀表

1*1= 1  
1*2= 2 2*2= 4  
1*3= 3 2*3= 6 3*3= 9  
1*4= 4 2*4= 8 3*4=12 4*4=16
1*5= 5 2*5=10 3*5=15 4*5=20 5*5=25  
1*6= 6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36  
1*7= 7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49  
1*8= 8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64  
1*9= 9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
  1. 打印的内容是分为9⾏的,第1⾏打印1项,第2⾏打印2项,第3⾏打印3项,以此类推,第9⾏打印9项。
  2. 每⼀⾏的信息,每⼀项的第⼀个乘数和列号是⼀致的,每⼀项的第⼆个乘数和⾏号是⼀致的,两个乘数的积就是第三个数。
  3. 打印9⾏,我们可以使⽤循环解决,总共循环9次,每次进⼊循环打印⼀⾏,循环变量使⽤ i 来控制, i 从1开始,循环到9
  4. 打印⼀⾏。第 i ⾏是有 i 项组成的,这 i 项的打印也可以写成循环来完成。使⽤循环变量 j , j 从1开始,⼀致循环到 i ,正好循环 i 次,正好打印 i 项。同时每⼀⾏打印完后还要换⾏。
  5. 输出的效果中,i*j的结果如果是2位数,才有右对⻬,不够2位数的情况,使⽤空格补⻬。所以这⾥就得使⽤ %2d 这样的输出格式控制了。
#include <iostream>
using namespace std;
#include <cstdio>

int main()
{
	for (int i = 1; i <= 9; i++)
	{
		for (int j = 1; j <= i; j++)
		{
			printf("%d*%d=%2d ", j, i, j * i);
		}
		cout << endl;
	}

	return 0;
}

练习

乘法表
#include <iostream>
using namespace std;
#include <cstdio>

int main()
{
	for (int i = 1; i <= 9; i++)
	{
		for (int j = 1; j <= i; j++)
		{
			printf("%d*%d=%2d ", j, i, j * i);
		}
		cout << endl;
	}

	return 0;
}

像题⽬要求的这种情况,就得使⽤两层循环嵌套来解决,外层循环负责控制打印⼏⾏,内部循环负责控制每⼀⾏打印⼏项。

包含数字9的数
#include <iostream>
using namespace std;
  
int main()
{
    int cnt = 0;
    for (int i = 1; i <= 2019; i++)
    {
        int n = i;
        while (n)
        {
            if (n % 10 == 9)
            {
                cnt++;
                break;
            }
            n /= 10;
        }
    }
    cout << cnt << endl;
    return 0;
}

在多层嵌套的循环中也可以使⽤break,但是要注意,⼀个break只能跳出⾃⼰所在的循环,⽆法⼀次性跳出所有的循环

B2064 斐波那契数列
#include <iostream>
using namespace std;

int n;

int main()
{
    cin >> n;
    int a = 0;
    while (n--)
    {
        cin >> a;

        int i = 1, j = 1, k = 1;
        while (a >= 3)
        {
            k = i + j;
            i = j;
            j = k;
            a--;
        }
        cout << k << endl;
    }

    return 0;
}
B2079 求出 e 的值
#include <iostream>
#include <cstdio>
using namespace std;

int n;

int main()
{
    cin >> n;
    double e = 1;
    for (int j = 1; j <= n; j++)
    {
        long long x = 1;
        for (int i = 1; i <= j; i++)
        {
            x *= i;
        }
        e += 1.0 / x;
    }
    printf("%.10f", e);
    
    return 0;
}
#include <iostream>  
using namespace std;  
int main()  
{  
	int n = 0;  
	cin >> n;  
	int i = 1;  
	double e = 1;  
	long long fac = 1;  
	
	while (i <= n)  
	{  
		fac *= i;  
		e += 1.0 / fac;  
		i++;  
	}  
	printf("%.10lf\n", e);  
	
	return 0;  
}
三角形
#include <iostream>
using namespace std;

int n;

int main()
{
  cin >> n;
  for (int i = 1; i <= n; i++)
  {
    for (int j = 1; j <= i; j++)
    {
      cout << "*";
    }
    cout << endl;
  }

  return 0;
}
B2083 画矩形

![[Pasted image 20250214192601.png]]

#include <iostream>
using namespace std;

int a, b, f;
char c;

int main()
{
    cin >> a >> b >> c >> f;
    if (f == 0)
    {
        for (int i = 1; i <= a; i++)
        {
            for (int j = 1; j <= b; j++)
            {
                if (i == 1 || i == a || j == 1 || j == b)
                    cout << c;
                else
                    cout << " ";        
            }
            cout << endl;
        }
    }
    else
    {
        for (int i = 1; i <= a; i++)
        {
            for (int j = 1; j <= b; j++)
            {
                cout << c;        
            }
            cout << endl;
        }
    }

    
    return 0;
}

如果我们仔细去琢磨上⾯的代码,会发现 if 和 else 中都是打印图案,区别在于实⼼还是空⼼,实⼼和空⼼的区别⼜在于中间区域,其实边上的⼀圈实⼼和空⼼是⼀样的。所以我们在实现的时候,边上⼀圈打印字符,剩余的区域,做⼀个判断,如果是实⼼打印c,如果是空⼼就打印空格就好了,那么就有了下⾯简化的写法。

#include <iostream>
using namespace std;

int a, b, f;
char c;

int main()
{
    cin >> a >> b >> c >> f;

	for (int i = 1; i <= a; i++)
	{
		for (int j = 1; j <= b; j++)
		{
			if (i == 1 || i == a || j == 1 || j == b)
				cout << c;
			else
			{
				if (f == 0)
					cout << " ";
				else
					cout << c;   
			}
				     
		}
		cout << endl;
	}

    return 0;
}
B2085 第 n 小的质数

解析:

  1. 质数⼜称素数。⼀个⼤于1的⾃然数,除了1和它自身外,不能被其他⾃然数整除的数叫做质数。
  2. 第n⼩的质数,其实就是从⼩到⼤的第n个质数。

伪代码

int i = 2;
int cnt = 0;
while (1)
{
	判断i是否是素数
	试除:拿2~i-1之间的数组去试除i
	如果2-i-1之间有数字能整除i,则i不是素数
	如果2-i-1之间没有任何一个数字能整除i,则i是素数

	如果i是素数,cnt++
	if (cnt == n)
		break;
	i++;
}
循环停止的时候,i就是第n个素数
#include <iostream>
using namespace std;

int n;

int main()
{
    cin >> n;
    int i = 2;
    int cnt = 0;
    while (1)
    {
        int flag = 1;
        for (int j = 2; j <= i-1; j++)
        {
            if (i % j == 0)
            {
                flag = 0;
                break;
            }
        }
        if (flag == 1)
            cnt++;
        if (cnt == n)
            break;
        i++;
    }
    cout << i << endl;
    
    return 0;
}

![[Pasted image 20250214195145.png]]

“Time Limit Exceeded”(TLE,超时)是⼀个在编程竞赛和在线评测平台(如LeetCode、Codeforces、HackerRank等)中常⻅的错误信息。它意味着程序在执⾏过程中超过了给定的最⼤运⾏时间限制,⽽未能在规定时间内得出结果。

如果 n 有⼀个因⼦ a ,那么必然存在另⼀个因⼦ b ,使得 n = a × b 。如果 a 和 b 都⼤于 n \sqrt{ n } n ,那么 a×b 将会⼤于 n ,这与 n=a×b ⽭盾。因此⾄少有⼀个因⼦不会超过的。

#include <iostream>
using namespace std;
#include <cmath>

int n;

int main()
{
    cin >> n;
    int i = 2;
    int cnt = 0;
    while (1)
    {
        int flag = 1;
        for (int j = 2; j <= sqrt(i); j++)
        {
            if (i % j == 0)
            {
                flag = 0;
                break;
            }
        }
        if (flag == 1)
            cnt++;
        if (cnt == n)
            break;
        i++;
    }
    cout << i << endl;
    
    return 0;
}
水仙花数
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
  for (int i = 100; i <= 999; i++)
  {
    int sum = 0;
    int tmp = i;
    while (tmp)
    {
      sum += pow(tmp % 10, 3);
      tmp /= 10;
    }
    if (sum == i)
      cout << i << endl;
  }

  return 0;
}

pow函数,可以⽤计算次⽅的函数, pow(x, y) 返回的是 x 的 y 次⽅的值
pow 函数需要⼀个头⽂件 <cmath>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/969736.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

国际互联网安全日|Web3 世界的安全挑战与防护指南

2025 年 2 月 11 日是全球 “国际互联网安全日”&#xff08;Safer Internet Day&#xff09;。当我们跨越 Web2 迈入 Web3 时代&#xff0c;互联网安全的内涵也在悄然改变。在 Web2 时代&#xff0c;我们主要关注社交媒体隐私泄露、账号密码被盗、网络诈骗等传统安全问题。而在…

DeepseeK自动写作,自动将回答导出文档

在使用 DeepseeK 进行内容生成时&#xff0c;您是否也遇到了答案导出的困扰&#xff1f;无论是内容创作、数据分析还是项目报告&#xff0c;快速、高效地将生成的答案导出是提升工作效率的关键。本文将为您提供简单易行的解决方案&#xff0c;助您轻松实现 DeepseeK 答案的导出…

deep seek

1.介绍:DeepSeek是一款由国内人工智能公司研发的大型语言模型&#xff0c;拥有强大的自然语言处理能力&#xff0c;能够理解并回答问题&#xff0c;还能辅助写代码、整理资料和解决复杂的数学问题。免费开源&#xff0c;媲美ChatGPT 最近最火爆的AI对话程序。 www.deepseek.com…

数据结构中的邻接矩阵

一、概念 邻接矩阵&#xff08;Adjacency Matrix&#xff09;是图&#xff08;Graph&#xff09;的一种表示方法&#xff0c;用于描述图中顶点之间的连接关系。它是一种常见的数据结构&#xff0c;特别适用于表示稠密图&#xff08;即边数接近于顶点数平方的图&#xff09;。 …

微软AutoGen高级功能——Selector Group Chat

介绍 大家好&#xff0c;这次给大家分享的内容是微软AutoGen框架的高级功能Selector Group Chat(选择器群聊)&#xff0c;"选择器群聊"我在给大家分享的这篇博文的代码中有所体现微软AutoGen介绍——Custom Agents创建自己的Agents-CSDN博客&#xff0c;但是并没有详…

web前端开发中vscode常用的快捷键

1.快速复制一行 快捷键&#xff1a; shiftalt 下箭头(上箭头) 或者 ctrlc 然后 ctrlv 2.选定多个相同的单词 快捷键&#xff1a; ctrl d 先双击选定一个单词&#xff0c;然后按下 ctrl d 可以往下依次选择相同的单词。 这样同时修改相同的单词 3.全局替换某单词 当我们一个…

网络安全要学python 、爬虫吗

网络安全其实并不复杂&#xff0c;只是比普通开发岗位要学习的内容多一点。无论是有过编程基础还是零基础的都可以学习的。网络安全目前可就业的岗位从技术上可分为两部分&#xff1a;web安全和二进制逆向安全。web安全是网络安全的入门方向&#xff0c;内容简单&#xff0c;就…

深入解析哈希表:原理、实现与应用

目录 一、哈希表是什么&#xff1f; 1.1 基本概念 1.2 哈希表的工作原理 二、哈希表的使用方法 2.1 C 标准库中的哈希表 示例&#xff1a;std::unordered_map 的基本用法 2.2 自定义哈希函数 示例&#xff1a;自定义哈希函数 三、什么时候使用哈希表&#xff1f; 3.1…

CentOS-Stream 9更换RT实时内核

文章目录 1 安装环境1.1 Centos9原生内核示意 2 下载实时内核3 CentOS更换阿里YUM源3.1 更换源3.2 添加文件内容3.2.1 centos.repo3.2.2 centos-addons.repo 3.3 yum源生效 4 安装epel-release5 安装必要库和软件6 配置内核6.1 更改内核文件权限6.2 使用tar命令解压内核源码文件…

微软AutoGen高级功能——Magentic-One

介绍 大家好&#xff0c;博主又来给大家分享知识了&#xff0c;这次给大家分享的内容是微软AutoGen框架的高级功能Magentic-One。那么它是用来做什么的或它又是什么功能呢&#xff0c;我们直接进入正题。 Magentic-One Magnetic-One是一个通用型多智能体系统&#xff0c;用于…

国产编辑器EverEdit - 极简追梦人的福音:迷你查找

1 迷你查找 1.1 应用场景 某些场景下&#xff0c;用户不希望调出复杂的查找对话框&#xff0c;此时可以使用迷你查找窗口。 1.2 使用方法 选择主菜单查找 -> 迷你查找&#xff0c;或使用快捷键Ctrl Alt F&#xff0c;会在右上角弹出迷你查找窗口&#xff0c;如下图所示…

【第4章:循环神经网络(RNN)与长短时记忆网络(LSTM)— 4.5 序列标注与命名实体识别】

一、引言 嘿,各位技术小伙伴们!今天咱们要来深入聊聊循环神经网络(RNN)和长短时记忆网络(LSTM),这俩在序列标注和命名实体识别领域那可是相当厉害的角色。咱就从最基础的概念开始,一步步揭开它们神秘的面纱,看看它们到底是怎么在实际应用中发挥巨大作用的。 二、序列…

AIGC与AICG的区别解析

目录 一、AIGC&#xff08;人工智能生成内容&#xff09; &#xff08;一&#xff09;定义与内涵 &#xff08;二&#xff09;核心技术与应用场景 &#xff08;三&#xff09;优势与挑战 二、AICG&#xff08;计算机图形学中的人工智能&#xff09; &#xff08;一&#x…

DeepSeek 助力 Vue 开发:打造丝滑的卡片(Card)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

采购订单不计算MRP的供给问题

采购订单不计算MRP的供给问题。MD04的例外信息20 20的例外信息的意思&#xff1a;重复需求&#xff0c;建议取消。也就是不算MRP的供给。 MRP最大运行期间的配置 MRP最大运行期间是指MRP运行时考虑的时间范围。配置路径为&#xff1a; 事务码&#xff1a;OMDX 或通过路径&…

DeepSeek处理自有业务的案例:让AI给你写一份小众编辑器(EverEdit)的语法着色文件

1 DeepSeek处理自有业务的案例&#xff1a;让AI给你写一份小众编辑器(EverEdit)的语法着色文件 1.1 背景 AI能力再强&#xff0c;如果不能在企业的自有业务上产生助益&#xff0c;那基本也是一无是处。将企业的自有业务上传到线上训练&#xff0c;那是脑子进水的做法&#xff…

LeetCode 热题 100_组合总和(58_39_中等_C++)(递归(回溯))

LeetCode 热题 100_组合总和&#xff08;58_39&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;递归&#xff08;回溯&#xff09;&#xff09;&#xff1a; 代码实现代码实现&#xff08;思路一&#xff08…

2024年12月电子学会青少年机器人技术等级考试(五级)理论综合真题

202412 青少年等级考试机器人理论真题五级 一、单选题 第 1 题 ESP32 for Arduino&#xff0c;下列选项中&#xff0c;具有根据电容量的变化&#xff0c;获取返回值的函数是&#xff1f;&#xff08; &#xff09; A&#xff1a;touchRead() B&#xff1a;digitalRead() C&…

京东获得JD商品详情 API 返回值说明||京东API接口

item_get-获得JD商品详情 .jd.item_get 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_sh…

Halcon相机标定

1&#xff0c;前言。 相机的成像过程实质上是坐标系的转换。首先空间中的点由“世界坐标系”转换到“相机坐标系”&#xff0c;然后再将其投影到成像平面&#xff08;图像物理坐标系&#xff09;&#xff0c;最后再将成像的平面上的数据转换为图像像素坐标系。但是由于透镜的制…