2024年CSP-J认证 CCF信息学奥赛C++ 中小学初级组 第一轮真题-完善程序题解析

news2024/11/18 18:40:12

2024CCF认证第一轮(CSP-J)真题

三、完善程序题

第一题 判断平方数

 问题:给定一个正整数 n,判断这个数 是不是完全平方数,即存在一个正整数 x 使得 x 的平方等于 n 试补全程序

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

bool isSquare(int num){
	int i = (1);
	int bound = (2);
	for(;i<=bound;++i){
		if( (3) ){
			return (4);
		}
	}
	return (5);
}
int main(){
	int n;
	cin>>n;
	if(isSquare(n)){
		cout<<n<<" is a Square number"<<endl;
	}else{
		cout<<n<<" is not a Square number"<<endl;
	}
}

程序分析:此程序的主要思路是,首先定义一个名为isSquare的函数,该函数接受一个整数作为参数,并返回一个布尔值。函数内部使用循环从1开始逐个检查每个数字,直到数字的平方等于给定的整数或超过给定整数的平方根。如果找到平方等于给定整数的数字,函数返回true,否则返回false。 在主函数main中,首先读取一个整数作为输入,然后调用isSquare函数判断该整数是否为完全平方数。如果是,输出该整数是一个完全平方数;如果不是,输出该整数不是一个完全平方数。

单选题

①处应该填

A. 1
B. 2
C. 3
D. 4

答案:A

答案分析:从程序分析中可以得知此处应该是从1开始,答案A

②处应该填

A. (int) floor(sqrt(num)-1)
B. (int) floor(sqrt(num))
C. floor(sqrt(num/2))-1
D. floor(sqrt(num/2))

答案:B

答案分析:从程序分析中可以得知此处应该是自变量的结束条件上限,也就是num的开平方并向下取整,答案B

③处应该填

A. num=2*i
B. num==2*i
C. num=i*i
D. num==i*i

答案:D

答案分析:从程序分析中可以得知此处应该是要判断数字是否是平方数,首先排除A和C,他们是赋值运算;然后应为是要判断平方数,所以答案D

④处应该填

A. num=2*i
B. num==2*i
C. true
D. false

答案:C

答案分析:从程序分析中可以得知此处应该是满足条件要返回true,答案C

⑤处应该填

A. num=i*i
B. num==2*i
C. true
D. false

答案:D

答案分析:从程序分析中可以得知此处应该是不满足条件要返回false,答案D

第二题 汉诺塔问题

给定三根柱子,分别标记为 A、B 和 C。初始状态下,柱子 A 上有若干个 圆盘,这些圆盘从上到下按从小到大的顺序排列。任务是将这些圆盘全部移到柱子 C 上,且 必须保持原有顺序不变。在移动过程中,需要遵守以不规则:

  1. 只能从一根柱子的顶部取出圆盘,并将其放入另一根柱子的顶部。
  2. 每次只能移动一个圆盘
  3. 小圆盘必须始终在大圆盘之上。
#include <bits/stdc++.h>
using namespace std;

void move(char src, char tgt) {
	cout << "从柱子" << src << "挪到柱子上" << tgt << endl;
}
void dfs(int i, char src, char tmp, char tgt) {
	if(i == (1) ) {
		move( (2) );
		return;
	}
	dfs(i-1, (3) );
	move(src, tgt);
	dfs( (5) , (4) );
}

int main() {
	int n;
	cin >> n;
	dfs(n, 'A', 'B', 'C');
}

程序分析:此程序利用深搜DFS实现汉诺塔,

  1. 首先,定义了两个函数: void move(char src, char tgt):用于输出移动的步骤,将一个盘子从源柱子(src)移动到目标柱子(tgt)。
  2. void dfs(int i, char src, char tmp, char tgt):用于解决汉诺塔问题的递归函数。参数i表示需要移动的盘子数目,src表示源柱子,tmp表示临时柱子,tgt表示目标柱子。
  3. 在主函数main()中,首先读取需要移动的盘子数目n,并调用dfs(n, 'A', 'B', 'C')来解决汉诺塔问题。
  4. dfs函数的实现: 首先,判断如果只有一个盘子需要移动(i==1),则直接调用move函数将盘子从src移动到tgt。
  5. 否则,递归调用dfs函数: 第一步,将i-1个盘子从src借助tgt柱子移动到tmp,此时的参数为dfs(i-1, src, tgt, tmp)。
  6. 第二步,将最底下的第i个盘子从src移动到tgt,此时调用move(src, tgt)。
  7. 第三步,将i-1个盘子从tmp借助src柱子移动到tgt,此时的参数为dfs(i-1, tmp, src, tgt)。
  8. 整个过程可以看作是将i个盘子从src移动到tgt的三个步骤。 递归的结束条件是i==1,即只有一个盘子需要移动,此时直接调用move函数移动盘子。 最终,程序会输出将盘子从源柱子挪到目标柱子的每一步操作。

单选题

①处应该填

A. 0
B. 1
C. 2
D. 3

答案:B

答案分析:从程序分析中可以得知此处应该是剩最后一个盘子,答案B

②处应该填

A. src,tmp
B. src,tgt
C. tmp,tgt
D. tgt,tmp

答案:D

答案分析:从程序分析中可以得知此处应该是最后一个盘子直接从源柱子移动到目标柱子,答案D

③处应该填

A. src,tmp,tgt
B. src, tgt, tmp
C. tgt, tmp, src
D. tgt, src, tmp

答案:B

答案分析:从程序分析中可以得知此处应该是从源柱子借助目标柱子移动到临时柱子,答案B

④处应该填

A. src,tmp,tgt
B. tmp, src, tgt
C. src, tgt, tmp
D. tgt, src, tmp

答案:B

答案分析:从程序分析中可以得知此处应该是将之前在临时柱子上的盘子借助源柱子移动到目标柱子,答案B

⑤处应该填

A. 0
B. 1
C. i-1
D. i

答案:C

答案分析:从程序分析中可以得知此处应该是之前i-1个柱子需要先移到临时柱子上,所以答案C

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LabVIEW提高开发效率技巧----错误处理机制

在LabVIEW开发中&#xff0c;错误处理机制至关重要&#xff0c;它不仅有助于提升程序的稳定性&#xff0c;还可以简化调试过程。错误线&#xff08;Error Wire&#xff09;是这一机制的核心工具&#xff0c;能够在各个子VI和模块之间传递错误信息。 1. 统一错误处理 在程序的各…

文心智能体AI大师工坊体验记

文心智能体AI大师工坊体验记 首先来说说什么是智能体&#xff0c;智能体&#xff08;Agent&#xff09;就是指能够感知环境并采取行动以实现特定目标的代理体。它可以是软件、硬件或一个系统&#xff0c;具备自主性、适应性和交互能力。智能体通过感知环境中的变化&#xff08;…

Linux之实战命令13:fuser应用实例(四十七)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

微信小程序导出word和Excel文件

在微信小程序中&#xff0c;实现Excel或Word文件的生成与下载功能通常涉及后端与前端的紧密协作。后端服务负责根据业务需求处理数据&#xff0c;将其转换为Excel或Word格式&#xff0c;并以文件流的形式返回。前端微信小程序则通过发送请求到后端获取这个文件流&#xff0c;接…

17121 求二叉树各种节点数

### 思路 1. 使用先序遍历的方式构造二叉树。 2. 使用递归函数 CreateBiTree 来构造二叉树。 3. 使用递归函数 CountNodes 来统计度为2、度为1和度为0的节点数。 ### 伪代码 1. 定义二叉树节点结构 BiTNode 和二叉树指针 BiTree。 2. 定义 CreateBiTree 函数&#xff1a; -…

java并发之并发关键字

并发关键字 关键字一&#xff1a;volatile 可以这样说&#xff0c;volatile 关键字是 Java 虚拟机提供的轻量级的同步机制。 功能 volatile 有 2 个主要功能&#xff1a; 可见性。一个线程对共享变量的修改&#xff0c;其他线程能够立即得知这个修改。普通变量不能做到这一点&a…

【病毒分析】phobos家族Elbie变种加密器分析报告

1.样本信息 ⽂件名Fast【phobos家族Elbie变种加密器】.exeSHA256e18d3d15a27ffa48cef12de79ac566bfbd96f6f4a1477e5986bc4a100227d8a3MD5f1ecac228e48c7b9758dacfca9356b1fSHA1d9f32b053310a9400fef4d68ae8a8ce70594eaad 2.感染迹象 文件被加密并重命名如下格式1.png.id[8E1…

深入理解 JSX:构建 React 用户界面的利器

目录 一、JSX介绍 1.JSX概念 2.为什么使用JSX,JSX有什么好处? 二、JSX基本语法 1.基本元素: 2.嵌套元素: 3.组件: 4.属性: 5.表达式 6.条件渲染: 7.样式: 三、JSX语法规则 四、JSX编译过程 五、JSX小案例 1.待办事项列表 2.计时器应用 六、总结 一、JSX介…

LLMs之RAG:MemoRAG(利用其记忆模型来实现对整个数据库的全局理解)的简介、安装和使用方法、案例应用之详细攻略

LLMs之RAG&#xff1a;MemoRAG(利用其记忆模型来实现对整个数据库的全局理解)的简介、安装和使用方法、案例应用之详细攻略 目录 MemoRAG的简介 0、更新日志 1、特性 2、路线图 MemoRAG的安装和使用方法 1、安装 安装依赖项 T1、从源码安装 T2、通过pip安装 2、使用方…

可调节基准电压电路设计

1 简介 该电路组合使用了一个放大器&#xff0c;可使基准电压电路在输入电压负值至正的输入电压之间的范围内进行调节&#xff0c;且可增加增益以提高最大负基准电压电平。 2 设计目标 2.1 输入 2.2 输出 ​​​ 2.3 电源 3 电路设计 根据设计目标&#xff0c;最终设计的电…

综合实验1 利用OpenCV统计物体数量

一、实验简介 传统的计数方法常依赖于人眼目视计数&#xff0c;不仅计数效率低&#xff0c;且容易计数错误。通常现实中的对象不会完美地分开&#xff0c;需要通过进一步的图像处理将对象分开并计数。本实验巩固对OpenCV的基础操作的使用&#xff0c;适当的增加OpenCV在图像处…

抽奖拼团卷轴模式系统开发小程序源代码解析

在当今的互联网商业环境中&#xff0c;抽奖、拼团与卷轴模式等创新玩法被广泛应用于小程序开发中&#xff0c;旨在通过多样化的互动方式吸引用户参与&#xff0c;提升用户粘性和平台活跃度。本文将围绕“抽奖拼团卷轴模式系统开发小程序源代码”这一主题&#xff0c;探讨其技术…

【HTTP协议详解-Fiddler抓包工具安装详解-HTTP报文格式-URL详解】

&#x1f308;个人主页&#xff1a;努力学编程’ ⛅个人推荐&#xff1a; c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构&#xff0c;刷题刻不容缓&#xff1a;点击一起刷题 &#x1f319;心灵鸡汤&#xff1a;总有人要赢&#xff0c;为什么不能是我呢 &#x1f52d…

安卓13删除下拉栏中的关机按钮版本2 android13删除下拉栏关机按钮

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 顶部导航栏下拉可以看到,底部这里有个设置按钮,点击可以进入设备的设置页面,这里我们将更改为删除,不同用户通过这个地方进入设置。我们之前写过一个文章也是一样的删除…

基于RealSense D435相机实现手部姿态重定向

基于Intel RealSense D435 相机和 MediaPipe的手部姿态检测&#xff0c;进一步简单实现手部姿态与机器人末端的重定向。 假设已经按照【基于 RealSenseD435i相机实现手部姿态检测】配置好所需的库和环境&#xff0c;并且有一个可以控制的机器人接口。 一、手部姿态重定向介绍 …

18924 二叉树的宽度

### 思路 1. 使用广度优先搜索&#xff08;BFS&#xff09;遍历二叉树&#xff0c;记录每一层的节点数。 2. 使用队列来实现BFS&#xff0c;队列中存储节点和其对应的层数。 3. 在遍历过程中&#xff0c;更新每一层的节点数&#xff0c;并记录最大节点数。 ### 伪代码 1. 定义…

uni-app - - - - -vue3使用i18n配置国际化语言

uni-app - - - - -使用i18n配置国际化语言 1. 安装vue-i18n2. 配置文件2.1 创建如下文件2.2 文件配置2.3 main文件导入i18n 3. 页面内使用3.1 template内直接使用3.2 变量接收使用 1. 安装vue-i18n npm install vue-i18n --save2. 配置文件 2.1 创建如下文件 locales文件夹里…

__has_include 报错

作用&#xff1a; 在C或C的预处理阶段&#xff0c;__has_include 是一个编译器特定的宏&#xff0c;主要用于检查编译器是否能够包含指定的头文件。这个宏在Clang和GCC&#xff08;从某个版本开始&#xff09;等编译器中可用&#xff0c;但在所有编译器中可能并不都支持…

气膜乒乓球馆的前景展望—轻空间

乒乓球作为我国的国球&#xff0c;在全球范围内始终保持领先地位&#xff0c;不仅是国民心中的重要运动&#xff0c;也在国际舞台上占据了举足轻重的地位。气膜乒乓球馆作为一种创新的体育设施&#xff0c;通过结合先进的气膜技术与传统乒乓球运动&#xff0c;为爱好者提供了一…

Heart Animated 写实心脏模型素材带动画医学

心脏动画: 解剖细节逼真的心脏。 此资源包含高质量着色全色HD中的所有纹理,并使用HD中的凹凸贴图(NORMALMASP)。所有Prefab Ready均适用于游戏、应用程序和VR应用程序。预制件已准备好位置和旋转0,0,0。拖动到场景时。 还具有完整的心动周期。 Tris=约81 k。 顶点=约51 k …